Cédric_T_74
-
Modifié par Cédric_T_74 le 29/03/2011 à 15:14
Bonjour,
Voici mon problème, je souhaite conserver la valeur d'une variable dans la mémoire EEPROM]de mon pic16f84 après une coupure d'alimentation.
Le but global de mon programme et de pouvoir changer le sens de rotation d'un moteur après une coupure.
Le problème est que lorsque je rajoute la fonction Ecriture_EEPROM(), le programme a un déroulement incompréhensible.
En effet, il ne reste pas dans la boucle infinie while(1).
le programme s'exécute de nouveau depuis le début toutes les 5 secondes environs.
La conséquence est que mon moteur change de sens de rotations toute les 5 secondes.
Je constate que la lecture et l'écriture fonctionne, mais c'est deux fonctions affectent le bon fonctionnement de mon programme.
//------------------------Fonction ecriture dans L'EEprom de donnée--------------------
void Ecriture_EEPROM(char cAdres, unsigned char cVal)
{
while(WR); // Dès le passage de ce bit à 0,
EEADR=cAdres; // placer l'adresse d'écriture dans EEADR
EEDATA=cVal; // Placer l'octet a mémoriser dans EEDATA
WREN=1; // Ce bit à 1 autorise l'écriture
GIE=0; // Bloque les interruptions
EECON2=0x55;
EECON2=0xAA;
WR=1; // Active l'écriture
GIE=1; // autorise les interruptions
WREN=0; // interdit écriture dans eeprom
}
//------------------------Fonction lecture dans L'EEprom de donnée--------------------
char Lecture_EEPROM(char cAdres)
{
while(RD); // Dès le passage de ce bit à 0,
EEADR=cAdres; // placer l'adresse à lire dans le registre EEADR
RD=1; // Après placement de ce bit à 1
return EEDATA; // la donnée lue est mise dans EEDATA.
}