www.mikrocontroller.net

Forum: Gesperrte Threads Eeprom Hilfe !


Autor: Dirk k. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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
Autor: Dirk k. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achja Controller AtMega168 und code_length ist ein char und
code_fest ist eine int .

Autor: Dirk k. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Keiner irgendeinen Tipp .Das Tutorial bringt mich hier auch nicht weiter 
:S

Autor: anfängor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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__...

aber anscheinend hast du nichmal C verstanden ..
sonst wüstest du weil dein compiler gemeckert hätte das
eeprom_read_block(&code_length,(uint8_t*)0,1);

schonmal nicht gehen kann

Autor: SF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
#include <avr/io.h>
#include <avr/eeprom.h>

// initialize eeprom data
uint8_t   my_ee_byte EEMEM = 123;
uint16_t  my_ee_uint EEMEM = 12345;


int main(void){
uint8_t   my_ram_byte;
uint16_t   my_ram_uint;

  // main loop
  for(;;){
    // read eeprom variables
    eeprom_read_block(&my_ram_byte,&my_ee_byte,sizeof(my_ram_byte));
    eeprom_read_block(&my_ram_uint,&my_ee_uint,sizeof(my_ram_uint));
  };

  return(0);
}

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wichtige Regeln - erst lesen, dann posten!
•Aussagekräftigen Betreff wählen
•Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.