Forum: Mikrocontroller und Digitale Elektronik Attiny44 vergisst EEPROM-Inhalt


von Sven Z. (treito)


Lesenswert?

Hallo,

mein Attiny44 vergisst das, was ich im EEPROM speichere. Fuses sind 
gleich wie beim Attiny2313 und gesetzt auf lfuse=0xEF und hfuse=0xDB.
Brown-Out-Detection ist somit 2,7V.

geschrieben wird mit
1
eeprom_write_dword(&eecode, savedcode);
2
eeprom_write_byte(&eelength, savedlength);
gelesen mit
1
savedcode = eeprom_read_dword(&eecode);
2
savedlength = eeprom_read_byte(&eelength);
Deklaration:
1
static byte_t eelength EEMEM;
2
static uint32_t eecode EEMEM;
Ich weiß nicht, woran es hapert, hat einer eine Idee?

Gruß,

Sven

von Christof Ermer (Gast)


Lesenswert?

Ja..
Oft liegt es daran. das Die Betriebsspannung absinkt, ( beim 
Aussschalten ) werend immer noch /RESET  High=5V+ ist..
Also Spannungswächter IC einbauen oder den Reseteingang mit Diode 
richtung V+ legen, damit der Kondensator am /RES entladen wird bei 
passiven RC Glied.

von Sven Z. (treito)


Lesenswert?

Dann baue ich doch einen Kurzen, wenn ich flashe?
Das Problem tritt auch bei einer Schaltung ohne Kondensator am Reset auf 
(alte Revision)

Also an den Befehlen liegt es nicht, das muss irgendwie wohl mit dem 
Wegfall der Spannung zusammenhängen! (Darum erwähnte ich auch schon das 
mit dem Brown-Out)

Zufällig jemand aus Bremen hier mit einem High-Voltage-Programmierer?

Edit: Also habe ich parallel eine Diode zum Pullup-Widerstand am Reset 
geschaltet und egal wie herum, es geht nicht.

von Sven Z. (treito)


Lesenswert?

Es liegt definitiv nicht am Programm! Ich kann den Inhalt löschen und 
aus dem EEPROM wieder neu einlesen und es läuft!
Nur sobald die Spannung wegfällt...

von Willi (Gast)


Lesenswert?

Sven Z. schrieb:
> Nur sobald die Spannung wegfällt...

Das hört sich so an, als ob die gespeicherten Werte im RAM abgelegt 
werden.

Bei Fehlern am EEPROM treten die Fehler sporadisch auf und nicht bei 
jedem Aus/Einschalten.

von Sven Z. (treito)


Lesenswert?

Willi schrieb:
> Das hört sich so an, als ob die gespeicherten Werte im RAM abgelegt
> werden.

Und was mache ich dagegen?!

von Michael K. (mmike)


Lesenswert?

Prüf mal ob die Werte wirklich im EEPROM stehen. Kannst ja mit dem AVR 
Studio mal den EEPROM Inhalt auslesen ...

Grüße,
Michael

von Sven Z. (treito)


Lesenswert?

Michael K. schrieb:
> Kannst ja mit dem AVR
> Studio mal den EEPROM Inhalt auslesen ...

Na super, das wird wieder spaßig. Ich habe das Studio ggf. nicht 
installiert, nie benutzt und programmiere eigentlich unter Linux, da ich 
eine vorhandene Firmware ändere mit Makefile etc.
Ich bin doch noch relativer Einsteiger! :-(

Falls ich mich an das Datenblatt halten möchte und den Beispielcode von 
da nehme:
1
void EEPROM_write(unsigned int ucAddress, unsigned char ucData)
wie bekomme ich
a) ucAdress heraus bzw. was trage ich dafür ein?
b) wandle die Zahlen (byte_t, uint32_t) in char um und zurück?

von Karl H. (kbuchegg)


Lesenswert?

Sven Z. schrieb:

> Ich bin doch noch relativer Einsteiger! :-(

Du machst aber nicht zufällig den Fehler, dass du immer dann den EPROM 
Inhalt verlierst, nachdem du eine neue Software eingespielt hast und der 
Programmer den µC einem Komplettreset unterzogen hat, der auch das 
EEPROM löcht, sofern man das nicht mit einer Fuse unterbunden hat?

von Uwe (de0508)


Lesenswert?

Wie hoch ist den die atTiny44 Vcc Spannung und die Taktfrequenz?

von Sven Z. (treito)


Lesenswert?

5V USB, 12 MHZ. Brown-Out liegt bei 2,7V

von Sven Z. (treito)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Sven Z. schrieb:
>
>> Ich bin doch noch relativer Einsteiger! :-(
>
> Du machst aber nicht zufällig den Fehler, dass du immer dann den EPROM
> Inhalt verlierst, nachdem du eine neue Software eingespielt hast und der
> Programmer den µC einem Komplettreset unterzogen hat, der auch das
> EEPROM löcht, sofern man das nicht mit einer Fuse unterbunden hat?

Also, wenn ich das Fuse-Bit setze, lässt sich der Controller nicht mehr 
programmieren. Nun habe ich schon 2 "Schrott"-Tinys und gleich muss ich 
einen AVR-Doper bauen zwecks Wiederbelebung! :-( Ich habe nur noch einen 
funktionierenden!

Nein, der Fehler tritt auf, sobald ich den Stecker ziehe. Das mit dem 
Programmierverlust weiß ich!

von Sven Z. (treito)


Lesenswert?

So, ich habe eben einen "ultimativen" Test gemacht.

Das Problem ist mein dword, das byte_t speichert er problemlos!

von Willi (Gast)


Lesenswert?

Sven Z. schrieb:
> Es liegt definitiv nicht am Programm!

Diese Aussagen liest man ja immer wieder :-)

von Sven Z. (treito)


Lesenswert?

Und es lag doch am Programm! :-D

Nachvollziehen kann ich es aber nicht!
Ich speichere einen Code sowie die Länge des Codes. Solange ich den 
Attiny nicht anrühre läuft alles wunderbar, aber sobald er vom Netz 
getrennt wird, klappt es nicht.
Ich habe jetzt die Code-Auswertung anders ausgeführt, allerdings mit 
anderen Nachteilen. Dann müsste ich mir noch mal überlegen, was ich 
ansonsten machen kann.

Danke erst einmal für die Hilfe!

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.
Lade...