====== Utiliser l'EEPROM ====== ===== Exemple 1: Lecture - Ecriture d'un octet ===== #include #include //Pour pouvoir utiliser les fonctions d'acces à l'EEPROM #include //Pour pouvoir utiliser cli et sei int main (void) { unsigned char port; DDRB = 0x00; //Met le port B en entrée DDRC = 0xFF; //Met le port C en sortie port = PINB; //Lit le PORTB et met la valeur dans la variable port while(!eeprom_is_ready()); //On attend que l'EEPROM soit prête cli(); //Désactive les intéruptions eeprom_write_byte (0x00, port); //On écrit la valeur de port dans l'EEPROM à l'adresse 0x00 sei(); //Active les intéruptions while(!eeprom_is_ready()); //On attend que l'EEPROM soit prête cli(); PORTC = eeprom_read_byte (0x00); //On lit l'adresse 0x00 de l'EEPROM et on l'envoie sur le port C sei(); return 1; } {{:avr:winavr:eeprom1.jpg|:avr:winavr:eeprom1.jpg}} ===== Exemple 2: Initialiser des valeurs dans l'EEPROM ===== Pour fixer une valeur à une variable située dans l'EEPROM lors de la programmation du [[:microcontrôleur]], il vous suffit d'indiquer EEMEM (zone mémoire EEPROM) après votre type de variable.\\ L'accès à cette variable se fait de la même manière que dans l'exemple précèdent, sauf qu'au lieu de mettre directement l'adresse on utilise la notation &un (adresse de un).\\ #include #include unsigned char EEMEM un = 1; //On déclare un dans l'EEPROM et on lui donne la valeur 1 unsigned char EEMEM deux = 2; //On déclare deux dans l'EEPROM et on lui donne la valeur 2 int main (void) { DDRB = 0xFF; PORTB = eeprom_read_byte (&un) + eeprom_read_byte (&deux); //1+2=3 :p return 1; } {{:avr:winavr:eeprom2.jpg|:avr:winavr:eeprom2.jpg}} ===== Exemple 3: Initialisation, lecture et écriture===== On lit //un// et //deux// et on met la somme dans //resultat//. #include #include unsigned char EEMEM un = 1; unsigned char EEMEM deux = 2; unsigned char EEMEM resultat; int main (void) { eeprom_write_byte(&resultat,eeprom_read_byte (&un) + eeprom_read_byte (&deux)); return 1; } {{:avr:winavr:eeprom.gif|:avr:winavr:eeprom.gif}}