====== 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}}