Witam.
Wiem, że temat był wielokrotnie wałkowany na forum, ale mimo przebrnięcia przez sporą ilość informacji jakoś nadal mam problem z poradzeniem sobie z moim przypadkiem.
Buduję 'klawiaturę matrycową' ale nie na przyciskach, ale na przełącznikach, zatem program sterujący nie będzie miał rozpoznać naciśnięcia przełącznika, a stan wszystkich linii...
I teraz może przedstawię jak ja to widzę i ktoś życzliwy wyprowadzi mnie z błędu
Po skonfigurowaniu typu uC, kwarcu, ustawieniu KOL1 jako wej, ustawieniu linii portu podłączonego do A,B,C jako wyjścia i podciągnięciu wszystkiego do 1, konfiguracji timera i ustawienia przerwania od timera na podprogram do sprawdzania stanu linii sytuacja jest taka:
ustawiam 0 na KOL1 (fizycznie kolumn jest 3, wierszy 3 na porcie D. wiec ustawiam port tak: portd=&b111111110)
wszystko sobie niby działa, przy przełączeniu A, B lub C na KOL 1 zmienia się stan i zapala się diodka podłączona na drugim porcie, ALE przy przełączeniu drugiego przełącznika (czyli dwa są przełączone) diodka gaśnie...
Nie wiem czy to jest problem tego że nie są to klawisze przełączniki tylko przełączniki przełączniki, ale strasznie zależy mi na tym, aby sprawdzać stany przy możliwych wielu kombinacjach przełączników...
Z tego co załapałem jak to zrobić wynikało mniej więcej tyle, że
Trzeba ustawić linie wejść i wyjść.
trzeba ustawić stany wysokie na wyjściach
Trzeba podciągnąć wejścia do rezystorów podciągających (czyli też ustawić 1)
Potem żeby wybrać linię to takie wejście ustawić na 0 i sprawdzać czy przy przełączaniu stan na tym wejściu się zmienia.
Gmatwa mi się już całkowicie czy np ustawianie set pind.0 czymś sie różni od portd.0 = 1 ? jest tu różnica? bo być może gdzieś tutaj robię błędy. [wiem ze przydałby się kod, ale mam go na drugim kompie wiec wstawię jak tylko będzie to możliwe], a tymczasem będę wdzięczny za jakieś rady....
Pozdrawiam.
Poprawiłem tytuł.
[zumek]
Wiem, że temat był wielokrotnie wałkowany na forum, ale mimo przebrnięcia przez sporą ilość informacji jakoś nadal mam problem z poradzeniem sobie z moim przypadkiem.
Buduję 'klawiaturę matrycową' ale nie na przyciskach, ale na przełącznikach, zatem program sterujący nie będzie miał rozpoznać naciśnięcia przełącznika, a stan wszystkich linii...
________/ ._______ A
|
|________/ ._______ B
|
|________/ ._______ C
|
|
|
KOL1
I teraz może przedstawię jak ja to widzę i ktoś życzliwy wyprowadzi mnie z błędu
Po skonfigurowaniu typu uC, kwarcu, ustawieniu KOL1 jako wej, ustawieniu linii portu podłączonego do A,B,C jako wyjścia i podciągnięciu wszystkiego do 1, konfiguracji timera i ustawienia przerwania od timera na podprogram do sprawdzania stanu linii sytuacja jest taka:
ustawiam 0 na KOL1 (fizycznie kolumn jest 3, wierszy 3 na porcie D. wiec ustawiam port tak: portd=&b111111110)
wszystko sobie niby działa, przy przełączeniu A, B lub C na KOL 1 zmienia się stan i zapala się diodka podłączona na drugim porcie, ALE przy przełączeniu drugiego przełącznika (czyli dwa są przełączone) diodka gaśnie...
Nie wiem czy to jest problem tego że nie są to klawisze przełączniki tylko przełączniki przełączniki, ale strasznie zależy mi na tym, aby sprawdzać stany przy możliwych wielu kombinacjach przełączników...
Z tego co załapałem jak to zrobić wynikało mniej więcej tyle, że
Trzeba ustawić linie wejść i wyjść.
trzeba ustawić stany wysokie na wyjściach
Trzeba podciągnąć wejścia do rezystorów podciągających (czyli też ustawić 1)
Potem żeby wybrać linię to takie wejście ustawić na 0 i sprawdzać czy przy przełączaniu stan na tym wejściu się zmienia.
Gmatwa mi się już całkowicie czy np ustawianie set pind.0 czymś sie różni od portd.0 = 1 ? jest tu różnica? bo być może gdzieś tutaj robię błędy. [wiem ze przydałby się kod, ale mam go na drugim kompie wiec wstawię jak tylko będzie to możliwe], a tymczasem będę wdzięczny za jakieś rady....
Pozdrawiam.
Poprawiłem tytuł.
[zumek]