mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik timer - verständniss


Autor: Burt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Läubi (Gast)
Datum:

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

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Burt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.