Ecriture EEPROM PIC18F2520

Fermé
Maker06 Messages postés 337 Date d'inscription lundi 22 décembre 2008 Statut Membre Dernière intervention 27 décembre 2009 - 22 déc. 2008 à 16:59
Maker06 Messages postés 337 Date d'inscription lundi 22 décembre 2008 Statut Membre Dernière intervention 27 décembre 2009 - 22 déc. 2008 à 19:25
Bonjour à tous,

j'ai besoin de votre aide pour un projet que je veux réaliser, avec comme intelligence un PIC18F2520 de Microschip.
C'est un boitier qui doit commander des appareils en fonction des valeurs que je régle et celles des différents capteurs.
J'ai besoin de sauvegarder différentes valeurs dans l'eeprom du pic au cas-ou il y est une coupure de courant, qu'elles soient bien sauvegardées et que ca commande bien en fonction des dernières valeures réglées.

Je programme avec MPLAB et le boitier ICD 2.
J'ai récupèré les fonctions d'écriture Read_b_eep(); Write_b_eep(,); Busy_eep (); dans MCC18.

Mes problèmes sont les suivant :

Je stocke des variables de type unsigned char dans l'eeprom, elles ne sont pas toujours bien stockées, parfois il me semble qu'il m'est impossible d'écrire dans l'eeprom...
Pour la lecture je récupère les valeurs stockées (lorsque ca marche :) ) pour les afficher sur un afficheur à matrice de leds (fonction affichage marche parfaitement) et ca m'affiche vraiment n'importe quoi, comme si le pic n'avais pas réussi à lire la valeur stockées dans l'eeprom.

Je tiens à préciser que lorsque j'exécute mes fonction qui gérent cela sans passer par l'eeprom mais en déclarant les variables en static unsigned char ca fonctionne trés bien.

Je ne sais pas s'il y a une éventuelle conversion à faire pour convertir les valeur (d'hexa en decimal ? ) et les afficher mais on m'a dit que logiquement non (ce qu'il me semble logique puisque le pic sait différencier l'hexa du décimal).

Enfin ca fait du temps que je suis sur ce problème est je perds patience ne comprenant pas d'ou vient le problème.

Voici comment je lit et écrit dans l'eeprom :

-lecture :

Valeur[0] = Read_b_eep(AD0); // lecture à l'adresse AD0 (définie comme 0x00);
Busy_eep (); // attente

-ecriture :

Write_b_eep(AD0,Valeur[0]); // Sauvegarde dans l'EEPROM
Busy_eep (); // attente

Si quelqu'un a une idée ?

Merci d'avance
A voir également:

1 réponse

Maker06 Messages postés 337 Date d'inscription lundi 22 décembre 2008 Statut Membre Dernière intervention 27 décembre 2009 63
22 déc. 2008 à 19:25
C'est bon on m'a aidé à trouver le problème !!
0