Hallo,
ich habe ein Problem bei der Verwendung des Timer1 von einem Atmega8515.
Er soll im CTC-Mode betrieben werden.
Hier die Initialisierung:
1 | void Timer_Init(void)
|
2 | {
|
3 | // Timer 1 konfigurieren
|
4 | TCCR1A |= (1<<WGM12) | (1<<CS12) | (1<<CS10); // CTC Mode, Prescaler 1024
|
5 | // ((8000000MHz / 1024) / 50Hz ) = 156
|
6 | OCR1A = 156-1;
|
7 |
|
8 | // Compare Interrupt erlauben
|
9 | TIMSK |= (1<<OCIE1A);
|
10 |
|
11 | sei();
|
12 | }
|
Und hier noch die Interruptroutine:
1 | ISR(TIMER1_COMPA_vect)
|
2 | {
|
3 | PORTD ^= ( 1 << PD7 );
|
4 | }
|
Die LED wird nach dem Start ein Mal eingeschaltet, aber nicht mehr
ausgeschaltet.
In der Main habe ich eine While-Endlosschleife.
Am PD7 ist eine LED angeschlossen, die definitiv funktioniert.
Kann mir jemand helfen?
Ich habe schon sehr viele unterschiedliche Sourcecodes im Netz mit
meinem Code verglichen. Aber alleine habe ich noch keine Lösung
gefunden.
Danke!
Edit: Anscheinend kommt es in meinem Programm zu einem Reset. Ich
versuche mal herauszufinden, was den auslöst.