Forum: Mikrocontroller und Digitale Elektronik ATmega168: Fehler nach Power-Up


von Hagen L. (hagen83)


Lesenswert?

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?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

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.

von spess53 (Gast)


Lesenswert?

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

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

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.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

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.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Code wäre hilfreich.

von Hagen L. (hagen83)


Lesenswert?

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?

von spess53 (Gast)


Lesenswert?

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

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Klingt auf jeden Fall komisch... Brownout?!

von Hagen L. (hagen83)


Lesenswert?

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!

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Hmm, und nun?

von Peter D. (peda)


Lesenswert?

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

von Hagen L. (hagen83)


Lesenswert?

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
Noch kein Account? Hier anmelden.