Atmega2561 Flash Speicher geht kaputt

Gast #1187177
Ich habe einen 2561 Atmega, der mit 16 Mhz läuft und irgendwie 
empfindlich auf Spannungseinbrüche o.ä. reagiert. Da steckt er auf einer 
Karte und zwei Tage geht alles gut, dann schalte ich was dazu an der 5V 
schiene, wobei alles gefiltert ist und zack, macht er Fehler. Nach dem 
Abziehen der Stromversorgung etc. bleibt er stur beim fehlerhaften 
Verhalten. Bei einer printfausgabe eine const char[] Arrays zum 
Programmstart spuckt er nur Mist aus wobei die eine feste Ausgabe wie 
printf("__________"); wunderbar ausgegeben wird. Programmiere ich den 
Flasch mit dem gleichen Programm neu, ist alles wunderbar. Ich möchte 
nicht auf die Einzelheiten der Schaltung eingehen, erwähnenswert ist, 
dass der Atmega128 in der gleichen Schaltung beim gleichen 
Hardwareaufbau wunderbar funktioniert und diese Probleme waren 
unbekannt. Muss jedoch zugeben, dann in der aktuellen Softwareversion 
per malloc paar Hundert bits reserviert werden.

PS: wenn ich am System fummel, dann erde ich mich auch ordentlich.


Ist euch so ein Verhalten bei den Atmegas bekannt?
(Firma: TravelRec.) Persönliche Seite #1187789
>Werden im Main Programm irgendwo interruptfähige Schnittstellen
>angesteuert, wobei noch keinen allgemeine Interruptfreigabe
>stattgefunden hat? Das kann unter Umständen das Problem sein.

Bei keiner allgemeinen Interruptfreigabe werden auch keine Interrupts 
ausgelöst. Ein sprung an den falschen Interruptwektor ist auch nicht 
ausreichend, um das Flash zu manipulieren. Um Flashspeicher zu löschen 
oder zu beschreiben, müssen genau abgestimmte Befehle und Timings rund 
um den Assemblerbefehl 'SPM' ausgeführt werden. Dies kann nur 
absichtlich geschehen oder bei einer MCU, die zu wenig Spannung für 
einen sicheren Betrieb hat.
#1187801
Travel Rec. wrote:
> Um Flashspeicher zu löschen
> oder zu beschreiben, müssen genau abgestimmte Befehle und Timings rund
> um den Assemblerbefehl 'SPM' ausgeführt werden. Dies kann nur
> absichtlich geschehen

Er hat ja die entsprechenden Routinen in seinem Code. Der Programmteil 
muss nur ausgeführt werden, warum auch immer.
(Firma: TravelRec.) Persönliche Seite #1187810
Sicher. Vielleicht sollte der Kollege den vom Programm geschossenen 
Flash einfach mal komplett auslesen (ISP), um dem Fehler auf die Spur zu 
kommen. Wenn das Programm beispielsweise ein externes Ereignis nicht 
korrekt abfängt, könnte ja auch ein Sprung in den Bootloader und 
zufällig an die SPM-Routine stattfinden.
Gast #1188597
>Werden im Main Programm irgendwo interruptfähige Schnittstellen
>angesteuert, wobei noch keinen allgemeine Interruptfreigabe
>stattgefunden hat? Das kann unter Umständen das Problem sein.

Tatsächlich habe ich mit dem TWI Master nach Slaves gesucht, bevor sei() 
ausgeführt wurde.

Danke vielmals!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.