logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

ATmega88 - Klawiatura matrycowa, brak reakcji przy wpiętych tranzystorach

koxygen 08 Wrz 2013 22:15 2865 6
REKLAMA
  • #1 12715460
    koxygen
    Poziom 10  
    Witam.
    "Przerabiając" książkę p. Tomasza Francuza "Język C dla mikrokontrolerów AVR" natknąłem się na problem obsługi klawiatury matrycowej w przerwaniach.
    Klawiatura ma wykorzystywać kolejne ustawianie stanu niskiego na pinach na potrzeby multipleksowania. Niestety wciskanie przycisków klawiatury nie powoduje żadnej reakcji. Co ciekawe (dla mnie) po wypięciu tranzystora (czyli odpowiedni pin nie jest już współdzielony między LED i klawiaturę, lecz wykorzystywany jest tylko przez klawiaturę) przyciski na odpowiedniej kolumnie działają. Podsumowując: wszystkie tranzystory wpięte - brak reakcji, tranzystor wypięty - 4 przyciski odpowiedniej kolumny działają jak należy. W czym może tkwić problem?

    Dodam, że multipleksowanie działa jak należy. Uruchamiane na ATmega88.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    ATmega88 - Klawiatura matrycowa, brak reakcji przy wpiętych tranzystorach
  • REKLAMA
  • Pomocny post
    #2 12715607
    michalko12
    Specjalista - Mikrokontrolery
    Sygnały kolumn powinny być wzięte z przed rezystorów zasilających bazy tranzystorów. Same rezystory też powinny mieć co najmniej 2k2
  • REKLAMA
  • #3 12716245
    piotrva
    VIP Zasłużony dla elektroda
    Raczej nie sprzed rezystorów, bo co się stanie, jak wyjścia będą w kombinacji 1000, a ktoś spowoduje klawiaturą zwarcie pierwszych 2 sygnałów?
  • #4 12716290
    michalko12
    Specjalista - Mikrokontrolery
    Wyjścia nie mogą być w kombinacji wielokrotnego niskiego stanu bo tranzystory sa sterowane stanem niskim. Do tego trzeba zastosować diody na każdej z kolumn podłączonymi katodami do rezystorów, żeby wyeliminować ryzyko zwarcia kolumn naciskając klawisze w tym samym wierszu.
  • REKLAMA
  • #5 12716332
    piotrva
    VIP Zasłużony dla elektroda
    michalko12 napisał:
    Wyjścia nie mogą być w kombinacji wielokrotnego niskiego stanu bo tranzystory sa sterowane stanem niskim.

    Nie czepiajmy się szczegółów, niech zatem będzie 0111 (ja nie patrzyłem dokładnie na schemat, ale przykład ilustruje problem)
    michalko12 napisał:
    Do tego trzeba zastosować diody na każdej z kolumn podłączonymi katodami do rezystorów, żeby wyeliminować ryzyko zwarcia kolumn naciskając klawisze w tym samym wierszu.

    Zastosowanie Twojej pierwszej porady bez tego komentarza mogłoby się zakończyć uszkodzeniem sprzętu.
  • REKLAMA
  • #6 12716392
    Konto nie istnieje
    Konto nie istnieje  
  • #7 12717316
    tmf
    VIP Zasłużony dla elektroda
    Istotnie, to powinny być tranzystory mosfet, dzięki czemu na bazie za rezystorem można wymusić dowolny poziom, a jednocześnie zabezpieczyć procesor przed możliwością zwarcia przez wciśnięcie klawiszy w sąsiednich kolumnach przy pomocy rezystora. W testowym układzie takich użyłem, a na schemacie wstawiłem symbol bipolarnego... Dzięki panowie za znalezienie błędu.
REKLAMA