2014-11-08 181 views
1

我開始使用Uno,並且我能夠從我在網上找到的旋轉庫中獲得中斷,但是當我將項目移動到Mega並嘗試將其更改爲不同的引腳時它停止。我花了幾個小時試圖從在線資源中找出超級中斷引腳,並且找不到足夠的資源來充分解釋超級中斷引腳。Arduino Mega 2560中斷帶旋轉編碼器

我想使用像這樣的中斷。

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

ISR(PCINT0_vect){ 
//stuff 
} 

如果有人有一個首選的方法,我用中斷的針腳並不重要。我只需要它的工作。

回答

0

Arduino中斷描述爲here。它比您提供的示例代碼更易於使用。

//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();

重新啓用它們