Romica_t Postat Aprilie 25, 2013 Partajează Postat Aprilie 25, 2013 Va salut, am un PIC24HJ128GP504 si vreau ca din cand in cand (la apasarea unui buton) sa salvez in memoria program un numar astfel incat numarul sa nu dispara la intreruperea alimentarii. Picul nu are EEPROM.Am luat de pe pagina Pic-ului de la Code Examples, CE209 - Run-Time Self Programming of FLASH Program Memory si functioneaza intr-o anumita masura, numarul il pot incrementa la apasarea butonului, el ramane acolo si la repornire dar nu mai pot face mai nimic.Apar tot felul de anomalii, cea mai frecventa este ca tot ansamblul Pic+lcd isi da reset intruna, desi am o bucla while infinita (cea de monitorizare a butonului). De asemenea nu pot lucra cu unele variabile, nu pot adauga o instructiune "for", spre exemplu:for(i=0;i<2;i++) FillRectangle(200,10,220,30,GREEN);nu functioneaza, picul isi da restart, afiseaza rapid numarul pe ecran, incrementat de fiecare data si o ia de la capat. In schimb daca elimin for-ul si las doar FillRectangle functioneaza pentru doua apeluri dar daca mai adaug al treilea apel, intra in acea restartare continua, ca si cand apare un conflict intre instructiuni.Stiu ca este o problema mai delicata deoarece opereaza in memoria program si sunt sanse mari sa faca prostii dar nu ma pricep prea bine la acest nivel si as aprecia ajutorul vostru.Va multumesc. Link spre comentariu
sofian Postat Aprilie 25, 2013 Partajează Postat Aprilie 25, 2013 cred ca problema este de la watchdog timer care este enable Link spre comentariu
Romica_t Postat Aprilie 25, 2013 Autor Partajează Postat Aprilie 25, 2013 cred ca problema este de la watchdog timer care este enableIn fisierul main.c apare aceasta setare_FWDT(FWDTEN_OFF); // Watchdog Timer Enabled/disabled by user softwaredeci este disabled.Totusi la coada fiserului apare aceasta functie pentru interupt:void __attribute__((interrupt, no_auto_psv)) _DefaultInterrupt(void){ while(1) ClrWdt()}Din partea cui vine poate veni acel interupt? De oriunde? Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum