Timer1 in Assembler

OP #1583906
Hallo ich arbeite mit dem AT Mega8 und Assembler...

Nun möchte ich einen Timer (z.B. Timer1) 5Sekunden im Hintergrund laufen 
lassen...nur habe ich jetzt mit Probleme die richtige Zeit 
einzustellen... Ich habe ein mal ein programm geschrieben, in dem ich 
eine Zeit von 20ms generiert Habe... Jedoch weiss ich nicht mehr wie ich 
das ausgerechnet habe...Da wollte ich euch mal um einen Rat bitten...

MFG Mike
Gast
Hi

>Hallo ich arbeite mit dem AT Mega8 und Assembler...

Aber du hast doch bestimmt auch einen Controller der mit einer 
bestimmten Taktfrequenz läuft?

>Nun möchte ich einen Timer (z.B. Timer1) 5Sekunden im Hintergrund laufen
>lassen...nur habe ich jetzt mit Probleme die richtige Zeit einzustellen...

Und das ist nun mal taktabhängig. Was soll denn nach den 5s passieren?

MfG Spess
OP
Hallo oh ja sorry hab die Frequenz vergessen = 3,6864 Mhz...

Während den 5 Sekunden besteht die Möglichkeit einen Taster zu betätigen 
der eine LED in einer LEDleiste nach links schiebt...dann wieder das 
gleiche nur bleibt die vorherige LED in der Leiste bestehen...
Gast
3,6864 MHz / Prescaler (würd 1024 nehmen) = 3,6 kHz

-> 3600 als Wertzuwachs pro Sekunde

5 sekunden willste haben, also 5* 3600 = 18000 Wertzuwachs

mit nem Aufwärtszähler mit 16 Bit (Timer1) musst du deinen Startwert 
(TCNT1H und TCT1L) auf 65536 - 18000 = 47536 einstellen.

sobald dann der Timer läuft, wird nach 5 Sekunden der Overflow 
ausgelöst.

Hoffe ich hab mich nicht verrechnet ;-)
Gast
Hi

Ein 16-Bit-Timer hat mit einem Vorteiler von 256 bei deinem Takt alle 
4,55s einen Overflow. Reicht dir das.

Rechnung: 65536*Vorteiler/IO-Takt

MfG Spess
Gast
Hi

>mit nem Aufwärtszähler mit 16 Bit (Timer1) musst du deinen Startwert
>(TCNT1H und TCT1L) auf 65536 - 18000 = 47536 einstellen.

Höre bitte mit diesem Quatsch auf. Dafür gibt es OCR-Register und den 
entsprechenden Interrupt.

MfG Spess
OP
Danke ihr beiden habt mir sehr geholfen... hatte das mit dem Vorteiler 
bisher auch nie richtig verstanden... Ich werds dann warscheinlich doch 
mit dem Prescaler 1024 machen...auch wenn die Zeit nur annähernd 5 
Sekunden sein muss...

Gruss Mike
Gast
>kann ich den Timer auch manuel (=> durch Taster)
>starten lassen??

>und beim ersten overflow (nach 5 sekunden) wieder anhalten?

Ja.
Guck dir dazu mal das Tutorium und das Datenblatt an.
OP
hi...

habe mir das datenblatt angeschaut und das einzigste worauf ich nur auf 
die möglichkeit sties den OC1A abzuschalten (weiss nicht was das ist)
das geht wiefolgt: Bit 7 + 6 (COM1A1 + COM1A0) der I/O reg TCCR1A

Habe nicht mehr gefunden.. verstehe das buch auch nicht richtig... denke 
auch das das mir nicht weiterhilft... daher frag ich nochmal ... in 
welchem register( oder wie auch immer ) ich den Timer starten und 
ausschalten kann...
Gast
>daher frag ich nochmal ... in welchem register( oder wie auch immer ) ich >den 
Timer starten und ausschalten kann...

Da wo du den Prescaler einstellst. Da gibt es auch den Prescaler 
"unendlich"... (den Begriff habe ich mir gerade ausgedacht, weil er die 
Funktion beschreibt.)
Gast
Hi!
>daher frag ich nochmal ... in welchem register( oder wie auch immer ) ich >den 
Timer starten und ausschalten kann...

Timer Start: Vorteiler = 1024
Timer Stop:  Vorteiler = 0 = Timer Off

Mit (COM1A1 + COM1A0) kannst du nur festlegen was der Ausgang machen 
soll wenn die Zeit abgelaufen ist.
00 = garnichts, OC1A ist ein ganz normaler Ausgang
01 = Toggeln des Ausgangs
10 = Ausgang = 0
11 = Ausgang = 1

Die beste Übersicht bietet immernoch das Datenblatt.

Viel Erfolg, Uwe

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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.