मैं एक Arduino Uno का उपयोग करता हूं और पहले से ही डिजिटल 1, 2, 3, 4 और 5 पर इंटरप्ट के साथ काम करने के लिए इसे सेट करता हूं 1 मुझे मिले स्पष्टीकरण के अनुसार ।
void setup()
इंटरप्ट को सेटअप करने के लिए निम्न कोड होता है।
//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);
और अब, ISR (PCINT2_vect) फ़ंक्शन को हर बाधा पर चालू किया जाता है। जो आकर्षण की तरह काम करता है। मेरा सवाल है, यह पता लगाने का सबसे अच्छा / सबसे तेज़ तरीका क्या है कि किस पिन को ट्रिगर किया गया था?
मुझे पुन: कुछ मिला : ISR (PCINT2_vect) का उपयोग करना बेहतर है या पिंस 2, 3 पर संलग्न करें? , लेकिन मुझे कोड समझ में नहीं आता है और यह बॉक्स से बाहर काम नहीं करता है। लेकिन यह प्रभावशाली दिखता है ...
उपाय क्या है?
[२] http://arduino.cc/forum/index.php/topic,72496.15.html#lastPost
संपादित करें:
फिलहाल, मैं पिन स्टेट को इनपुट पिन रजिस्टर से पढ़ रहा हूं:
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" );
अंत में, मैं पिंस पर इंटरप्ट को गिनना चाहता हूं। लेकिन मैं कैसे आश्वासन दे सकता हूं, कि दो बार कोई गिनती नहीं है?