Guten Tag,
ich habe ein Problem beim Speichern im internen eepromm des atmega128.
und zwar möchte ich einen wert von der sd-card ins eeprom speichern
leider haut das nicht hin.
Der Wert zb.016 schreibe ich mit dem Pc auf die sd-carte,dann kommt die
sd-carte ins Mikrocontroller-Board wird auch erkannt,
aber im eeprom steht dann aber 128.
vielleicht kann mir wer weiterhelfen.
So auf meiner karte steht der wert 016 den kann ich mir auch af meinen
Display Ausgen 016
Aber im eeprom steht dann mit PonyProg ausgelesen
HEX 80
Dezimal 128
es sollte aber drin stehen
HEX 10
Dezimal 16
Ich nutze die Routinen aus der Lib #include <avr/eeprom.h>
Wenn ich zb einen Wert an speicheradresse null schreibe geht das
EEPWriteByte( 0, 20);
Wiegesagt auf der speicherkarte steht der Wert 016 in Dezimal mit dem Pc
erstellt.
Ich kann den Wert auch auf dem Display anzeigen
aber der Wert will einfach nich ins eeprom
Bist Du Dir eigentlich sicher, dass Deine Sequenz überhaupt durchlaufen
wird?
Ich habe keine Ahnung, was der Compiler mit if (...); (direkt gefolgt
von einem Semikolon) macht.
Ich kenne ja Dein Fopen nicht, wenn sie aber von mir wäre, müsste der
Aufruf: "if(Fopen(rom,F_READ)==F_OK)" lauten.
Ein einfacher Test wäre: Alles ausklammern und nur:
EEPWriteByte(0, 16);
übrig lassen.
Wolfgang schrieb:> d = buffer[0]*100 + buffer[1] + buffer[2];
prinzipiell erst mal:
d = buffer[0]*100 + buffer[1]*10 + buffer[2];
###
Aber!
stehen in buffer eigentlich ASCII Zeichen oder ist das schon binär?
Wenn ASCII dann
d = ( buffer[0]-'0' ) * 100 +
( buffer[1]-'0' ) * 10 +
( buffer[2]-'0' );
aber warum so kompliziert und selber rechnen. Du hast dir ja vorher
schon ein abschliessendes '\0' Zeichen reingemacht, um einen gültigen
String zu erhalten. atoi ist mehr als glücklich, wenn du ihm diesen
String vorwerfen würdest und es dir die zugehörige Zahl dazu nennen darf
d = atoi( buffer );
Wenn du nicht verstehst was, wann und warum in deinem Programm vor sich
geht, dann musst du dir eben Zwischenergebnisse irgendwo ausgeben
lassen, damit du genau das siehst. Zb. wie sich Werte aus anderen Werten
zusammensetzen. Es ist ein Trugschluss, dass man gerade als Anfänger
ohne Ausgabemöglichkeit auskommt. Ein LCD oder ein Terminal an einer
UART leistet unschätzbare Dienste und Hilfen beim Debuggen eines
Programms.