Liviu M Postat August 31, 2012 Partajează Postat August 31, 2012 Buna ziua.void interrupt(void) { PORTA=0b00000001;... DELAY_MS(100);}Cum e legat butonul la RB7?Nu stiu daca de aici se trage, da' nu stergi nicaieri informatia despre intreruperea tratata (RBIF in cazul tau).In mod normal rutina ar trebui sa se uite cine a generat intreruperea, sa execute codulnecesar si sa stearga informatia despre intrerupere: void interrupt(void) { if(RBIF && RBIE) //testezi daca intreruperea e de la RB; eventual pentru mai multe butoane testezi si butonul { PORTA=0b00000001; DELAY_MS(100); PORTA=0b00000000; DELAY_MS(100); PORTA=0b00000001; DELAY_MS(100); PORTA=0b00000000; DELAY_MS(100); PORTA=0b00000001; DELAY_MS(100); PORTA=0b00000000; DELAY_MS(100); RBIF = 0; //stergi flagul }}Mai multe detalii gasesti in data-sheet. Link spre comentariu
nnnnnn Postat August 31, 2012 Partajează Postat August 31, 2012 Vad ca RBIF nu se face 1 daca apas pe buton.am incercat cu if(RBIE && RBIF ) {} si if(RBIF){} si nu se verifica nici una.Asa scrie si in datasheet despre RBIF "cleared in software" dar nu merge.Schema am simulat-o in PROTEUS .-butonul intre RB7 si + ,LED ul legat direct de uc pe A0...n-a mers-am pus o rezistenta intre RB7 si - astfel incat sa fie pe 0 cand nu apas butonul ...nici asa n-a mers Link spre comentariu
Liviu M Postat August 31, 2012 Partajează Postat August 31, 2012 A0 e, dupa reset, intrare analoga, asa ca daca nU faci A0 I/O digital (CMCON=0x07 parca, verifica in data-sheet la comparator (?)) sunt sanse sa mearga ciudat.Pentru LED in montajul practic/fizic trebuie rezistenta de limitare a curentului, altfel poti avea surprize.In rest, am gresit la sterul RBIF. Ca sa-l stergi trebuie intai sa citesti PORTB (ca sa ai aceeasi stare intre intrare si ce are portul in registii) si duoa aia sa stergi flagul. De ce nu se activeaza intreruperea n-am idee. This interrupt can wake the device from SLEEP. Theuser, in the interrupt service routine, can clear theinterrupt in the following manner:a) Any read or write of PORTB. This will end themismatch condition.b) Clear flag bit RBIF.A mismatch condition will continue to set flag bit RBIF.Reading PORTB will end the mismatch condition andallow flag bit RBIF to be cleared. Link spre comentariu
nnnnnn Postat Septembrie 1, 2012 Partajează Postat Septembrie 1, 2012 Nu pot sa-mi dau seama de ce nu se face flag-ul acela 1.Am sters if-ul acela si am facut citirea portului inainte de stergerea lui RBIF .. x=PORTB;....RBIF=0; si merge adica nu mai repeta rutina de intrerupere la infinit cum facea inainte.CMCON=0b00000111 nu pare sa aibe efect.Multumesc. Link spre comentariu
Liviu M Postat Septembrie 2, 2012 Partajează Postat Septembrie 2, 2012 Poti pune o poza cu schema (ceva sa se poata deschide oriunde - jpeg, png, pdf...)?Am vaga senzatie ca la tine cand butonul nu e apasat intrarea e in aer.Ca sa detecteze schimbarea de stare *), o intrare trebuie sa primeasca 2 stari logice distincte si bine definite. Adica sa fie la un potential "in repaus" si la alt potential "activata". La butoane se foloseste de obicei o rezistenta legata intre pin si, sa zicem, VDD (5V) si butonul intre pin si (mai ramane) masa/GND. Cat timp butonul nu e apasata intrarea e trasa de rezistenta la VDD (pull-up), cand apesi butonul (poti pune si 100 nF in paralel cu el) intrarea e pusa la masa.Poti folosi si varianta "inversata" - resitenta spre masa (pull-down) si butonul spre VDD, da' cred ca prima varianta e mai populara (oate si pentru ca la portul B poti activa rezistentele interne de pull-up si economisesti o rezistenta).*) De fapt recomandarea generala e ca nici o intrare de CI sa nu ramana in aer (neconectata). Chiar si intrarile nefolosite e bine sa fie legate la un potential stabil (masa sau VDD). Link spre comentariu
Vlad Mihai Postat Septembrie 8, 2012 Partajează Postat Septembrie 8, 2012 Dacă am codul sursă, cum îl compilez cu mplab ide pentru un pic16f876A în hex? are cineva timp să îmi explice? mulțumesc!Sau poate îl compilează cineva pentru mine. Link spre comentariu
Stefan Postat Septembrie 8, 2012 Partajează Postat Septembrie 8, 2012 ala e mikroC toata ziua (si noaptea)! ce ai de gand sa faci cu mplab-ul la codul ala ?testeaza hex-ul de mai jos (pentru freq quart 8MHz) code.zip Link spre comentariu
Vlad Mihai Postat Septembrie 8, 2012 Partajează Postat Septembrie 8, 2012 Salut. Uitasem să precizez am cristal de quartz de 4Mhz. Mulțumesc! Link spre comentariu
Stefan Postat Septembrie 8, 2012 Partajează Postat Septembrie 8, 2012 uite hex-ul pentru 4MHz. la cuvntele de configurare ale pic-ului sa ii spui ca folosesti quartz. [email protected] Link spre comentariu
Vlad Mihai Postat Septembrie 8, 2012 Partajează Postat Septembrie 8, 2012 Mulțumesc frumos! Codul e pentru un VA metru cu pic 16f876A cred că am ars ADC de la pic din pinul 2 și 3. se poate modifica ca să se folosească ceilalți 2 pini de ADC? 4 pentru măsurare V și 5 pentru măsurare A? Link spre comentariu
Vlad Mihai Postat Septembrie 8, 2012 Partajează Postat Septembrie 8, 2012 Am modificat eu. cred că bine. atașez codul. unde găsesc să văd cum se compilează? ca să nu te deranjez pe tine? Link spre comentariu
Stefan Postat Septembrie 8, 2012 Partajează Postat Septembrie 8, 2012 c5SsN5RzAPE Link spre comentariu
Vlad Mihai Postat Septembrie 8, 2012 Partajează Postat Septembrie 8, 2012 nu reușesc să compilez. poate ai timp să îl compilezi tu. e codul de mai sus.sau să îmi explici pas cu pas cu fac un hex din codul ăsta sursă. Link spre comentariu
Stefan Postat Septembrie 9, 2012 Partajează Postat Septembrie 9, 2012 cred ca mai trebuie lucrat prin cod deoarece in simulare arata cam ciudat. code++.zip Link spre comentariu
Vlad Mihai Postat Septembrie 9, 2012 Partajează Postat Septembrie 9, 2012 mulțumesc. eu nu reușesc să fac hex din codul sursă. 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