Sari la conținut
ELFORUM - Forumul electronistilor

PIC 628 - nu "raspunde" comenzilor


Postări Recomandate

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
  • Răspunsuri 22
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

[..]

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

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

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

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

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări