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
le problème est qu'il s'arrête à 256
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(); } } }et j'ai besoin d'atteindre 42000
où est le ik??!!
Partager