Forum: Mikrocontroller und Digitale Elektronik 16 bit timer dekrementieren


von Peter H. (peter_hi)


Lesenswert?

Hallo,

Ich möchte eine Zeitspanne mit dem 16 bit Timer1 eines Atmega16 messen. 
Um den anschließenden Berechnungsvorgang effizienter zu machen würde ich 
die Timer Counter Register mit 0xFFFF laden und anschließend 
dekrementieren lassen, bis bei 0x0000 ein timeroverflow, interrupt oä 
kommt.
Ich finde leider keine Controlregister wo man so eine Funktion 
aktivieren könnte.
Kann mir jemand einen Tipp oder Hinweis geben, ob das Funktionieren 
würde?

Danke!  Peter

von Falk B. (falk)


Lesenswert?

@ Peter Hintringer (peter_hi)

>Ich möchte eine Zeitspanne mit dem 16 bit Timer1 eines Atmega16 messen.

Dann tu das.

>Um den anschließenden Berechnungsvorgang effizienter zu machen würde ich
>die Timer Counter Register mit 0xFFFF laden und anschließend
>dekrementieren lassen,

Nicht sinnvoll. Der Timer im AVR zählt nur vorwärts, und das reicht 
auch. Nicht mal das Laden von einem Startwert ist nötig. Einfach den 
Zähler beim Start und Ende auslesen, die Differenz bilden, fertig. Was 
will man da optimieren?

von Stefanus (Gast)


Lesenswert?

Vermutlich denkt er, dass die Subtraktion aufwändiger sei, als die 
Register zu laden. Was allerdings nicht wirklich der Fall ist. Der 
Unterschied spielt sich wenn überhaupt in Größenordnung einzelner 
Takzyklen ab.

von Peter H. (peter_hi)


Lesenswert?

Ich messe mit der Zeitspanne eine Geschwindigkeit eines Gegenstandes. Um 
die Geschwindigkeit zu berechnen, lasse ich momentan den Timer 
hochzählen und dividiere den Wert anschließend durch die Taktfrequenz. 
Dabei kommt die Einheit s/m raus. Mit dem Kehrwert berechne ich dann die 
Einheit m/s, die ich haben will.
Wenn ich den Timer mit 0xFFFF lade, runterzählen lasse und die 
Taktfrequenz durch den Wert dividiere hab ich gleich m/s als Einheit.

@falk: Die Idee mit der Differenz ist gut! Das mach ich so.

Vielen Dank!

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.