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


von Sebastian (Gast)


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

von holger (Gast)


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.

von Ralli (Gast)


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...

von Martin O. (ossi-2)


Lesenswert?

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

von Ralli (Gast)


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.

von Sebastian (Gast)


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

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.