Reset Prescaler Timer2

Hallo,

wenn ich im Rahmen eines Sketches den Prescaler von Timer2 verändert habe, und ich einen andersartigen Sketch aufspiele, muss ich den Prescaler dann "resetten", oder hat er automatisch wieder den "Standardwert"? Wie lautet der Standardwert?

Verändert hatte ich den Prescaler ursprünglicherweise so:

TCCR2B = TCCR2B & 0b11111000 | 0x01;

Gruß Chris

Hallo,

richtig. Nach Reset oder Spannung aus/ein ist alles wieder Standard. Ich nehme an das der Standardwert 0 ist. Also keine Taktquelle/Prescaler gesetzt ist. Timer läuft nicht. Dein neuer Zustand wird nicht dauerhaft gespeichert. Erst deine Software/Programm stellt die gewünschten Werte ein.

Noch ein Hinweis wie man das übersichtlicher schreibt, damit sieht man auf den ersten Blick welche Bits in den Registern gesetzt sind. Die nicht gesetzten Bits läßt man weg.

Bsp. vom Timer 1

TCCR1A = (1<<COM1B1) | (1<<WGM11);
TCCR1B = (1<<WGM13) | (1<<WGM12) | (1<<CS11);

Damit geht die Arbeit mit dem Datenblatt leichter von der Hand.

Nochwas. Du kannst auch den vorherigen Wert vom Register zwischenspeichern in deinem Programm und dann jederzeit zurück ändern. Du kannst auch ohne vorherige Eingriffe in die Timerregister dir den Inhalt auf die serielle ausgeben lassen zum gucken.

Einfacher ist man löscht erst die unteren drei Bits und setzt dann das was man braucht. So wie es auch in den Zeilen gemacht wird. Dann bleibt der Modus erhalten der gesetzt war. Egal was eingestellt ist. Das ist nämlich von Timer zu Timer unterschiedlich, je nachdem ob man einen 8 Bit oder 16 Bit Timer hat. So ist der Code dann universell.

Ansonsten ja, würde ich immer dazu raten die Bit-Name zu verwenden. Das hier ist die Ausnahme.