begin process at 2012 05 29 16:57:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Divers

 > 

Problème ecriture dans l'EEPROM d'un pic16f84


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème ecriture dans l'EEPROM d'un pic16f84

mardi 29 mars 2011 à 15:40:51 | Problème ecriture dans l'EEPROM d'un pic16f84

cedric74800

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.
Avez-vous des idées sur le problème ?
j'utilise le compilateur CC5X, programmager ICD2.
Merci d'avance
Cédric
--------------------------------------------------------------------------------------
#pragma cdata[0x2100]
// Protocotype des fonctions
void InitPIC(void);
unsigned char Lecture_EEPROM(char cAdres);
void Ecriture_EEPROM(char cAdres, unsigned char cVal);
// Déclarations des variables$
unsigned char cData; // donnée à conserver en mémoire
char adresse; //adresse en Eeprom
void main(void)
{
// Initialisation du PIC
InitPIC();
adresse=0x00;
// Lecture dans l'EEPROM
cData= Lecture_EEPROM(adresse);
cData= (!cData); // Inverse l'état
RB4 = cData; // Teste de l'état avec une led
// Ecriture dans l'EEPROM
Ecriture_EEPROM(adresse, cData);
//Ecriture des actionneurs
while(1){
if( cData == 1){ // SENS 1
RB2= 1;
RB3= 0;
}else{ // SENS 2
RB2= 0;
RB3= 1;
}
}
}
void InitPIC(void)
{
TRISA.0 =1;
TRISA.1 =1;
TRISA.2 =1;
TRISA.3 =1;
TRISA.4 =1;
TRISB.0 =1;
TRISB.1 =0;
TRISB.2 =0;
TRISB.3 =0;
TRISB.4 =0;
TRISB.5 =0;
TRISB.6 =0;
TRISB.7 =0;
EECON1=0b00000000 ;
INTCON =0b10001000 ;
OPTION =0b10000011 ;
RB4=0;
}
//------------------------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.
}


Cette discussion est classée dans : void, ecriture, char, eeprom, cdata


Répondre à ce message

Sujets en rapport avec ce message

Ecriture/lecture dans un fichier [ par SneakGuy ] Haaa... Merci, sa m'a aider... Enfin, j'ai encore plusieurs problemes...pour l'ecriture j'ai quelque chose qui ressemble a sa:char user[20];char pass[ ecriture fichier txt turboC++ [ par idk ] qqun connais une fonction, qui te place le cursor, (dans un fichier),CAD qui renvoie à la ligne suivante exemple char prenom="tom"char nom="bauq" Et d petite question mais ke j'ai besoin [ par superoi ] bon \jour je sais que c'est con mais j'ai vraiment besoin de savoir c'est pour savoir si ca existe en c ca : long (*f)(void)(char *str); et est ce pb eof en C++ le dernier element est lu 2 fois :( [ par panini21 ] salut a tousvoila g un prog qui permet de creer une 'bibliotheque de jeux'a savoir :les renseignement du jeu sont le prix, le nom, la descriptiopn et PROBLEME NETSEND [ par zzzzzz ] En fait j'essaye d'envoyer un message par la fonction net send via internet a ordi qui posssede xp. Si je mjet mon ip ca marche et si je met l'ip de q chui en BUGG depuis et sans reponse [ par louatiamin ] pour ceux ki ne connaisse pas TC++ 3.0(sous dos) et ne connaisse rien sur les librairie statique ou bien le mode real 16bits c est vraiment unitile d Pb affichage bmp envga c/asm [ par 030417 ] Bonjour à tous,Je suis en train d'essayer d'afficher un bmp en c avec asm sous dos en vga (13h) . j'utilise comme compilateur borland c++ 3.0, mais je Probleme avec une liaison serie [ par xtrememan ] Voila je dois effectuer une reception de trame avec une liaison serie par le biais d'un programme en C. J'ai reussis l'emission,mais je reste bloquer Memory Pool [ par guiguikun ] Bonjour,j'ai téléchargé la partie du code source de Quake3 releasé par ID Software par curiosité.Je l'ai lu pour voir un peu comment le jeu fonctionna


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,030 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales