Timer1 mit ICR1 als Top im Fast-PWM-Modus und kein Overflow-Interrupt

Gast #4757200
Lesenswert?

Hallo,

habe mir schon fast alle Haare ausgerauft. Irgendwie will es nicht.
Bislang hatte ich den Timer1 im CTC-Modus (4) mit 
Compare-Match-Interrupt. Das hat soweit ganz gut funktioniert.

Jetzt dachte ich, wäre doch schick, wenn ich den Timer auch noch als 
PWM-Quelle nutzen könnte und habe deshalb auf Modus 14 umgestellt.
Laut Datenblatt (ich verwende einen mega16) kommt der Überlauf-Interrupt 
bei Erreichen von Top, also ICR1.
Soweit die Theorie.
1
ICR1 = 16000;
2
TCCR1A |= 1 << WGM11;
3
TCCR1B |= 1 << WGM12 | 1 << WGM13
4
        | 1 << CS10; 
5
TIMSK |= 1 << TOIE1;
6
sei();

Den Interrupt habe ich von TIMER1_COMPA_vect auf TIMER1_OVR_vect 
umbenannt.
Leider bekomme ich überhaupt keinen Interrupt.

Was habe ich übersehen?
Gast #4757796
Lesenswert?

@Spess
Sorry, aber Deine Antwort war Quatsch. Siehe Bild im Anhang

@S.Landolt
Danke für den Tip. Hat das Problem zwar noch nicht gelöst, mich aber 
zumindest weiter gebracht. Hatte noch ein weiteres Problem rund um den 
Interrupt.

Jetzt taucht der zumindest in der Interrupt-Tabelle in der lss-Datei 
auf.

Muss jetzt nur noch rausfinden, warum der Professor aus der 
Endlosschleife raus kommt und wieder von vorne anfängt. Verrückterweise 
wird der Sekundenzähler nicht zurückgesetzt, sodass ich zwischen durch 
sehen kann, dass die Sekunden gezählt werden :O
Angehängte Dateien:
Gast #4757809
Lesenswert?

Haarlos schrieb:
> Muss jetzt nur noch rausfinden, warum der Professor aus der
> Endlosschleife raus kommt und wieder von vorne anfängt. Verrückterweise
> wird der Sekundenzähler nicht zurückgesetzt, sodass ich zwischen durch
> sehen kann, dass die Sekunden gezählt werden :O

Kann man gut nachvollziehen ohne den Code zu sehen ...
Gast #4757960
Lesenswert?

Hallo Ihr beiden,

Ihr habt beide recht :)

... aber ich bin wieder etwas weiter. Der Interrupt wird aufgerufen und 
ich weiß, warum der Professor im Dreieck hüpfte. Typischer Fall von 
denkste ;)
Ein Funktionszeiger wurde vor der Initialisierung aufgerufen. Das muss 
ja in die Hose gehen.

Dank Euch für Eure Aufmerksamkeit und Unterstützung!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren