AVR Timer1 manuell zurücksetzen

Gast #745751
Lesenswert?

Hi,

Ich hab mich jetzt ca. eine Stunde durch Bücher und das www gefühlt. 
Erfolglos. Daher die Frage: gibt es beim Timer1 (und generll) die 
Möglichkeit den Zähler manuell im Programm auf 0 zurük zu bringen?

Ich möchte eine Stopuhrfunktion irgendwann zu einem beliebigen Zeitpunkt 
starten und auch anhalten (und dann eben den eventuell verbleibenden 
Rest im Timer löschen)

Grüße,
Dieter
Gast #745765
Lesenswert?

Hi Niels,

Also ich meine nicht das OCR1AH/OCR1AL-Register (Vergleichsregister) 
sondern das Register im Zähler selber, also das, was der Timer 
hochzählt. Eben dafür brauche ich den Befehl bzw. den Namen des 
Registers. Ich nehme an, erst L-Byte schreiben, dann H-Byte. Danke :)

Gruß,
Dieter
#745780
Lesenswert?

Dieterbln wrote:
> Hi Niels,
>
> Also ich meine nicht das OCR1AH/OCR1AL-Register (Vergleichsregister)
> sondern das Register im Zähler selber, also das, was der Timer
> hochzählt. Eben dafür brauche ich den Befehl bzw. den Namen des
> Registers. Ich nehme an, erst L-Byte schreiben, dann H-Byte. Danke :)
>

Das Register ist das TCCR1 Register und zumindest beim gcc
brauchst du dich nicht um die Reihefolge kümmern, die macht
der Compiler selber richtig.

   TCNT1 = 10835;


Hol dir von Atmel das zu deinem Prozessor gehörende Datenblatt.
Da sind alle Register drinnen. Im gcc heissen die entsprechenden
Register völlig gleich wie im Datenblatt, mit nur einem Unterschied:
Du brauchst dich nicht um High/Low Register (TCNT1H / TCNT1L)
kümmern, sondern tust so, als ob das Register 16 Bit breit wäre
(TCNT1)
Gast #745786
Lesenswert?

Hoppala, stimmt. Es handelt sich um einen atmega8. Mein vorhaben ist:

Zähler auf 0 zurücksetzen
Zähler über TIMSK Starten

Wenn Stopuhr fertig, dann Zähler über TIMSK stoppen und wieder auf die 
"zähler auf 0 setzen"-Funktion springen.

Soweit alles fertig, es fehlt nur der Befehl zum Register zurücksetzen 
:)
#745798
Lesenswert?

Dieterbln wrote:
> Zähler auf 0 zurücksetzen
Wie schon von anderen erwähnt: TCNT1 ist das Zauber-Register

> Zähler über TIMSK Starten
Mit TIMSK kannst Du keinen Zähler starten...

> Wenn Stopuhr fertig, dann Zähler über TIMSK stoppen und wieder auf die
...und auch nicht stoppen!
Gast #745816
Lesenswert?

Okay, TIMSK steuert die Interrupte. Ich ging davon aus, dss, wenn ich 
den Interrupt für den Timer abschalte, der Timer nicht weiter läuft. Wie 
wäre der richtige Weg, wenn ich den Timer abschalten will (oder 
anhalten)?

Danke für TCNT1! :)
#745964
Lesenswert?

Dieterbln wrote:
> Okay, TIMSK steuert die Interrupte. Ich ging davon aus, dss, wenn ich
> den Interrupt für den Timer abschalte, der Timer nicht weiter läuft.

Glücklicher Weise ist das nicht der Fall.

Sonst müßte sich jeder PWM-Benutzer bei Dir bedanken, daß haufenweise 
unnütze Interrupts seine CPU zuballern.

Timer müssen immer unabhängig von Interrupts weiter laufen!

Nur so lassen sich auch auf den Zyklus genaue Zeitintervalle erzeugen 
(Frequenzmesser, RTC usw.).


Peter

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