Hallo zusammen.
Versuche mich gerade an Timer-Interrupt. uC-Schaltung läuft nicht, kein Blinken.
Warnung vom Compiler;
'TIM1_COMPA' appears to be a misspelled signal handler, missing __vector prefix [-Wmisspelled-isr]
Wo liegt der Fehler?
Code:
#define F_CPU 1000000UL // int.Takt als Macro übernehmen
#include <avr/interrupt.h> // Interrupt einbinden, damit Interrupt funktioniert
ISR(TIM1_COMPA) // Interrupt Service Routine (Seite 48), sobald Vergleichswert OSR1A erreicht wird
{
PORTB ^= (1<<PB0); // LED blinkt
}
int main(void)
{
DDRB |= (1<<PB0); // LED als Ausgang
TCCR1B |= (1<<WGM12) | (1<<CS11); // Timer1 (16bit), CTC-Mode, Prescaler=8
TIMSK1 |= (1<<OCIE1A); // Interrupt für Timer1, Interrupt auslösen sobald Vergleichswert erreicht wird
OCR1A = 62500; // OCRx = (Wunschzeit bis 1 Interrupt * f_CPU/Prescaler) - 1 // 500ms*1 000 000/8=62500 // bei 100ms=12499
sei(); // Interrupt´s werden gestartet und läuft im Hintergrund
while(1)
{
}
}
Lesezeichen