Moin Moin, ich versuche gerade vergebens einige Werte in den EEprom des AVR zu schreiben. Scheinbar stürzt er irgendwie ab... Im Simulator funktioniert alles so wie es soll. Gibt es noch irgendwas zu beachten? Hier der Code: #include <avr/io.h> #include <stdint.h> #include <avr/interrupt.h> #include <avr/eeprom.h> int main (void) { int i=0; int Versuch[50]; for (i=0;i<=50;i++) { Versuch[i]=0; } eeprom_write_block(Versuch,0,sizeof(Versuch)); } Nach dem Auslesen des EEprom sollten die ersten 100Byte 0 sein. Im Sim. ist es auch so... Danke Malte
Malte wrote: > for (i=0;i<=50;i++) { > Versuch[i]=0; > } Hier schreibst du schonmal ein int zu viel in den Speicher, richtig ist "i<50".
Versuchs mal mit : int EEMEMVersuch[50] EEMEM; int main (void) { int i=0; int Versuch[50]; for (i=0;i<50;i++) { Versuch[i]=0; } eeprom_write_block(&Versuch,&EEMEMVersuch,sizeof(Versuch)); } Null erscheint mit keine gültige Pointer Adresse.
Hmm, kein Unterschied. Im Sim läufts, auf dem Chip nicht. Malte
0 als Adresse ist voellig o.k. Wie hast du ueberprueft, dass die Daten nicht ankommen?
Hi, ich benutze AVR-Studio, den Avr Programmer(MK2), und den gcc. Den EEProm kann man dann ja mit der Oberfläche zurücklesen, und z.B. direkt in den Debugger laden. Beim Verifizieren stell das Studio den Unterschied von 0xFF zu 0x00 im Sim. EEprom fest. Malte
Malte wrote: > Hmm, > kein Unterschied. Im Sim läufts, auf dem Chip nicht. > Malte Der µC-Core läuft schon an, bevor die Spannung für den EEPROM hoch genug ist? Versich zu Anfang von main() mal ne Warteschleife von 10ms oder so.
Moin, der Fehler war ein noch aktivierte Watchdog Fuse... Blöder Hund Aber trozdem Danke Malte
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.