-
-
Erfahrener Benutzer
Roboter Genie
Timer0 ist ein 8-bit Timer, d.h., wenn du ihn ohne Startwert laufen lässt, dann erreicht er nach 256 Schritten einen Overflow. Dies ist der Moment wo die ISR "Timer0overflow". Timer0 selber ist jetzt 0.
In der Variable T0Overflowctr zählst du nun die Anzahl der Aufrufe, also die Anzahl der Overflows.
Wenn du die Zeitnahme nun zu irgendeinem Zeitpunkt anhälst, ergibt sich die Zeitdauer aus der Anzahl der Overflows * 256 + den aktuellen Wert von Timer0. Also
T = T0Overflowctr* 256 + Timer0
Die Overlay Technik erlaubt dir nun, in T das Ergebnis zu bekommen, ohne es tatsächlich auszurechnen. Anstelle der Multiplikation mit 256 könntest du auch so etwas machen:
T = T0Overflowctr
shift T, left, 8
Du verschiebst also die Bits von T0Overflowctr in T an höherwertige Stellen. Mit dem Overlay schreibst du praktisch direkt auf diese höherwertigen Stellen.
T reicht im Speicher von Zelle &H60 bis &H63, da T ein Long-Typ ist. Das niegriedwertigste Byte (LSB) steht in &H60, in &H61 das nächst höherwertige. Und genau da wird T0Overflowctr (über Tvalueh) hingeschrieben. Timer0 wird dann noch (über Tvaluel) auf das LSB geschrieben.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen