#include <avr/io.h> #include <avr/eeprom.h> //Pour pouvoir utiliser les fonctions d'acces à l'EEPROM #include <avr/interrupt.h> //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; }
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 <avr/io.h> #include <avr/eeprom.h> 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; }