Hallo! Mein Programm für den 18F4620 funktioniert eigentlich ganz gut. Nur nach einigen Stunden kommt es immer wieder vor, dass sich der Prozessor komplett aufhängt. Er ist dann immer duch ein neuprogrammieren wieder zu retten, manachmal auch durch einen längeren reset, bzw. Abziehen der Spannungsversorgung. Leider verwende ich genug Bibliotheken von anderen an denen es liegen könnte. Soweit ich weiß, greifen die auch auf den Programmspeicher zu um dort Daten persistent abzuspeichern. Kann es daran liegen? Nach welchem Fehler klingt das für euch am ehesten? Will nur rausbekommen wo ich anfangen soll zu suchen. Für mich klingts irgendwie nach Speicherproblem, kanns was anderes auch sein? Dankeschön!
Hallo Vermute mal, eines deiner Module schreibt irgendwo in den Speicher, wo es nicht sollte, und zerschiesst dadurch das Programm. Dass dann nicht mehr viel geht, dürfte klar sein ;-) Gruss Michael
Mach doch mal einen Verify nachdem nichts mehr geht. Somit kannst du vermutlich erst einmal eingrenzen in welchen Bereich was geschrieben wird. Dann nehme gezielt einige Funktionen raus, somit weiter eingrenzen. Zu guter letzt Source-Code überprüfen.
Dankeschön, Leider hat der Verify prinzipiell nicht hin, weil ja einige der Module beim ersten Start des Prozessors sofort etwas in den Programmspeicher schreiben. Debuggen kann ich auch nicht vernünftig mit dem ICD, weil die Module so groß sind, dass ich alle optimierungsmethoden aktivieren muss.
"...weil ja einige der Module beim ersten Start des Prozessors sofort etwas in den Programmspeicher schreiben." Was isn das fürn komisches Programm ??? Der Flash wird normaler Weise nie beschrieben, da die Schreibzyklen limitiert sind und Zeit kosten. In den Flash schreibt nur ein Bootloader bei einem Update und auch da nie in sich selbst (= Selbstzerstörung), sondern nur in den Applikationsbereich. Einen Bootloader schreibt man immer so, daß er Selbstzerstörungsversuche abweist. Peter
Wie sind denn die Speicherbereiche festgelegt in denen die einzelnen Module schreiben dürfen ? Falls nicht nur geschrieben sondern auch gelöscht wird, unbedingt auf die Größe der Flash-Blöcke achten.
Na ... scheint wohl doch nicht so wichtig zu sein.
> manchmal auch durch einen längeren reset, bzw. Abziehen der
Spannungsversorgung.
Das kann aber sicher nicht am Flash liegen, wohl eher eine Variable die
einen unzulässigen Wert annimmt und nach längerem Abschalten zufällig
wieder mit einen brauchbaren Wert (uninitialisiert) startet.
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.