Morgen, irgendwie wird mein EEPROM-Wert nicht gespeichert. Als Controller verwende ich einen Atmega88 und den GCC Compiler mit dem AVR-Studio. Ich ich habe die EEPROM-Variable folgendermaßen deklariert: volatile uc_8 Just _attribute_ ((section (".eeprom"))); Im AVR-Studio habe ich unter Memory Settings folgende Definitionen gemacht: Memory Type: EEPROM / Name: .eeprom / Adress: 0x380 So müsste die Variable doch an der Speicheradresse 0x380 gespeichert werden. Nach einem Reset stehen dort auch die richtigen Werte, nur sobald die Spannung einmal abgeschaltet und wieder eingeschaltet wird, ist der Wert futsch. Kann mir einer sagen, woran das liegen kann? Gruß
Was ist damit:
1 | #include <avr/eeprom.h> |
2 | |
3 | uint8_t test EEMEM = 5; |
4 | uint8_t check EEMEM; |
5 | |
6 | int main() |
7 | {
|
8 | uint8_t i = eeprom_read_byte( &test ); |
9 | eeprom_write_byte( &check, i ); |
10 | |
11 | while( 1 ) |
12 | ;
|
13 | |
14 | return 0; |
15 | }
|
Einfach im AVR Studio ein neues Projekt anlegen. Keine Memory Settings oder sonstwas angeben.
Wie kann ich der Variablen "check" direkt einen Wert zuweisen? Mit eeprom_write_byte( &check, 128 ); klappt dass nicht. Auch unsigned int z = 128; eeprom_write_byte( &check, z ); klappt nicht...
Günni wrote: > Wie kann ich der Variablen "check" direkt einen Wert zuweisen? > > Mit eeprom_write_byte( &check, 128 ); klappt dass nicht. Klappt bei mir einwandfrei
Jetzt klappt es bei mir auch, Danke! Ist es eigentlich möglich, einen bestimmten Speicherbereich des EEPROMS auszulesen, also nur mit angabe der Adresse?
Günni wrote: > Ist es eigentlich möglich, einen bestimmten Speicherbereich des EEPROMS > auszulesen, also nur mit angabe der Adresse? Meinst du jetzt per Programm oder willst du über deinen ISP-Programmer auslesen. Per Programm: Klar. Mach ein unsigned char Array in der benötigten Größe und benutze eeprom_read_block()
Hallo, irgendwie hab ich bei mir festgestellt, das der Wert nicht im EEPROM sondern im SRAM abgelegt wird. Ich benutze den JTAGICEmkII mit dem AVR-Studio. Im Watch Fenster wird die Variable mit der Location SRAM angezeigt. Wie kann das sein?
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.