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
0 FAQ: Timer wenn du eine bestimmte Anzahl Zählschritte brauchst, dann willst du den CTC Modus nehmen. Siehe ebenfalls den verlinkten FAQ Artikel
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?
HI AVRs unterstützen hardwareseitig keinen Startwert >0. Dafür gibt es aber einstellbare Endwerte. MfG Spess
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).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.