Timer Probleme

Gast #130638
Lesenswert?
• ▲
▼
Hallo  ich muss mal eine neues posting aufmachen, weil sich das Topic
doch geändert hat.

Ich betreibe 2 Timer im Atmega8 parallel.
Timer0 um die Abgelaufene Zeit des Programmes zu ermitteln.
Timer1 um ein Rechteck zu generieren. Dieser Timer läuft im
CTC-Mode. Also toggelt er, wenn ein Compare Match vorliegt am OC1A
Pin.
In Main berechnet eine Formel, in Abhängigkeit der aktuellen
Programmlaufzeit, einen Wert, den ich in das OCR1A Register schreibe.
Dadurch soll sich die Impulsbreite des Signals an OC1A ändern.
Soviel zur Theorie!
1. Ich bekomme keinen Rückwert aus der Overflow0 ISR
2. Main wird im Ablauf extrem eingeschränkt. Ich mach da zwar nur eine
LED an und aus, aber das Timming stimmt da nicht mehr. Das ist zwar
nicht wichtig, aber doch seltsam für mich.

Sobald ich den Timer 1 deaktiviere funktioniert auch die Komunikation
mir der Overflow0 ISR und ich kann den dort errechenten Wert auch lesen
und nutzen. Ausserdem funktioniert dann der Ablauf in Main auch wieder.
(Dealyzeit stimmen, was sonst nicht der Fall ist).
Angehängte Dateien:
Gast #130640
Lesenswert?
• ▲
▼
"Hm, ich sehe keine ISR für den OCR-Interrupt, obwohl freigegeben."

du redest doch hiervon, oder?
TIMSK=1<<OCIE1A;
Hab gedacht ich muss den OCIE1A freischalten, damit der Togglemode am
OC1A pin funktioniert?

Aber dafür reicht wohl auch
TCCR1B=  (1<<WGM12|1<<CS11)
Gast #130641
Lesenswert?
• ▲
▼
nö, musste nicht.
Wenn du den Int allerdings freigibst, sollte auch eine ISR dafür da
sein. Mit Glück setzt dein Compiler ein reti an die entsprechende
Stelle, drauf verlassen würde ich mich nicht, zumindest mal ins Listing
schauen.
Das Schreiben ins OCR-Register solltest du allerdings mit dem
Timerstand synchronisieren, hatte ich dir schon geschrieben. Ideal
dafür ist der OCR-Int.

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