mikrocontroller.net

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


Autor: Hagen L. (hagen83)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Code wäre hilfreich.

Autor: Hagen L. (hagen83)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klingt auf jeden Fall komisch... Brownout?!

Autor: Hagen L. (hagen83)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, und nun?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hagen L. (hagen83)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.