Zerro Postat August 29, 2006 Partajează Postat August 29, 2006 defineste la inceput asa cum ai facut pentru portul C #use fast_io(B)si la inceputul functiei main set_tric_b(0b11111111) si in felul asta toti pinii portului B sunt intrari ....Activeaza intreruperea INT_RB astfel enable_interrupts(INT_RB); enable_interrupts(GLOBAL); si defineste functia apelata la intreruperea RB astfel:#INT_RBvoid citeste_tastatura(){//functia asta se apeleaza de cate ori unul din pinii B4-B7 si-a schimbat starea deci poti sa vezi exact ce linie si ce coloana au fost activate ... in funtie de asta aflii ce tasta a fost apasata}Sper ca te-ai lamurit un pic ... Link spre comentariu
vsurducan Postat August 30, 2006 Partajează Postat August 30, 2006 [..] Ce am observat eu la softul tau e ca tu nu verifici ce tasta a fost apasata ci chiar tu le apesi .... [...] Spor la treaba! Zerro, pai in acel if (col1) verific daca vreo tasta de pe col1 a "sarit" in 1 logic. Daca da, functie de linia care e in acel moment in 1 am intersectia lin/col, recte cifra apasata. Problema e ca indiferent daca am tastatura montata sau ba, si indiferent daca testez if(col1) sau if(!col1) el afiseaza 1...la fel si la col2..etc.. deci el gaseste col x SI in 1 SI in 0 logic. Tensiunea pe colx este (fara tasta apasata) 1,9V.. Banuiesc ca baleiezi coloanele(sau liniile) secvential in 0 logic si citesti liniile(sau coloanele). Si ca aceasta tensiune ai masurat-o cu un multimetru si nu cu osciloscopul, deci ai o valoare medie si nu stii defapt ce ai acolo. Eu propun sa abordezi problema cam asa: Faza1: palpai un LED pe unul din pini. -salvezi programul cand merge Faza2: nu ai nevoie de intreruperi, testeaza numai rutina de tastatura si din ea un singur buton. Aprinzi led-ul cand apesi tasta si-l stingi cand apesi alta tasta - la alegere-, este cel mai simplu mod de debugger. -salvezi programul cand merge, cu nume schimbat Faza3: palpai ledul de atatea ori cat indica numarul de pe tastatura. In acest fel poti verifica sigur ca tastatura merge toata OK - salvezi din nou programul cand merge OK cu alt nume decat cele precedente Faza4: scrii rutina de afisare pe digiti si realizezi un numarator up sau up/ down la infinit - bla,bla, salvezi Faza5: modifici programul ca apasarea tastei sa fie inscrisa in digit cu numarul corespunzator. - ...salvezi Am pus fizic coloanele la + sau la masa..dar tot apar ca fiind si 1 si 0 logic, ca si cum RB alea ar fi nu intrari ci ceva care se seteaza intern. Normal liniile trebuie sa le faci intrari si sa activezi pull-up din registrul OPTION. Un zero pe coloane si tasta apasata trage linia de intrare la masa si sesizezi starea logica. Link spre comentariu
Zerro Postat August 30, 2006 Partajează Postat August 30, 2006 s-a rezolvat problema cu tastatura ... zic eu ... @vsurducan problema era unde ai spus Normal liniile trebuie sa le faci intrari si sa activezi pull-up din registrul OPTION. Un zero pe coloane si tasta apasata trage linia de intrare la masa si sesizezi starea logica.Pull-up-urile erau activale ... si asta era problema ca tastatura avea coloanele (care era pe aceste pull-up-uri) trase cu rezistente la masa (pull-dawn-uri) ... se baleiau semnalele de 1 logic pe fiecare linie deci trebuia sa dezactiveze pullup-urile si totul ar fi mers ok ... Link spre comentariu
vsurducan Postat August 30, 2006 Partajează Postat August 30, 2006 s-a rezolvat problema cu tastatura ... zic eu ... @vsurducan problema era unde ai spus Normal liniile trebuie sa le faci intrari si sa activezi pull-up din registrul OPTION. Un zero pe coloane si tasta apasata trage linia de intrare la masa si sesizezi starea logica.Pull-up-urile erau activale ... si asta era problema ca tastatura avea coloanele (care era pe aceste pull-up-uri) trase cu rezistente la masa (pull-dawn-uri) ... se baleiau semnalele de 1 logic pe fiecare linie deci trebuia sa dezactiveze pullup-urile si totul ar fi mers ok ...Doamne' ajuta! Poate nu ne sterge administratoru' ca acuma suntem si in topic... si cu problema rezolvata. :smt005 cele bune,Vasile Link spre comentariu
Zerro Postat August 30, 2006 Partajează Postat August 30, 2006 :smt005 Totusi sa asteptam concluziile de la initiatorii postului .... Link spre comentariu
diaconuliviu Postat August 31, 2006 Autor Partajează Postat August 31, 2006 Partea de taste s-a rezolvat, afiseaza bine; ramine restul codului la care sigur voi mai pune intrebari, deci as ruga adminii sa nu inchida inca firul. Link spre comentariu
vsurducan Postat August 31, 2006 Partajează Postat August 31, 2006 Partea de taste s-a rezolvat, afiseaza bine; ramine restul codului la care sigur voi mai pune intrebari, deci as ruga adminii sa nu inchida inca firul.N-am inteles competitia asta de sters mesaje. Rolul moderatorului pe site-ul asta este sa stearga topicurile ?N-aveti loc pe HDD cu atatia sponsori sau e o alta problema mai greu de inteles ?Vasile Link spre comentariu
diaconuliviu Postat August 31, 2006 Autor Partajează Postat August 31, 2006 Nu stiu aici cum e, dar pe altele cind initiatorul anunta "problema rezolvata" topicul se inchide. O masura de a evita offtopicareala, aberarea si raspunsuri la probleme rezolvate 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