Saya menggunakan Arduino Uno dan sudah mengaturnya untuk bekerja dengan interupsi pada pin digital 2, 3, 4 dan 5 menurut penjelasan 1 saya menemukan.
void setup()
berisi kode berikut untuk mengatur interupsi.
//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);
Dan sekarang, fungsi ISR (PCINT2_vect) dipicu pada setiap interupsi. Itu bekerja seperti pesona. Pertanyaan saya adalah, apa cara terbaik / tercepat untuk mengetahuinya, pin mana yang dipicu?
Saya menemukan sesuatu di Re: Apakah lebih baik menggunakan ISR (PCINT2_vect) atau attachInterrupt pada pin 2, 3? , tapi saya tidak mengerti kode dan tidak bekerja di luar kotak. Tapi itu terlihat mengesankan ...
Apa solusinya?
[2] http://arduino.cc/forum/index.php/topic,72496.15.html#lastPost
Edit:
Saat ini, saya membaca status pin dari dari pin input register:
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" );
Pada akhirnya, saya ingin menghitung interupsi pada pin. Tapi bagaimana saya bisa meyakinkan, bahwa tidak ada yang dihitung dua kali?