私はArduino Unoを使用しており、私が見つけた説明1に従って、デジタルピン2、3、4、および5の割り込みで動作するようにすでに設定しています。
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)関数はすべての割り込みでトリガーされます。それは魅力のように機能します。私の質問は、どのピンがトリガーされたかを知るための最良/最速の方法は何ですか?
私はで何かを発見した日時:ピン2、3にISR(PCINT2_vect)またはattachInterruptを使用することをお勧めしますか?、しかし私はコードを理解しておらず、そのままでは機能しません。しかし、それは印象的に見えます...
解決策は何ですか?
[2] 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" );
最後に、ピンの割り込みをカウントしたいと思います。しかし、2回カウントされないことをどのように保証できますか?
エレクトロニクスでは、おそらくより多くの人々がArduinosやその他の電子機器をいじっています。
—
Earlz '28
あなたが思うなら、質問はあそこにあるはずです、それを報告してください。ログインの問題を解決しました。
—
madc
@Earlz:これはプログラミングの質問なので、トピックについてです。趣味のプラットフォーム用であるという事実は無関係です。参考のために、stackoverflowに関する他の何百ものarduinoの質問を参照してください。
—
BlueRaja-Danny Pflughoeft、2011