hallo! Die Funktion aus dem Anhang soll pro Schleifendurchlauf zwei int Werte aus dem EEPROM holen und an die Funktion übergeben. Das macht sie aber nicht, warum verstehe ich nicht :-( Danke schonmal für eure Hilfe Tobias
Irgendwie ergibt Dein C-Code keinen Sinn: *ptr_to_eeprom=tmp; length = *ptr_to_eeprom; Das schreibt zunächst tmp ins EEPROM (dahin wo auch immer ptr_to_eeprom gerade hinzeigt) und liest daraufhin length von der Stelle aus dem EEPROM, wo Du gerade tmp hingeschrieben hast. Gleich darauf machst Du sowas nochmal. Christian
"... warum verstehe ich nicht :-(" Weil Du das Datenblatt nicht gelesen hast !!! Du kannst noch so lange einen Pointer ptr_to_eeprom nennen, er zeigt trotzdem stur ins SRAM ! Also ab und erstmal das Datenblatt gelesen. In den neueren (ATMega8515) sind sogar fix und fertige C-Beispiele. Peter
hallo! Ich hab das Beispiel aus der Codevision - Hilfe verwendet, ich dachte nicht, dass das nicht geht. Die neue Funktion ist im Anhang (gebastelt aus dem Datenblatt) sie meldet: undefined symbol EEWE und EERE was muss ich machen, damit das tut?
"Ich hab das Beispiel aus der Codevision - Hilfe verwendet" Sorry, hatte das "Codevision" übersehen. Wenns da so steht dann sollte es ja auch gehen. Beim AVR-GCC muß man es so machen, wie im Datenblatt (io.h includieren) oder die Macros aus eeprom.h benutzen. Beim ACR-GCC zeigen Pointer immer in den SRAM, Ausnahme Funktionspointer, die zeigen ins Flash. Der Codevision hat eine nicht dem C-Standard entsprechende Erweiterung, (eeprom *) zeigt dann wohl wirklich in den EEPROM, aber eben nur beim Codevision. Du must aber auf alle Fälle dem Pointer ptr_to_eeprom eine Adresse zuweisen, sonst gehts in den Wald. Peter
ich versteh trotzdem net wie ich das im Codevision machen muss, hat vllt. einer nen Link oder so dazu? Ich find leider nix :-( Weil ne Adresse zuweißen tu ich eigendlich... :/ Tobias
"Weil ne Adresse zuweißen tu ich eigendlich... :/" wo denn ? ptr_to_eeprom = DieAdresseVonDerIchLesenWill; DieVariable = *ptr_to_eeprom; // und nun lese ich Peter
Würde mit Codevision nicht mittels Pointer aufs EE zugreifen. Besser gehts mit einem Array. Da brauchst keine Adressen usw. Das Problem ist, dass du mit int-Pointern nur auf int-Werten zugreifen kannst. char Temp; char eeprom Stm_Sp[500]; //Array für 500 EE-Bytes Temp = Stm_Sp[2]; //Liest den 2. Wert aus dem EE-Array Stm_Sp[2] = 12; //schreibt 12 in das EEprom. SG chose
Adresszuweisungen sollten so aussehen: ptr_to_eeprom = &tmp[0]; //Was soll tmp sein ? Literaturtip: C für Mikrocontroller, Burkhard Mann SG
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.