mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Selbes Program geht auf dem einen µC, am andern nicht


Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Hatte schon jemand ein ähnliches Problem?
Ich habe einen C-Code mit dem St7-Toolset und dem Cosmic C Compiler für 
ST72F521r9 Controller geschrieben. Diesen Code habe ich dann auf 7 
baugleiche Geräte aufgespielt, auf denen allen (!) vorher bereits ein in 
Assembler geschriebenes Programm fehlerfrei lief. Die HW funktioniert 
also. Nach dem Programmieren mit der neuen SW funktionieren nur mehr 4 
Geräte mit dem neuen Programm, die anderen 3 nicht (am LCD, welcher 
direkt vom µC angesteuert wird, erscheinen kryptische Zeichen, Taster 
triggern keine LEDs/Piezobuzzer mehr, etc.)

Ich hab die 7 Geräte direkt hintereinander geflasht - also angesteckt, 
geflasht, abgesteckt, nächstes dran und so weiter. Es hat sich 
(offensichtlich) kein Parameter verändert. Es ist auch nicht so, dass 
nur die ersten oder letzten 3 nicht gehen. Ab und zu ging eins nicht.

Woran kann dies liegen? Selbes Programm, gleiche Hardware, 3 von 7 gehn 
nicht.
Danke für Hilfe,
Sebastian

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Woran kann dies liegen? Selbes Programm, gleiche Hardware, 3 von 7 gehn
>nicht.

Hardware läuft am Limit, Software läuft am Limit.
Versuch beides auszuschliessen, dann wird das schon.

Autor: Ralli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LCD-Display und Tastenerfassung?

Klappt die LCD-Initialisierung nicht, ist vielleicht die Pause
zwischen den Initialisierungspulsen zu knapp.

Sind die Display-Routinen auch noch (mit Abfragen zum Display)
"interaktiv"? - Vielleicht hängt sich das Programm dort auf,
weil das nicht-initialisierte Display sich nicht zurückmeldet...

Autor: Martin O. (ossi-2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nicht initialisierte Variablen können, bedingt durch
Zufallsinhalt am Anfang, zu solchen Effekten führen.

Autor: Ralli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Unwahrscheinlich:
Dann wäre die Versagensrate eher 6:1, denn 3:4.

Dem Einstecken der neu-geflashten µCs wird doch
wohl ein Neu-Einschalten des Geräts mit
Initialisierung aller Variablen folgen.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit dem Code-limit könnte ein guter Hinweis sein. Der Compiler ist 
limitiert auf 16k Code, und da bin ich genau dran. Musste auch schon 
Konstanten, die ich anfangs in Variablen gespeichert hatte, durch 
#defines ersetzen und andere Kürzungen vornehmen, um den Code-rahmen 
nicht zu sprengen. Der µC selbst hat jedoch 60k Flash ROM. Werde mal 
schaun, ob ich mit gekürztem Code etwas erreiche.

Mit LCD inits hatte ich am Anfang Probleme, hab dann 500ms - 1s Pausen 
dazwischen gelassen, ab dann gings immer. Display Routinen sind nur 
one-way.
Nicht initialisierte Variablen kann ich fast ausschließen, im Zuge der 
Code-effizienzsteigerung werde ich aber nochmal genau nachprüfen.


Danke schön für die Anregungen,
Sebastian

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.