Hallo, mich ärgert ein kniffeliges Problem :-( ich habe eine größere Anzahl von kleinen Steuerplatinen in betrieb die mit einem mega8L bestückt sind. Etwa 1% verliert unmotiviert während des Betriebes teilweise oder vollständig FLASH-Inhalte. Woran kann das liegen? Halt jemand schon mal solche Erfahrungen gemacht? THX Alex
Betriebsspannung gut absieben und Brown-Out Detektor aktivieren. Verstrahlte Umgebung?
hm, spannungsversorgung erfolgt über den usb-bus ... die umgebung ist eher als STINO zu betrachen... hatte schon an ESD effekte geacht was würde der aktivirte brown-out detektor bei dem problem bringen? THX Alex
> Kein Pin darf Spannung kriegen, bevor nicht VCC anliegt !
Da diese Forderung in der Praxis unrealistisch ist, müsste doch ein
externes Reset-IC für die MCU ausreichen, oder?
"Da diese Forderung in der Praxis unrealistisch ist" Warum ? Wenn Peripherie und MC aus einer Quelle versorgt werden, ist das doch der Fall. Aber wenn man nen Programmieradapter hat, der schon vom PC Saft kriegt, kann es die merwürdigsten Effekte geben. Daher hat der Programmieradapter nen 74LS244 dazwischen geschaltet, der mit VCC des MC versorgt wird. Peter
oh mann mal langsam jungs... ihr denkt also dass meine probleme daher kommen dass portpinns spannung haben bevor vcc am controller anliegt... hm... das ist denkbar da die spannungsversorgung aus zwei quellen möglich ist... usb und extern hm.... ich les mir das kapitel brown-out detector im datenblatt noch mal durch THX alex
Peter: Der Kollege meinte, daß während des Betriebes der Datenverlust auftritt, am Progger dürfte es also nicht liegen. Daß die Chips vor der Betriebsspannung auf irgendwelche Pins Saft bekommen, ist eher wahrscheinlich oder eben ESD. @Alex: Der Brown-Out Detektor sorgt für definiertes ein- und ausschalten des Cores und verhindert, daß die CPU undefinierte Codes ausführt, falls die Spannung ungenügend ist. Zusätzlich solltest Du die Lock-Bits setzen, die das Ausführen der SPM-Instruktion im Applikationsbereich verhindern. Das gibt zusätzliche Sicherheit.
Hast du mal einen uC wieder ausgelesen und mit dem Programm verglichen ? Wo/wie unterscheiden die sich ? Hast du evtl irgendwo im Programm flash schreibbefehle drin ?
also es passiert definitiv beim betrieb... es geht auch nicht um ein einzelstück... die programme laufen ne weile und ohne bisher erkennbares muster steigen die aus... der bootloader bleibt in den meisten fällen erhalten... ich dachte schon das der bootloader "spontan anspringt" und anfängt seiten zu löschen... aber das konnte bisher nicht festgestellt werden... definitiv gab es auch fälle bei denen die programme sozusagen halb liefen, also nur bestimmte programmteile betroffen waren... ich denk ich versuchs mal über brown-out detection in den griff zu bekommen... im datenblatt des mega8 wird ausdrücklich darauf eingegangen dass der flash während des betriebes "kaputt" gehen kann (Preventing Flash Corruption ) atmel empfiehlt im wesentlichen 3 maßnahmen.. eine davon ist brown-out ;-) THX jungs
kann es nicht doch sein dass der bootloader angesprungen wird ? Zb irgendwo nen Stack überlauf und du schreibst irgendwo werte hin die er dann als Rücksprung adresse nimmt und zufällig im bootloader landet. Flash doch mal eine Version ohne bootloader und guck obs da auch passiert ;)
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.