Forum: Mikrocontroller und Digitale Elektronik Timer Probleme


von Stephan Schwarz (Gast)


Angehängte Dateien:

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).

von crazy horse (Gast)


Lesenswert?

Hm, ich sehe keine ISR für den OCR-Interrupt, obwohl freigegeben.
Ausserdem gehören keine delays in eine ISR, das lässt sich eigentlich
immer umgehen.

von Stephan Schwarz (Gast)


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)

von crazy horse (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.