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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 et j'ai besoin d'atteindre 42000

où est le ik??!!