www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega2561 Flash Speicher geht kaputt


Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nutzt du zufällig Flash Schreib Routinen in der Software?
Falls ja, mach mal die BOD an.

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
BOD ist an und steht auf 4,5V bei 5V Vcc
Flashroutinen sind nur im Bootloader drin.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Brown-Out Detektor ist Pflicht. Ebenso eine saubere Abblockung aller 
Betriebsspannungsanschlüsse. Außerdem Reset mit 4k7 nach Vcc schalten.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>BOD ist an und steht auf 4,5V bei 5V Vcc
>Flashroutinen sind nur im Bootloader drin.

Hmm - aus eigener Erfahrung kenne ich den Mega2560 und 2561 als genau so 
stabil wie alle anderen Megas...

Autor: wt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schaltplan, layout?

Autor: A. F. (artur-f) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Werden im Main Programm irgendwo interruptfähige Schnittstellen 
angesteuert, wobei noch keinen allgemeine Interruptfreigabe 
stattgefunden hat? Das kann unter Umständen das Problem sein.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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!

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also war der Flash gar nicht kaputt? Na sowas...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.