Hallo zusammen, ich habe ein Problem mit meinem Programm/Hardware und bin ein wenig ratlos, vielleicht kann mir ja jemand helfen. Ich habe ein Atmega168 mit Rtc, Display und CAN-Kommunikation aufgebaut. Mein Programm funktioniert auch soweit wunderbar. Allerdings habe ich einen sonderbaren Fehler, wenn ich die Schaltung vom Netz trenne und nach ca. 10 Sekunden sie wieder versorge (Power-Up). Ein Teil der Funktionalität geht problemlos aber beim Darstellen einer Variable auf dem Display erscheinen nur Hyroglyphen... Es scheint so als wurde durch den Power-Up irgendwelche variablen oder Adressen zerschossen. Kann das sein? Am Display alleine liegt es nicht, denn andere Werte werden angezeigt, Wenn ich das gleiche Programm dann einspiele geht es problemlos. Reset am Controller geht auch. Aber nach dem Power-Up hilft nicht mal mehr ein Reset, also muss ich immer neu einspielen...Echt komisch. Hat jemand ein Tip für mich woran es liegen könnte? Was ist der Unterschied zwischen Reset und Power-Up?
Das liegt am Aufwecktiming. Das Display darf frühestens 200ms nach erfolgreichem internen RESET mit Befehlen angesprochen werden. Kommt der Controller früher als das Display aus der Hüfte, versackt die Init des Displays. Deshalb geht es auch, wenn die Schaltung an bleibt und das Programm neu geladen wird. Ein verlängerter RESET des Controllers beim Eingeschalten der Versorgung würde es wahrscheinlich auch tun.
Hi >Das liegt am Aufwecktiming. Das Display darf frühestens 200ms nach >erfolgreichem internen RESET mit Befehlen angesprochen werden. >Ein Teil der Funktionalität geht problemlos aber beim Darstellen einer >Variable auf dem Display erscheinen nur Hyroglyphen... Das sieht aber mehr nach einer fehlerhaften Initialisierung der Variablen aus. Ein fehlerhaft initialisiertes Display erzeugt meist noch nicht einmal Hieroglyphen. MfG Spess
spess53 schrieb: > Ein fehlerhaft initialisiertes Display erzeugt meist noch > nicht einmal Hieroglyphen. Kommt drauf an. Ich hatte schon beide Fälle. Variablen, die sich bei Neuaufspielen eines Programms anders verhalten, als beim Power-Up hatte ich hingegen noch nicht.
Hagen L. schrieb: > Hat jemand ein Tip für mich woran es liegen könnte? Was ist der > Unterschied zwischen Reset und Power-Up? Beim Power-Up wird das SRAM verändert und muß explizit initialisiert werden. Beim Reset bleiben einmal eingestellte Werte (ohne Init) im SRAM erhalten.
Ja ich vermute auch stark eine falsche Inititialisierung der Variablen. Aber warum geht es nach dem Flashen und nicht mehr nach dem Power-Up? Werden da die Adressbereiche neu verteilt?
Hi
>Aber warum geht es nach dem Flashen und nicht mehr nach dem Power-Up?
Weil bei bestehender Stromversorgung der RAM-Inhalt nicht verändert
wird. Bei einem Power-Up ist er RAM-Inhalt zufällig.
MfG Spess
ah ok. Habe die globalen Strukturen als statisch definiert. Dadurch werden sie im Ram priorisiert und landen weiter vorne. echt doofer Fehler. Vielen Dank für eure Hilfe!
Hagen L. schrieb: > Habe die globalen Strukturen als statisch definiert. Dadurch werden sie > im Ram priorisiert und landen weiter vorne. > > echt doofer Fehler. Nö. Der Fehler ist, daß Du Deinen Fehler noch nicht gefunden hast. Durch das Ändern der Speicheraufteilung kann man keinen Fehler beseitigen! Du hast den Fehler nur an eine andere Stelle verschoben, wo er vielleicht (noch) nicht auffällt. Einem fehlerfreien Programm ist es egal, wo die Variablen stehen, SRAM bleibt SRAM. Peter
Hallo Peter, oh, ok. Hast du noch ein Tip, wie ich vorgehen könnte? Oder worin vermutest du den Fehler, der erst nach dem Power-Up sichtbar wird? Danke, Hagen
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.