Forum: Compiler & IDEs EEPROM Werte nach Compilieren falsch


von Sebastian (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich arbeite mit Atmel Studio 6.2. In meinem Programm habe ich mit EEMEM 
ein 2D-Array mit Kommandos im EEPROM definiert. Das funktionierte über 1 
Jahr zuverlässig. Auf der Suche nach einem Bug ist mir gestern 
aufgefallen, dass das Kommando addnumber (erstes im Array) nichtmehr 
funktioniert. Der Kompiler setzt den String "addnumber" als "addLumber" 
um.
Deklaration und übersetzte EEPROM Speicher sin im Anhang 
"Gegenueberstellung.txt"
1
char eecommands[KommandoAnz][14] EEMEM = {"addnumber\0","delnumber\0","delallnumber\0","switchbycall\0",    
2
                      "answer\0","name\0","free1\0","relfunc\0",              
3
                      "fencealarm\0","mbalarm\0","dcoutfunc\0","poweron\0",      
4
                      "poweroff\0","status\0","xstatus\0","sensitivity\0",      
5
                      "alarmreset\0","fencecal\0","reset\0","credit\0",        
6
                      "free2\0","autoreset\0","autostart\0","fall\0",          
7
                      "case\0"};



eeprom 0x0010  6c 6e 75 6d 62 65 72 00 00 00 00 00 64 65 6c 61 
lnumber.....dela
eeprom 0x0020  6c 6c 6e 75 6d 62 65 72 00 00 73 77 69 74 63 68 
llnumber..switch
eeprom 0x0030  62 79 63 61 6c 6c 00 00 61 6e 73 77 65 72 00 00 
bycall..answer..
usw.

Kann mir jemans sagen, wo ich hier einen Fehler gemacht habe?

Danke und Gruß
Sebastian

von Peter II (Gast)


Lesenswert?

Sebastian schrieb:
> Kann mir jemans sagen, wo ich hier einen Fehler gemacht habe?

wenn es vorher ging, wird es wohl kein Fehler von dir sein.

zwischen l und n liegt nur 1bit. Eventuell ist ja die Zelle defekt. Ist 
es denn in der eep Datei vor dem Transfer auf den µC noch richtig?

\0 kannst du dir sparen, das kann der Compiler selber.

von PittyJ (Gast)


Lesenswert?

Speicherzelle im Chip kaputt, so dass die Bits nicht mehr auf 1 gehen 
können?

von Sebastian (Gast)


Lesenswert?

Hallo,
Danke an euch beide.

Ja es war der Prozessor. Hab ich mir nicht vorstellen können, dass ein 
Prozessor so schnell den Geist aufgibt. Und das auf so eine gemeine Art. 
Den Inhalt vom EEPROM konnte ich nicht auslesen und vergleichen. Also 
hab ich Flash und EEPROM überschrieben und bin auf diesen Fehler 
gestoßen.
Lange Rede kurzer Sinn. Jetzt gehts.

Nochmals Danke und Gruß
Sebastian

von Peter D. (peda)


Lesenswert?

Sebastian schrieb:
> Das funktionierte über 1
> Jahr zuverlässig.

Ich würde mal das Programm durchsuchen, ob irgendwo ständig auf den 
EEPROM geschrieben wird. Solche Programmierfehler können sich durchaus 
erst nach einem Jahr auswirken.

Falls diese Konstanten nie geschrieben werden, würde ich sie besser im 
Flash ablegen.

Brownout hast Du natürlich aktivert?
Ohne BOR ist ein Flippen des EEPROM normal.

von Martin L. (martin_l795)


Lesenswert?

Ist doch klar.... Dein Prozessor wollte eigentlich Holzfäller werden, 
drum "addLumber" :)

von Olga (Gast)


Lesenswert?

Die spannende Frage ist doch: Warum liegen die Strings überhaupt im 
EEPROM? Sollen die zur Laufzeit neu gesetzt werden können?

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.