Je joue actuellement sur mon application maison avec un PIC128F46K22.
Par Bluetooth je lui envoie des infos qui les stocke dans un buffer de 370 caractères . A chaque réception d'une mise a jour par Bluetooth , j'enregistre le buffer en EEPROM. Ceci afin de retrouver mes infos en cas de coupure de courant par exemple.
Donc au démarrage de mon pic je vais lire mon EEPROM pour remplir mon Buffer avec les valeurs enregistrées et pouvoir faire mon extraction de données sur un buffer correct.
J'ai cru comprendre dans la DS en page 65, dans le memory map, que l'EEPROM commence à 0x10000 .
Avant ma boucle principale, je fais donc :
Code : Tout sélectionner
unsigned int i ;
for(i=0; i<370; i++) // Parcours le buffer
{
Buffer[i] = EEPROM_Read( 0x10000+i);
}
Le HIC c'est qu'a la première utilisation mon buffer est remplit de 0xFF.
Cela fait naturellement planté mon extraction qui attend des caractères de séparation "~" ( comme vu sur mon précédent post).
Du coup je me suis dit que j'allais rusé.
Je vérifie les 5 premiers octets de mon buffer. Si ils sont égales à 0XFF je pourrais considérer que c'est la première fois que je le lis et donc affecté des valeurs cohérentes pour ne pas planté.
Code : Tout sélectionner
unsigned int i ;
for(i=0; i<370; i++) // Parcours le buffer
{
Buffer[i] = EEPROM_Read( 0x10000+i);
}
if ((Buffer[0]==0xFF)&&(Buffer[1]==0xFF)&&(Buffer[2]==0xFF)&&(Buffer[3]==0xFF)&&(Buffer[4]==0xFF))
Buffer[0]="1~2 ~3 ~4 ~5 ~6 ~";
extraction_buffer();Mais cela ne fonctionne pas.
Avez vous déjà initialiser une EEPROM seulement une fois au démarrage ?

