Forum: Mikrocontroller und Digitale Elektronik Flash korruption bei Atmega88 durch Versorgungspeaks?


von Wolfgang (Gast)


Lesenswert?

Hallo!

Ich habe ca. 30 gleiche Atmega88 (I/O Slaves) in meinem Haus verbaut, 
welche über einen zentralen Atmega32 gesteuert werden. Das System an 
sich funktioniert ganz gut, allerdings hatte ich bereits mehrmals das 
Problem, dass nach "Servicearbeiten" bei denen an der Versorgung 
ungewollt ein paar Unterbrüche bzw. Peaks entstanden, bei 2 oder 3 
Atemgas der Inhalt des Bootloader-Flash teilweise "zerstört" wurde und 
somit der Slave nicht mehr funktionierte.

Beim Auslesen des Atmegas konnte ich deutlich erkennen, dass einige 
Pages wirre Daten enthielten. Nach einem neuen Flashvorgang mit der 
selben Programmversion funktionierte wieder alles.

Kennt jemand das Problem, dass der Programmspeicher durch äußere 
Einflüsse unbrauchbar gemacht werden kann?

Zur Schaltung:
Das Kernstück des Slaves ist ein Atmega88V-10PU mit internen 8MHz (ohne 
Teilung), einer Bootloadersection (1024) und 2,7V BrownOutDetection.

Versorgt wird er über einen kleinen Step-Down Schaltregler LM2574N-5.0 
mit 5VDC (mit 220µF geglättet und 10nF entstört). Primärseitig gibt es 
für die 24VDC auch noch einen Elko mit 22µF.

Für die Kommunikation hab ich einen LowPower RS485 Treiber vom Typ 
SP485ES-L verbaut und an den RX/TX Pins angeschlossen. Die 
Übertragungsrichtung ~RE/DE läuft über den Pin PD4. Betrieben wird der 
Bus mit 125KBaud im Master-Slave-Betrieb (20ms Zyklus) - ohne Störungen.

Alle anderen Pins sind je nach Konfiguration des Slaves beschaltet. 
Inputs werden mit den internen Pull-Ups hochgehalten.


Erwähnenswert ist wahrscheinlich noch der Bootloader, den ich aus irgend 
einem Codebeispiel gezogen habe. Den habe ich so modifiziert, dass er 
mit geringer Baudrate (ich glaub 4800) ca. 2 Sekunden auf Daten zum 
Flashen wartet, anderfalls startet er das Hauptprogramm.

Vielleicht hat ja bereits jemand mit einem Ähnlichen Problem zu kämpfen 
gehabt. Bin für jeden Hinweis dankbar.

Vielen Dank schon mal im Voraus
Wolfgang

von Peter D. (peda)


Lesenswert?

Wolfgang schrieb:
> bei 2 oder 3
> Atemgas der Inhalt des Bootloader-Flash teilweise "zerstört" wurde und
> somit der Slave nicht mehr funktionierte.

Vermutlich ein Fehler im Bootloader.
Ein Bootloader sollte vor jeder SPM-Instruktion prüfen, ob Z auf 
<Bootresetvektor (in Bytes) zeigt.

Lade dochmal irgendwas in den Bootsektor, was kein SPM enthält und 
prüfe, ob das dann immer noch überschrieben wird.


Peter

von Wolfgang (Gast)


Lesenswert?

Hallo Peter,

danke für den Hinweise. Diese Prüfung habe ich aber bereits 
implementiert, nachdem ich bei der Inbetriebnahme der ersten paar Slaves 
auf dieses Problem auf lief.

Aber ich hab diese Anpassung noch nie mit einem manipulierten Hex-File 
getestet - vielleicht hab ich da ja was falsch gemacht.

Gruß
Wolfgang

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.