所以基本上我試圖建立一個ISR(中斷子程序)只是打開燈,但ISR似乎並沒有運行。我仔細查看了微控制器數據表,看看我是否做錯了什麼,但找不到任何東西。ISR的定時器比較匹配不運行
繼承人我的代碼。
#include <asf.h>
int main (void) {
DDRD = 0b10000000;
cli(); // turn off global interrupts
//Timer
TCCR2A |=_BV(WGM21); //CTC mode
TCCR2B |=_BV(CS22)|_BV(CS21); //clk pre-scale 1/256
OCR2A = 0x7d; //125clk cycles = 2ms
TIMSK2 |=_BV(OCIE2A); //enable interrupt on compare matchA
TIFR2 |= _BV(OCF2A); //clear flag
TCNT2 = 0x00; // reset counter
sei(); // enable global interrupts
}
ISR(TIMER2_COMPA_vect) {
PORTD = 0b10000000;
}
你是否清除ISR中的中斷標誌? –
當你打斷它的中斷(不是中斷,而是其他所有事情,清除標誌等)時,它是否工作? –