Hallo zusammen, könnt ihr mir bitte sagen, warum der Wert 25 nicht im EEProm abgespeichert wird? Es wird nur der Wert 255 ausgegeben. Das sagt mir, dass dies der Startwert ist und der Wert 25 nicht geschrieben wurde. Muss ich bei der Übertragung des Programms noch etwas beachten- siehe Bild das Programm nicht nur in den Flashspeicher übertragen, sondern auch in den EEProm? Das habe ich auch versucht- siehe Bild- kein Erfolg Vielen Dank im Vorraus für Eure Hilfe. Viele Grüße, Matthias.
Hast du das EESAVE - Fusebit eventuell gesetzt ?
Matthias H. schrieb: > das Programm nicht nur in den Flashspeicher übertragen, sondern auch in > den EEProm? Das habe ich auch versucht- siehe Bild- kein Erfolg Du musst schon etwas ins EEPROM übertragen. Aber das ist nicht das Programm. Die Toolchain hat dir eine Datei mit der Endung EEP erstellt. Die muss ins EEPROM gebrannt werden.
Vielen Dank für Deine Hilfe!! Das stand leider nirgends und selber bin ich nicht drauf gekommen. Viele Grüße und noch einen schönen Tag wünsche ich.
Hallo nochmal, wie verhält es sich mit dem Schreiben von EEPromdaten aus dem Programm heraus? Das funktioniert auch noch nicht. wenn das Prgramm so aussieht, dann zeigt er mir den Wert 99 an. myByte = 99; eeprom_write_byte(&eeFooByte, myByte); // schreiben myByte=0; myByte = eeprom_read_byte (&eeFooByte); lcd_ini(); lcd_writezahl(2,1,myByte); das geht dann, wenn ich dann aber die Zeilen herausstreiche, myByte = 99; eeprom_write_byte(&eeFooByte, myByte); // schreiben da ja schon im ebend gezeigten Code in den EEProm geschrieben wurde, dann zeigt er mir im unten stehenden Code nur noch 255 an. den unten stehenden Code schreibe ich ja nur in den Flash. kann es sein, das das Häkchen in AVR Studio5 "Erase device before programming" nicht gesetzt werden darf? -siehe Bild ohne Häkchen erhalte ich aber eine böse Fehlermeldung, wieso eigentlich? Könnt ihr mir bitte sagen was daran jetzt nicht stimmt? Dann habe ich es hoffentlich verstanden. Viele Grüße, Matthias. anbei vollständiger Code, wo nur 255 als EEPromwert ausgegeben wird #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #define LCD_Port PORTB //PORTB fürs LCD muss im Hauptprogramm noch deklariert werden #include "E:\Eigene Dateien\Dropbox\Atmel AVR\AVR Programme\1aVorlagen\lcd_tools2.c" #include <stdint.h> #include <avr/eeprom.h> /* Byte */ uint8_t eeFooByte EEMEM; int main(void) //zur Konfiguration des Test- Programms { DDRB=0xff; //LCDPORT als Ausgang uint8_t myByte=0; //myByte = 99; //eeprom_write_byte(&eeFooByte, myByte); // schreiben myByte=0; myByte = eeprom_read_byte (&eeFooByte); lcd_ini(); lcd_writezahl(2,1,myByte); while (1);
- Ohne gesetztes EESAVE Fusebit wird bei einem (benötigtem!) ChipErase das EEPROM gelöscht. - Bedenke das bei jedem Kompilieren völlig andere Adressen für deine EEMEM Variable benutzt werden können.
Hallo, vielen vielen Dank Euch allen nochmals. :-) Jetzt funktioniert alles. Es lag an dem nicht gesetzten Fusebit. Das wußte ich auch nicht und war mir neu. Viele Grüße, Matthias.
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.