frojk schrieb:
> Hallo, ich habe eine Einstiegsfrage zu Timern bei Mikrocontrollern.
Verschiedene µC haben sehr verschiedene Timer. Typischerweise hat ein µC
sogar mehrere Timer, die sich unterschiedlich verhalten. Es wäre
sinnvoll gewesen, wenn du spezifischer gefragt hättest.
> Ist es denn möglich, den Überlauf (Overflow) bei Timern zu verändern?
Dieser Frage kann ich keinen Sinn entnehmen.
> Dabei hängt der Überlauf immer von der Wortbreite des Zählerregisters
> ab.
Jein.
Bedingt durch die endliche Breite wird jeder Zähler früher oder später
überlaufen. Aber die meisten Zähler kann man so konfigurieren, daß sie
auch bei einem anderen Zählerstand überlaufen. Wobei "überlaufen" hier
eigentlich nicht das richtige Wort ist. Korrekter springen sie entweder
zum Startwert zurück oder ändern ihre Zählrichtung.
> Nun gibt es aber doch z.B. Timer-Interrupts, die bei einem
> benutzerdefinierten Zählschritt des Timers auslösen. Wird da der
> Überlauf irgendwie modifiziert
Der allgemein übliche Begriff für den (hardwaremäßigen) Vergleich des
Zählerstands mit einem vorher festgelegten Wert ist compare match. Und
der Interrupt dazu ist der compare match interrupt.
Mit dem Überlauf des Zählers hat das an sich erst mal nichts zu tun.
Allerdings kann man viele Zähler so konfigurieren, daß sie eben dieses
compare match Ereignis dazu verwenden, wieder zum Startwert (typisch: 0)
zurück zu springen. Der übliche Begriff dafür ist CTC Modus, wobei CTC
für Clear Timer on Compare match steht.
> Und wie sieht die manuelle Rücksetzung des Zählers
> aus, wer oder was ist dann für die vorläufige Löschung der Bits im
> Zählregister zuständig?
Das Zähler-Register kann in den meisten Fällen vom Programm direkt
geschrieben werden. Allerdings gibt es Feinheiten zu beachten. Wenn das
Register breiter ist als die Wortbreite des Prozessors, muß es in
mehreren Zugriffen beschrieben werden. Meist müssen die dann in einer
bestimmten Reihenfolge stattfinden und erst der letzte Schreibzugriff
setzt alle Bits des Zählerregisters auf einmal.
Wieder andere Timer haben zwar ein Register für den neuen Wert, das man
beschreiben kann, übernehmen den Wert aber erst mit dem nächsten
Zählereignis in den eigentlichen Zähler.
Das Datenblatt deines µC erklärt alle Details zu den Timern. Lies es!