Unterschied bei Timer mit Vorteiler und Ohne

Gast #2670346
Lesenswert?

Guten Tag,

Ich beschäftige mich gerade mit Interrupts ein bisschen und bin gerade 
am überlegen, wie der Mikrocontroller eigentlich einen Zähler hochzählt 
und ob es bei folgenden zwei Szenarien einen Unterschied gibt.

1.
Ich starte TIMER0, der OHNE Prescaler bis 800 zählt und dann einen 
Interrupt auslöst

oder

2.
Ich starte TIMER0 der mit Prescaler 8 bis 100 zählt und den Interrupt 
auslöst.


Da der Mikrocontroller das TIMER-Register unabhängig von den sonstigen 
Aufgaben hochzählt, dürfte es doch keinen Unterschied geben, oder?

Das einzige, was eine "Verzögerung" bringen könnte, wäre der interne 
Vergleich des aktuellen Zählerstands mit dem Compare-Register. Bei 1. 
müsste ich den 800 mal vergleichen, bei 2. nur 100 mal. Aber ich gehe 
davon aus, dass das auch intern passiert. (Ist nur ein Gefühl!)

Weiß da jemand genaueres?

Grüße

PS: Das sind theorethische Überlegungen. Da steckt kein konkreter Code 
hinter.
#2670405
Lesenswert?

Unterschiede schrieb:

> Das einzige, was eine "Verzögerung" bringen könnte, wäre der interne
> Vergleich des aktuellen Zählerstands mit dem Compare-Register. Bei 1.
> müsste ich den 800 mal vergleichen, bei 2. nur 100 mal. Aber ich gehe
> davon aus, dass das auch intern passiert. (Ist nur ein Gefühl!)

Ist schon richtig.

Da dieser Vergleich aber von Hardware nebenher gemacht wird, merkt dein 
Programm nichts davon.
Gast #2670418
Lesenswert?

> Da der Mikrocontroller das TIMER-Register unabhängig von den sonstigen
> Aufgaben hochzählt, dürfte es doch keinen Unterschied geben, oder?

Einen Unterschied macht es eigentlich nur dann, wenn zusätzlich zum 
Interrupt bei Gleichheit auch noch der Interrupt beim Überlauf genutzt 
werden soll (natürlich vorausgetzt, der Zähler-Reset bei Gleichheit wird 
abgeschaltet).

Für Dein Programm dürfte es darüber hinaus keinerlei Bedeutung haben, 
einzig denkbar wäre noch, dass es ggf. einen Unterschied im 
Stromverbrauch macht.
#2670419
Lesenswert?

Unterschiede schrieb:
> ob es bei folgenden zwei Szenarien einen Unterschied gibt.
> Ich starte TIMER0, der OHNE Prescaler bis 800 zählt und dann einen
> Interrupt auslöst
Wenn es ein Avr ist, ist der Unterschied, daß es mit Prescaler 
funktioniert und ohne nicht, weil Timer0 ein 8-Bit-Timer ist, der nur 
bis 255 zählen kann.

Aber mit Timer1 würde es gehen.

Da ist der Unterschied die Auflösung. Wenn du z.B. Zeiten messen willst, 
zählt er ohne Prescaler bei 1 MHz in µs-Schritten, 1, 2, 3...
Mit Prescaler in 8µs-Schritten. 8, 16, 24... Denn der Zählwert muss mit 
8 multipliziert werden, damit die korrekte Zeit ermittelt wird. Das 
spielt beim Eierkochen natürlich keine große Rolle.

mfg.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren