Pin Change Interrupt Nedir?
Pin Change Interrupt Nasıl Ayarlanır?
Pin Change Interrupt’ları kullanmak için üç temel adım izlenir:
- İlk olarak Portu seçeriz portu ise:
PCICR
(Pin Change Interrupt Control Register) register’ı ile ayarlarız.

void setup() {
PCICR = B00000001;
/* PCIE0 bitini 1 yaparak PORT B'yi seçtik */
}
- Seçtiğimiz Portta hangi pinlerin kullanacağımızı ise:
PCMSK
(Pin Change Mask) register’ı ile ayarlarız.
void setup() {
PCMSK0 = B00000101;
/*
0 Olan yere hangi Portu kullanıyorsak onun bit sırasını yazarız.
Ben Port B'den 8 ve 10. Pinleri seçtim.
Her bit bir pini temsil eder:
Bit 0 = Pin 8, Bit 1 = Pin 9, Bit 2 = Pin 10,
*/
}




- Kesme Nerde Gerçekleşeceğini Belirleme: Kesme olduğunda çalışacak ISR (Interrupt Service Routine) yazılır.
/* Port B */
ISR(PCINT0_vect) {
/* Kesme Burada Olur */
}
/* Port C */
ISR(PCINT1_vect) {
/* Kesme Burada Olur */
}
/* Port D */
ISR(PCINT2_vect) {
/* Kesme Burada Olur */
}
Örnek Kullanım
/* Port B ile Port D'yi aktif yaptım */
/* Port B'den 8. Pin ile Led Yakıcam, Port D'den 7. Pin ile Led'i Söndüreceğim */
void setup(){
PCICR = B00000101;
PCMSK0 = B00000001;
PCMSK2 = B10000000;
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(13, OUTPUT);
}
void loop()
{
}
ISR(PCINT0_vect){
if(digitalRead(8) == 0){
digitalWrite(13,1);
}
}
ISR(PCINT2_vect){
if(digitalRead(7) == 0){
digitalWrite(13,0);
}
}
Bağlantı Şeması
İlgili Konular: