ATmega16 flash geloescht

H

Helmut Neemann

Guest
Hallo,

seit einiger Zeit bastle ich an einer Schaltung mit einem ATmega16
herum. Ich beobachte folgendes Phänomen und habe keine Erklärung dafür:
Wenn ich die Schaltung ein Paar mal ein und ausgeschaltet habe, sind
Teile des Flash gelöscht (wieder auf 0xFF gesetzt)

Ich habe keine Induktivitäten in meiner Schaltung deren Induktionspeak
Probleme machen könnte.
Auf der Betriebsspannung habe ich keine Peaks o.ä. gesehen. Was ich
jedoch beobachte, ist das IO-Pins, die als Ausgänge geschaltet sind, und
auf "eins" gesetzt sind, beim Abschalten kurz auf Null gehen. Denn die
LED's die über die entsprechenden Pin's auf Masse gezogen werden
leuchten beim Ausschalten kurz auf.

Dieses Aufleuchten entsteht wie folgt: Nach dem Auschalten fällt die 5V
Versorgungsspannung innerhalb von 84ms auf 2.8V ab. (Die Versorgung ist
mit 1000uF gepuffert) dabei fallen die Versorgung und die Port-Pins
identisch ab. Bei 84ms nach dem Auschalten springt der Port-Pin auf Null
Volt, während die Versorgung entsprechend der Entladekurve des
Kondensators langsam weiter abfällt. So kommt es zu dem kurzen
aufleuchten der LED's.

Dieses Verhalten verstehe ich nicht, den die Brown-Out-Detektion ist
eingeschaltet und die entsprechende Schwelle auf 4V gesetzt. Außerdem:
Wenn die Brown-Out-Detektion "zuschlägt" sollten da nicht alle Eingänge
hochohmig werden, wie es dem Reset-Verhalten entspricht?

Hat jemand eine Idee was hier nicht in Ordnung ist?

mfg
Helmut
 
Helmut Neemann wrote:

Hallo,

seit einiger Zeit bastle ich an einer Schaltung mit einem ATmega16
herum. Ich beobachte folgendes Phänomen und habe keine Erklärung
dafür: Wenn ich die Schaltung ein Paar mal ein und ausgeschaltet
habe, sind Teile des Flash gelöscht (wieder auf 0xFF gesetzt)

Ich habe keine Induktivitäten in meiner Schaltung deren
Induktionspeak Probleme machen könnte.
Auf der Betriebsspannung habe ich keine Peaks o.ä. gesehen. Was ich
jedoch beobachte, ist das IO-Pins, die als Ausgänge geschaltet sind,
und auf "eins" gesetzt sind, beim Abschalten kurz auf Null gehen.
Denn die LED's die über die entsprechenden Pin's auf Masse gezogen
werden leuchten beim Ausschalten kurz auf.
Trotzdem Diode von RESET nach VCC. Sollte eigentlich helfen ;-)

Dieses Aufleuchten entsteht wie folgt: Nach dem Auschalten fällt die
5V Versorgungsspannung innerhalb von 84ms auf 2.8V ab. (Die
Versorgung ist mit 1000uF gepuffert) dabei fallen die Versorgung und
die Port-Pins identisch ab. Bei 84ms nach dem Auschalten springt der
Port-Pin auf Null Volt, während die Versorgung entsprechend der
Entladekurve des Kondensators langsam weiter abfällt. So kommt es zu
dem kurzen aufleuchten der LED's.
Die 2.8V sehen verdächtig nach einer falsch programmierten
BODLEVEL-Fuse aus. Wäre nicht das erste Mal ;-)

Ansonsten könnte ich mir noch folgendes vorstellen: Aufgrund einer
Kapazität auf RESET, fällt die Spannung dort langsamer ab als auf
VCC. Bei 2.8V ist es zufällig so weit, daß er in den parallelen
Programmiermodus geht. Als Seiteneffekt davon werden die Ports auf
Ausgang geschaltet (weiß ich nicht, halte ich aber für möglich).

Also erstmal die Diode von oben und dann nochmal gucken...

/Jan-Hinnerk
 
Helmut Neemann schrieb:
seit einiger Zeit bastle ich an einer Schaltung mit einem ATmega16
herum. Ich beobachte folgendes Phänomen und habe keine Erklärung dafür:
Wenn ich die Schaltung ein Paar mal ein und ausgeschaltet habe, sind
Teile des Flash gelöscht (wieder auf 0xFF gesetzt)
Hallo,

bei den AVRs kann es wohl vorkommen, daß beim Abschalten der
Versorgungsspannung der Programmierpin SCK anfängt zu schwingen und dabei
Flash- und EEPROM-Inhalt beschädigt werden können. Abhilfe schafft neben der
Brown-Out-Detection ein Pullup-Widerstand von Pin SCK (bei ATMega16 Pin 8)
gegen VCC, der das Schwingen unterdrückt.

Gruss Ronald
---
EMail: ronald<Punkt>fitzke@gmx.de
 

Welcome to EDABoard.com

Sponsor

Back
Top