"Standard" Initialisierung von Registern

Gast #1616433
Lesenswert?

Hallo,

ich beschäftige mich gerade mit den ersten Gehversuchen von (AVR) 
Mikrocontrollern.
Nun frage ich mich, welchen Wert Register haben, die nicht explizit 
initialisiert sind. Sind die bits in den Registern automatisch gelöscht?
Konrektes Beispiel:
Ich möchte einen Timer starten im Compare Match Modus (Atmega 8, Timer1 
16-bit).
Hierzu müssen im TCCR1A Register COM1A0 und COM1A1 gelöscht sein. Muss 
ich diese bei der Initialiisierung explizit löschen oder sind diese 
bereits 0?
Gleiches gilt für den Timer selbst. Muss ich schreiben TCNT1=0 oder 
startet der Timer automatisch bei 0?

Danke.

Grüßchen
Steffi
Gast #1616436
Lesenswert?

Hallo Steffi,

im Datenblatt des µC findest Du die Register einzeln beschrieben. Zu 
jedem ist erklärt, welche Funktion die einzelnen Bits haben. Darunter 
steht der "initial value", der meist 0 ist.
Gast #1616454
Lesenswert?

Schade, wollte gerade den Screenshot mit "roter Einrahmung" absenden ;-)

Ach ja, noch als Hinweis:

Wenn Du den Controller nicht über einen Reset zurücksetzt, sondern z.B.
durch eine Sprung auf Adresse 0 (Startadresse), dann werden die 
Initialen Werte nicht wiederhergestellt.

Auch wenn man von einem Bootloader (der z.B. einen Timer oder UART 
initialisiert hat) in das Hauptprogramm springt, dann muss man den
Urzustand der Register vor dem Sprung selber wiederherstellen. Vor allem
wenn die eigentliche Applikation bei der Initialisierung von den 
Defaultwerten ausgeht! (Sollte bei einem "sauberen" Programmierstil 
eigentlich nicht sein....)

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