Registerzustand nach Reset

Gast #314601
Lesenswert?

Hallo!

Nachdem ich ein paar Stunden mit Fehlersuche verbracht habe, habe ich
nun endlich gemerkt dass der Fehler an nicht initialisierten Registern
aus dem General Purpose Register File lag.
Leider finde ich im Datenblatt keine Infos dazu (ATMega 8, z.B. S.35ff
"System Control and Reset" od. S.10 "General Purpose Register File"
od S.49ff "I/O-Ports").
In der Artikelsammlung unter "AVR-Checkliste" steht, daß die
I/O-Register (also ab 0x20) initialisiert werden müssen, logisch, aber
auch hier hab ich nix über die Register 0-31 gefunden.
Wer weiß, wo ich was im Datenblatt dazu finden kann?

MfG
Ivanhoe
Gast #314603
Lesenswert?

Ja, schon klar. Aber was bedeutet "nichts" ? Alle Bits auf 0?
Anscheinend nicht, sondern auf zufälligen Pegeln, nicht definiert eben.
Find dazu aber leider keine Info im Datenblatt, drum wollt ich wissen,
ob jemand vielleicht ne Seitenangabe parat hat.

Ciao
Ivanhoe
Gast #314605
Lesenswert?

Sämtliche I/O-Register werden beim Reset automatisch auf ihren "Initial
Value" (meist Null) gesetzt, steht bei jedem einzelnen I/O-Register im
Datenblatt dabei.

General Purpose-Register wie auch der restliche freie SRAM sind dagegen
nach einem Reset undefiniert, davon würde ich generell ausgehen.
Falls sich kein Hinweis zu einer Initialisierung der Register im
Datenblatt findet (ich habs mir jetzt nicht so genau angeguckt), dann
heißt das automatisch, daß es sowas nicht gibt. Und der Inhalt einer
SRAM-Zelle ist nach dem Einschalten nunmal zufällig.

Es ist eigentlich ohnehin üblich, daß man in einem Programm jede
Variable (bzw. jedes Register) vor der Verwendung erstmal
initialisiert. Das ist auch in jeder Hochsprache so.

MfG Olaf

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