기본적으로 나는 ISR (인터럽트 서브 루틴)을 설정하여 조명을 켜고 있지만 ISR이 실행되지 않는 것 같습니다. 내가 뭔가 잘못하고 있지만 아무것도 찾을 수 없다면 많이 볼 마이크로 컨트롤러 데이터 시트를 통해 봤어요.ISR for 타이머 비교 일치가 실행되지 않습니다.
Heres my code.
#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에서 인터럽트 플래그를 지우시겠습니까? –
인터럽트를 해제 할 때 인터럽트를 폴링 할 때 작동합니다 (인터럽트가 아닌 다른 모든 작업, 플래그 지우기 등)? –