[PIC]Enregistrer un Long dans l'EEPROM
bonjour,
je suis en train de programmer un PIC (18F1320) et j'ai besoin de le Redémarrer (reset_cpu) de temps en temps. J'utilise une variable que j'ai besoin de "sauvegarder" entre les RESET, pour cela j'utilise l'EEPROM interne du pic.
voilà mon code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
unsigned long nb = 0;
//Ecrire dans l'EEPROM un long "data" à partir de l'adresse "n"
void WRITE_LONG_EEPROM(long int n, long data) {
int i;
for (i = 0; i < 4; i++)
write_eeprom(i + n, *(&data + i) ) ;
}
//Lire depuis l'EEPROM partir de l'adresse "n"
unsigned long READ_LONG_EEPROM(long int n) {
int i;
unsigned long data=0;
for (i = 0; i < 4; i++)
*(&data + i) = read_eeprom(i + n);
return(data);
}
void main()
{
nb=1;
switch(restart_cause())
{
case RESET_INSTRUCTION : //appel de la fonction reset_cpu
nb=READ_LONG_EEPROM(0);//Lecture du nb sauvegardé
printf("RESET %lu\r",nb);
break;
case NORMAL_POWER_UP : //1ere alimentation du PIC
printf("POWER UP %lu\r",nb);
break;
}
while(true)
{
nb*=2;
if(nb%5==0)//on entregistre toute les 5 boucles, et on reset
{
WRITE_LONG_EEPROM(0,nb);//Sauvegarde de nb dans l'EEPROM
reset_cpu();
}
}
} |
le problème est qu'il s'arrête à 256 :aie: et j'ai besoin d'atteindre 42000 :aie:
où est le ik??!!