Forum: Mikrocontroller und Digitale Elektronik timer - verständniss


von Burt (Gast)


Lesenswert?

Hallo @all!!

Ich hätte ein paar fragen zum timer die mir ältere forum-beiträge nicht
konkret beantworten können...

Ich hab meinen Timer0 (AT89S8252, 12Mhz, 8051er) im 8-Bit-Modus
laufen. Nach 12 oder 13 mal timer0 Overflow-bit
überprüfen/löschen/warten auf nächsten overflow
soll eine ca. 150 - 160ms lange schleife erzeugt werden.

- Wenn das overflow-Bit hardwaremäßig gesetzt wird hält mein timer
  automatisch an oder muss ich ihn mit  clr TR0  wieder stoppen?
- hab ich beim initialisieren des timers alles richtig gemacht -
  vor allem nichts vergessen???

set_timer:
mov tmod,#00000000b  ;--- timer-operation, 8Bit timer
mov tcon,#00000000b

;--später wird der timer gestartet....

setb 8ch  (TR0 = 1)

;-- ....und gewartet, bis das Overflow-bit gesetzt wird

waiting_for_overflow:
jnb 8dh,waiting_for_overflow

;-- jetzt wird das Overflow-bit geslöscht, eine variable
    dekrementiert (von 12h bis 0h), und die timerschleife erneut
    durchlaufen ???!!

(ich weiß dass die SFRs tmod und tcon nach einem reset schon 00h sind
aber dass ich es gleich richtig lerne.....)

-was ist der auto-reload-timer (im tmod-register bit 0 und 1)
 (ist das villeicht das was ich oben meine? dass er wieder von 0
anfängt zu zählen bis 255( 256??) um dann wieder bei 0 anzufangen??)

-findet der überlauf ÜBERHAUPT schon bei 256 statt???
 (Im datenblatt steht noch was von 5 Bit prescaler)???

Ich bin dankbar für jede antwort!!!!

P.S. Hab schon einiges im Datenblatt gefunden aber andere dinge eben
nicht, bin auch nicht so der engländer.... :-)
habt verständniss:-))

MFG Burt

von Läubi (Gast)


Lesenswert?

Der Überlauf findet bei 255 statt (der zählt von 0-255) und nach 255
fängt der automatisch wieder bei 0 an.

von Peter Dannegger (Gast)


Lesenswert?

Je nach Mode zählen T0 oder T1 8, 13 oder 16 Bit breit.

Im Reload-Mode zählt er nur 8 Bit, da das High-Byte als Reload-Wert
werwendet wird. Dieser Mode wird hauptsächlich für die UART verwendet.

Und natürlich laufen sie nach dem Overflow weiter, ansonsten wäre ja
keine exakte Zeitmessung möglich.


Peter

von Burt (Gast)


Lesenswert?

Danke für die Antworten!!!

-Was macht dann der Timer im Reload modus genau????

wie kann ich eigentlich eine Schleife berechnen mit dem Timer0??
hab im DB was gelesen von teilen durch 12 (bei 12Mhz, ein cycle = 1us)


danke, Burt

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.