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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.