Also im Grunde versuche ich ein ISR (Interrupt-Unterprogramm), um einfach ein Licht an, aber die ISR scheint nicht zu laufen. Ich habe mir das Datenblatt des Mikrocontrollers angesehen, um zu sehen, ob ich etwas falsch mache, aber ich konnte nichts finden.ISR für Timer Compare Match läuft nicht
Heres mein 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;
}
Löschen Sie das Interrupt-Flag in Ihrem ISR? –
funktioniert es, wenn Sie es mit Unterbrechungen abfragen (nicht den Interrupt, sondern alles andere, Löschen der Flags usw.)? –