Forum: Mikrocontroller und Digitale Elektronik Timer Startwert AVR


von Gabriel Staudinger (Gast)


Lesenswert?

Hallo,

Habe ein Frage zum Überlauf eines Timers.

Wird der Timer beim Überlauf auf 0 gesetzt und zählt dann wieder hoch, 
oder auf den Startwert den man vorher festgelegt hat?.

Wenn man z.B. einen Startwert festlegt dann zählt ja der Timer von 
diesem Wert weg. Wenn der Timer jedoch überläuft springt er dann auf 0 
zurück oder auf den gesetzten Startwert?.


Mfg Gabriel

von Karl H. (kbuchegg)


Lesenswert?

0

FAQ: Timer

wenn du eine bestimmte Anzahl Zählschritte brauchst, dann willst du den 
CTC Modus nehmen. Siehe ebenfalls den verlinkten FAQ Artikel

von ladislaus (Gast)


Lesenswert?

Gabriel Staudinger schrieb:
> Wenn man z.B. einen Startwert festlegt dann zählt ja der Timer von
> diesem Wert weg. Wenn der Timer jedoch überläuft springt er dann auf 0
> zurück oder auf den gesetzten Startwert?.

Er springt auf 0 zurück. Der Startwert wird ja normalerweise in das TCNT 
Register geschrieben, mit dem der Timer hochzählt. Der Startwert geht 
also verloren weil er durch Hochzählen des Timers im TCNT überschrieben 
wird.

Du solltest immer den µC angeben, auf den sich deine Frage bezieht. Ich 
gehe mal davon aus, daß du einem AVR meinst, einen ATmega8A?

von Gabriel Staudinger (Gast)


Lesenswert?

Danke :-)

Nein es geht um einen ATmega 32.

von spess53 (Gast)


Lesenswert?

HI

AVRs unterstützen hardwareseitig keinen Startwert >0. Dafür gibt es aber 
einstellbare Endwerte.

MfG Spess

von c-hater (Gast)


Lesenswert?

Gabriel Staudinger schrieb:

> Habe ein Frage zum Überlauf eines Timers.
>
> Wird der Timer beim Überlauf auf 0 gesetzt und zählt dann wieder hoch,

Das kommt vor, ja. Typisch für Normal-, FastPWM- und CTC-Modus.

> oder auf den Startwert den man vorher festgelegt hat?.

Das passiert niemals und es ist auch völlig logisch, daß das niemals 
passieren kann, weil es schlicht kein Register gibt, in dem der Timer 
sich diese "Vorgabe" merken könnte. Das Zählregister, in das du (in 
99,99% der Fälle unsinnigerweise) deine Vorgabe schreibst, wird ja beim 
Zählen ständig verändert. Der ursprünglich hineingeschriebene Wert ist 
also nach dem ersten Zählschritt bereits unrettbar verloren.

Ein wenig Logik beim Denken, bitte!

Was es aber gibt, ist noch ein anderes Verhalten als Rücksetzen auf 
Null. Nämlich runterzählen vom erreichten End-Zählerstand auf Null. Das 
ist logisch möglich (weil der Endzählerstand im Moment des Überlaufs 
bekannt ist, sogar aus gleich zwei Quellen) und die Sache wird auch 
tatsächlich genutzt, nämlich bei den anderen beiden PWM-Modi 
(PhaseCorrect und Phase&FrequencyCorrect).

von ladislaus (Gast)


Lesenswert?

c-hater schrieb:
> Ein wenig Logik beim Denken, bitte!

> Null. Nämlich runterzählen vom erreichten End-Zählerstand auf Null. Das
> ist logisch möglich (weil der Endzählerstand im Moment des Überlaufs
> bekannt ist, sogar aus gleich zwei Quellen) und die Sache wird auch
> tatsächlich genutzt, nämlich bei den anderen beiden PWM-Modi
> (PhaseCorrect und Phase&FrequencyCorrect).

Da kann man doch nicht von Überlauf sprechen.

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.