1

Uno の使用を開始し、オンラインで見つけたロータリー ライブラリから割り込みを機能させることができましたが、プロジェクトを Mega に移動して別のピンに変更しようとすると、停止しました。オンライン ソースからメガの割り込みピンを把握するために数時間を費やしましたが、メガ割り込みピンを十分に説明するための適切なリソースが見つかりません。

私はそのように割り込みを使用しようとしています。

  Rotary r = Rotary(10,11);
void setup(){
  PCICR |= (1 << PCIE0);
  PCMSK0 |= (1 << PCINT4) | (1 << PCINT5);
  sei();
  }

ISR(PCINT0_vect){
//stuff
}

誰かが優先する方法を持っている場合、割り込みにどのピンを使用しているかは問題ではありません。私はそれが機能する必要があります。

4

1 に答える 1

0

Arduino の割り込みについては、こちらで説明しています。あなたが提供するサンプルコードよりも使いやすいです。

//Mega2560
// external interrupt int.0    int.1    int.2   int.3   int.4   int.5            
// pin                  2         3      21      20      19      18



void setup()
{
  // interrupt # 0, pin 2
  attachInterrupt(0, myISR, CHANGE); // Also LOW, RISING, FALLING
}

void loop()
{

}

void myISR() // must return void and take no arguments
{
  // stuff
}

sei();で割り込みを有効にする必要はありませattachInterrupt()ん。ただし、割り込みを無効にしcli();て再度有効にすることができますsei();

于 2014-11-08T05:08:26.870 に答える