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
>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.
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...
Nicht initialisierte Variablen können, bedingt durch Zufallsinhalt am Anfang, zu solchen Effekten führen.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.