Bir Arduino Uno kullanıyorum ve zaten bulduğum 1 açıklamaya göre dijital pim 2, 3, 4 ve 5'deki kesintilerle çalışacak şekilde ayarladım .
void setup()
kesmeleri ayarlamak için aşağıdaki kodu içerir.
//Endable Interrupts for PCIE2 Arduino Pins (D0-7)
PCICR |= (1<<PCIE2);
//Setup pins 2,3,4,5
PCMSK2 |= (1<<PCINT18);
PCMSK2 |= (1<<PCINT19);
PCMSK2 |= (1<<PCINT20);
PCMSK2 |= (1<<PCINT21);
//Trigger Interrupt on rising edge
MCUCR = (1<<ISC01) | (1<<ISC01);
Ve şimdi, ISR (PCINT2_vect) işlevi her kesmede tetiklenir. Bu bir cazibe gibi çalışır. Sorum şu, hangi pimin tetiklendiğini bulmanın en iyi / en hızlı yolu nedir?
Ben bir şey buldum pimleri 2, 3 kullanım ISR (PCINT2_vect) ya da attachInterrupt mı iyidir: Re? , ama kodu anlamıyorum ve kutunun dışında çalışmıyor. Ama etkileyici görünüyor ...
Çözüm nedir?
[2] http://arduino.cc/forum/index.php/topic,72496.15.html#lastPost
Düzenle:
Şu anda, giriş pimi kaydından pim durumunu okuyorum:
if (PIND & 0b00000100)
Serial.println( "PIN 2" );
if (PIND & 0b00001000)
Serial.println( "PIN 3" );
if (PIND & 0b00010000)
Serial.println( "PIN 4" );
if (PIND & 0b00100000)
Serial.println( "PIN 5" );
Sonunda, pimlerdeki kesintileri saymak istiyorum. Ancak, iki kez sayılmadığından nasıl emin olabilirim?