EEPROM fail safe

Gast #3202512
Lesenswert?

Hallo,

mit dieser Schaltung probiere ich schon seit einer Woche Daten ins 
EEPROM zu schreiben:
http://www.mikrocontroller.net/articles/Speicher#EEPROM

An N_POWER_FAIL ist Int.Pin des Atmega8.
Den Kondensator habe ich schon an 5 Volt und an 12V vor dem LM7805 
gehabt.
Der Atmega Betreibt 3 7-Segment Anzeigen, 2 LEDs und 3 Transistoren.
Mit Werten von 100µF bis 3300µF habe ich es schon probiert.
Sogar ein Goldcap mit 47000µF.

Geht der INT0-Pin auf LOW, werden in der ISR Daten ins EEPROM 
geschrieben, danach folgt while(1).
Die Schaltung funktioniert bei mir sporadisch, meistens aber nicht. 
Falls ich den N_POWER_FAIL abziehe, natürlich immer.

Mit dem 47000µF Kondensator geht die Spannung am Atmega schlagartig auf 
ca. 2.5V, wonach sie sich dann sehr langsam abbaut.

Nache ich etwas falsch?
Sollte ich besser den Atmega8L verwenden?

Vielen Dank
Artur
#3202517
Lesenswert?

> Mit dem 47000µF Kondensator geht die Spannung am Atmega
> schlagartig auf ca. 2.5V.

Dann hat der Kondensator entweder einen zu hohen Innenwiderstand oder zu 
wenig Kapzität. Bei Gold-Caps ist der Innenwiderstand sehr hoch.

> Die Schaltung funktioniert bei mir sporadisch, meistens aber nicht.

Was genau funktioniert nicht?

> Der Atmega Betreibt 3 7-Segment Anzeigen, 2 LEDs

Also reichlich Stromaufnahme. Du könntest die Leuchten über einen 
separaten Spannungsregler vorsorgen, damit der Hilfs-Kondensator für die 
verlängerte Versorgung des ATmega länger genug Spannung liefert.

Schaltest Du die Leuchten wenigstens sofort aus, wenn der Interrupt 
kommt? Das wäre angemessen, wobei das auch schon zu spät sein könnte - 
je nach Stromaufnahme und Kapazität.
Gast #3202534
Lesenswert?

Nicht funktionieren heisst der Interrupt wird nicht ausgelöst, Werte 
werden nicht geshcrieben.
Ich teste das in dem ich sie nach dem Hochlauf auf die Anzeige bringe.

Zum Test habe ich vor der Spannungsabschaltung die Anzeigen und die LEDs 
abgeklemmt. Vor dem einschalten wieder drauf. Stromaufnahme sollte also 
minimal sein
#3202570
Lesenswert?

Der Kondensator muss natuerlich auf der hoechsten Spannung sein. Den 
powerfail zapft man vorher ab, zb bevor man mit ueber eine Diode auf den 
Kondensator geht, sodass man sofort mitkriegt, wenn der Saft weg ist. 
Dann muss man natuerlich sofort das Geleuchte abschalten. Und hat man 
beliebig Zeit. Wieviele Bytes sollten dann noch geschrieben werden ?
#3202735
Lesenswert?

@ arser (Gast)

>Schalte ich den internen PullUp nicht ein, scheint es bis jetzt zu
>funktionieren.

Ja logisch! Der interne Pull-Up macht einen Spannungsteiler. Wenn VIN = 
0 und VCC = 5V, was kommt dann am Pin an?

Trotz der while(1) Schleife nach dem Speichern der Daten sollte man den 
Brown Out Detector im Prozessor per Fuses aktivieren, denn sonst kann es 
passieren, dass die CPU bei  knapper Unterspannung Unsinn macht und ggf. 
Schreibzugriffe auf das EEPROM ausführt.
#3203226
Lesenswert?

Stefan Frings schrieb:
> Sogar Lesezugriffe bei ungeeigneter Spannungsversorgung können zu
> Datenverlust im EEPROM führen.

QUATSCH !!! entferne deine 'schreibroutine' aus dem Programm und
es wird nichts mehr schieflaufen, lesezugriffe aenden NIE den
Inhalt einer EEpromzelle, dein Problem haegt daran das bei
deaktiviertem BrownOut er manchmal auch in dem Teil des Programms
landet wo ins EEprom geschrieben wird

vlG
Charly

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren