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
Da steht nichts drin weil da nichts ist. Die werden durch Reset nicht initialisiert.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.