Timer1 in Assembler

OP #1583906
Lesenswert?

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 #1583913
Lesenswert?

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
Gast #1583944
Lesenswert?

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 #1583958
Lesenswert?

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 #1584104
Lesenswert?

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 #1584117
Lesenswert?

>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 #1584146
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren