EEprom verdreht Vorzeichen

Gast #2150204
Lesenswert?

Hallo zusammen .
Ich glaube ich habe ein kleines Problem in meinen Variablen komme 
allerdings nicht auf den Fehler .

Hier mal meine Prozdur die ich durchlaufe und die dann zum Fehler führt

Variablen
1
uint8_t  EEMEM sound ;  
2
char sound_on_off

Das Beschreiben
1
eeprom_busy_wait();
2
eeprom_write_byte(&sound,sound_on_off);      // Sound_on_off hat hier den Wert 1
Das Auslesen
1
eeprom_busy_wait();
2
eeprom_busy_wait();
3
sound_on_off = eeprom_read_byte(&sound); // Nach dem Auslesen habe ich den Wert -1 ?!

Ich bin mir eigenlich ziemlich sicher das ich hier bei den Variablen 
geschlampt habe ich sehe nur leider nicht wo :S
Gast #2150252
Lesenswert?

Peter II schrieb:
> du weißt das ohne
>
> änderung der Fuse der eeprom beim Flashen gelöscht wird?


Ja allerdings wird der Wert erst zur Programmlaufzeit in das Eeprom 
geschrieben .

Ich verstehe es nicht ?!

Naja zur Not werde ich es einfach so schreiben das er jegliche negative 
Vorzeichen entfernen soll .

Wäre aber sehr unschön
Gast #2150259
Lesenswert?

Jan schrieb:
> Naja zur Not werde ich es einfach so schreiben das er jegliche negative
> Vorzeichen entfernen soll .

das wird dir nicht helfen aus einer 2 wird bestimmt keine -2 sondern 
auch eine 255 bzw -1.

Vermutlich ist es egal was du reinschreibst du bekommst immer eine 255 
(-1)!
Gast #2150262
Lesenswert?

Peter II schrieb:
> Vermutlich ist es egal was du reinschreibst du bekommst immer eine 255
>
> (-1)!

Leider genau richtig vermutet ich verstehe aber nicht wieso .

Der Schreibprozess etc also was ich oben mal gepostet habe stimmt doch 
soweit ?!

Und in der Variablen die in das Eeprom geschrieben wird steht auch in 
jedemfall anfangs eine 1
Gast #2150265
Lesenswert?

Jan schrieb:
> Und in der Variablen die in das Eeprom geschrieben wird steht auch in
> jedemfall anfangs eine 1

hofft du oder weisst du?

Was hindert dich eigentlich daran, das ganze im simulator laufen zu 
lassen oder nach den schreiben mal den eeprom auszulesen?
Gast #2150282
Lesenswert?

Ich habe mir ja auf meinem LCD den Wert vor dem Schreibprozess ausgeben 
lassen .

Da ist er noch 1 wie es sein soll .

Direkt nach dem Leseprozess lasse ich mir den Wert wieder ausgeben und 
da ist er dann -1 .

Diese -1 verändert sich auch nicht wenn ich den ursprünglichen Wert auf 
0 setze .
Gast #2150302
Lesenswert?

Hi

>Direkt nach dem Leseprozess lasse ich mir den Wert wieder ausgeben und
>da ist er dann -1 .
>Diese -1 verändert sich auch nicht wenn ich den ursprünglichen Wert auf
>0 setze .

Dann funktioniert dein Schreiben nicht. Eine gelöschte EEPROM-Zelle hat 
den Wert $FF, vorzeichenbehaftet gesehen -1.

MfG Spess
Gast #2150318
Lesenswert?

Ja richtig auf diese eine Fehlerquelle habe ich das Suchen jetzt auch 
eingegrenzt .

Das Problem ist nur das ich vor dieser Routine noch etwa 5 andere EEprom 
Schreibprozesse habe, die genau so funktionieren und auch klappen ?!

Naja ich suche mal nach der Nadel.... :P
#2150376
Lesenswert?

Nach dem Schreiben das eeprom_busy_wait(); nicht vergessen.
Bei vielen Eeproms muss man auch erstmal eine Page erasen, bevor man sie 
beschreiben kann.
Evtl. ist auch ein Schreibschutz gesetzt (hardwareseitig, oder per 
Register).

eeprom_write_byte() im Sourcecode würde uns helfen.

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