mircang9 Postat Martie 6, 2012 Partajează Postat Martie 6, 2012 am activat watchdogul care reseteaza la 500ms CPU si scriu codul asa: unsigned int contor;contor=0;while(pinintrare==1){ contor++; // 2us dureaza o incrementare. Fcy = 12MHz. Fosc = 48 MHz.}CLRWDT();La un moment dat pinintrare nu mai trece in zero si ramane "la infinit" in 1 logic.Variabila contor se incrementeaza pana la maxim adica 65535 si: ..... ???? pana vine reset CPU la watchdog ce se intampla cu variabila contor ? unde ramane ? cu ce valoare ramane ? ... cu 65535 care se suprascrie ? sau se intampla ceva de genul: sa zicem ca am un registru de 3 biti ( nu de 16 ) si numara asa: 000, 001, 010, 011, 100, 101, 110, 111 -->> 1000 ( aici se reseteaza cu transport unu in stanga ). Inseamna ca atunci cand ajunge la 65535 si mai se incrementeaza odata se reseteaza, nu ? Unde baga bitul 1 de transport stanga ? Inseamna ca pana apare reset de watchdog contor ajunge la 65535 si se reseteaza adica o ia de la zero si asa mai departe pana apare reset de la watchdog, nu ? Editat de Madalina: modificare nume subiect Rog moderatorul de aici sa modifice numele daca gaseste unul mai potrivit. Link spre comentariu
Liviu M Postat Martie 6, 2012 Partajează Postat Martie 6, 2012 Da, cred ca o ia de la 0 (si probabil seteaza bitul Carry din status). Daca vrei sa tii contorul intr-o anumita stare, poti sa-l incrementezi numai cand e mai mic decat valoarea tinta: unsigned int contor;contor=0;while(pinintrare==1){ if(contor < 65530) contor++; // 2us dureaza o incrementare. Fcy = 12MHz. Fosc = 48 MHz.}CLRWDT(); O sa dureze ceva mai mult, da' n-ar trebui sa fie mult. Link spre comentariu
mircang9 Postat Martie 7, 2012 Autor Partajează Postat Martie 7, 2012 Uitasem de bitul Cary din STATUS. 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