Forum: Mikrocontroller und Digitale Elektronik Timer deaktivieren


von Holger (Gast)


Lesenswert?

Hallo,

ich möchte einen Timer im Programm aktivieren und deaktivieren.
Welches Bit eignet sich dazu am besten, um den Mikrocontroller am 
meisten zu entlasten (Atmega644)?

Initialisiert und aktiviert wird er so:
1
TCCR0A |= (1<<WGM01);   // CTC Modus
2
TCCR0B = 1;         // kein Prescaler
3
TIMSK0 |= (1<<OCIE0A);   // Compareinterrupts erlauben
4
OCR0A = 99;     // Alle 100 Schritte-1 Timer Nullen

Reicht es, nur die Compareinterrupts zu verbieten? Funktionieren tut es.
Oder sollte man TCCR0B zusätzlich noch auf Null setzen?

Gruß

von Purzel H. (hacky)


Lesenswert?

Ich denk den TIMSK zu setzen sollte genuegen.

von Holger (Gast)


Lesenswert?

Delta Oschi schrieb:
> Ich denk den TIMSK zu setzen sollte genuegen.

Ok, vielen Dank für die Antwort! :)
Wenn sich kein anderer mehr meldet, werd ich es beim TIMSK belassen.

von Uwe (Gast)


Lesenswert?

Kommt drauf an ob du den Timer weiterlaufen lassen willst und nur den 
Interupt Disablen willst oder ob du den Timer anhalten willst.
Wenn du den Timer anhalten willst dann setz in TCCR0B den prescaler auf 
0.

von mega (Gast)


Lesenswert?

Holger schrieb:
> Welches Bit eignet sich dazu am besten, um den Mikrocontroller am
> meisten zu entlasten (Atmega644)?


8.11.2 PRR – Power Reduction Register

• Bit 5 - PRTIM0: Power Reduction Timer/Counter0
Writing a logic one to this bit shuts down the Timer/Counter0 module. 
When the Timer/Counter0
is enabled, operation will continue like before the shutdown.

von Holger (Gast)


Lesenswert?

mega schrieb:
> Holger schrieb:
>> Welches Bit eignet sich dazu am besten, um den Mikrocontroller am
>> meisten zu entlasten (Atmega644)?
>
>
> 8.11.2 PRR – Power Reduction Register
>
> • Bit 5 - PRTIM0: Power Reduction Timer/Counter0
> Writing a logic one to this bit shuts down the Timer/Counter0 module.
> When the Timer/Counter0
> is enabled, operation will continue like before the shutdown.

Angenommen, der Timer soll bis 100 zählen, dann von vorne beginnen und 
ich bin nun bei 50, wenn der Timer mit PRTIM0 beendet wird, startet er 
dann genau an dieser Stelle, wenn ich ihn wieder starte?

von mega (Gast)


Lesenswert?

Holger schrieb:
> ich bin nun bei 50, wenn der Timer mit PRTIM0 beendet wird, startet er
> dann genau an dieser Stelle, wenn ich ihn wieder starte?

Genau so verstehe ich das Datenblatt. Bißchen mehr steht in Kapitel 8.9
Selbst jedoch noch nicht ausprobiert.

von Holger (Gast)


Lesenswert?

Ok, dann muss ich mal schauen, welche dieser Alternativen am besten zum 
Ablauf des Programms passt.

Ich danke euch allen für eure Hilfe! :)

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.