Ich versuche schon die ganze Zeit mit der EEprom Block Anweisung einmal einen int Wert und einmal einen char Wert in's EEprom zu schreiben . Hier mal ein Versuch von mir : eeprom_busy_wait(); eeprom_read_block(&code_length,(uint8_t*)0,1); eeprom_busy_wait(); eeprom_read_block(&code_fest ,(uint8_t*)20, sizeof(code_fest)); ...analog dazu habe ich die write Anweisung gemacht Um den genauen Platz im EEprom-Speicher habe ich mich erstmal selbst gekümmert wie man sieht . Ich habe zwar schon rumgesucht aber keine Antworten gefunden . Vielleicht hat ja jemand eben die Geduld mir zu erklären welche Variablen und Daten wie von dieser Anweisung erwartet werden . Eben einmal für char Variablen mit gespeicherten Zahlen und einmal für int Variablen mit gespeicherten Zahlen ?!
:
Verschoben durch User
Achja Controller AtMega168 und code_length ist ein char und code_fest ist eine int .
dann hast du das tut nicht gelesen bzw halbwegs verstanden ... Bytes lesen/schreiben Die avr-libc Funktion zum Lesen eines Bytes heißt eeprom_read_byte. Parameter ist die Adresse des Bytes im EEPROM. Geschrieben wird über die Funktion eeprom_write_byte mit den Parametern Adresse und Inhalt Block lesen/schreiben Lesen und Schreiben von Datenblöcken erfolgt über die Funktionen eeprom_read_block() bzw. eeprom_write_block(). Die Funktionen erwarten drei Parameter: die Adresse der Quell- bzw. Zieldaten im RAM, die EEPROM-Addresse und die Länge des Datenblocks in Bytes (size_t). wenn du jetzt noch den hinweis auf die avrlib liest ... http://www.nongnu.org/avr-libc/user-manual/modules.html und unter eeprom nachschaust http://www.nongnu.org/avr-libc/user-manual/group__avr__eeprom.html aber anscheinend hast du nichmal C verstanden .. sonst wüstest du weil dein compiler gemeckert hätte das
1 | eeprom_read_block(&code_length,(uint8_t*)0,1); |
schonmal nicht gehen kann
Hier mal ein Beispiel, wie man ein Byte (my_ee_byte) und ein unsigned int (my_ee_uint) im Eeprom definiert und später in der Hauptschleife in zwei Ram Variablen (my_ram_byte und my_ram_uint) ausliest:
1 | #include <avr/io.h> |
2 | #include <avr/eeprom.h> |
3 | |
4 | // initialize eeprom data
|
5 | uint8_t my_ee_byte EEMEM = 123; |
6 | uint16_t my_ee_uint EEMEM = 12345; |
7 | |
8 | |
9 | int main(void){ |
10 | uint8_t my_ram_byte; |
11 | uint16_t my_ram_uint; |
12 | |
13 | // main loop
|
14 | for(;;){ |
15 | // read eeprom variables
|
16 | eeprom_read_block(&my_ram_byte,&my_ee_byte,sizeof(my_ram_byte)); |
17 | eeprom_read_block(&my_ram_uint,&my_ee_uint,sizeof(my_ram_uint)); |
18 | };
|
19 | |
20 | return(0); |
21 | }
|
Wichtige Regeln - erst lesen, dann posten! •Aussagekräftigen Betreff wählen •Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)