Unterschied bei Timer mit Vorteiler und Ohne

Gast #2670346
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.
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
> 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.
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

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.