Mam następujący kod programu. Moje pytanie brzmi: Dlaczego program nigdy nie wchodzi do przerwania, a przynajmniej tak pokazuje VMLab, w którym to symuluję. Czy trzeba jeszcze coś w jakimś rejestrze ustawić. Program ma wchodzić do przerwania w momencie kiedy licznik zrówna się z OCR1A.
Pozdrawiam, Marek
#include<avr/io.h>
#include<avr/interrupt.h>
#include<avr/signal.h>
ISR(TIMER1_COMPA_vect) {
PORTD = 0x00;
}
int main() {
DDRD = 0xFF; // caly port D jako wyjscie
PORTD = 0xFF; // jedynka na porcie D
OCR1A = 0xFF; // zliczaj do 255
TCNT1 = 0x00; // zaczynaj liczyc od 0
TCCR1A = 0x00;
TCCR1B |= _BV(CS10); // preskaler 1024
TCCR1B |= _BV(CS12);
TCCR1B |= _BV(WGM12); // tryb ctc
TIMSK |= _BV(OCIE1A); // wlaczenie przerwan od output compare
sei();
return 0;
while(1==1){
int i=1;
}
}
Pozdrawiam, Marek