witam,
uczę się programowania na makiecie stm32f072b discovery
chciałbym obsłużyć klawiaturę 4x4. ideą jest realizacja na przerwaniach - jak najmniejsze obciążanie procesora gdy nie korzystam z klawiaturki.
Moje założenia:
- podłączenie do osobnych pinów 4 kolum i 4 wierszy w szereg z rezystorem (dla bezpieczeństwa)
- wiersze: wejścia z ustawionym pullup
rejestr GPIOx _PUPDR ustawiony na 01 dla portów podłączonych pod poszczególne wiersze
- zmiana: kolumny jako wyjścia, stan LOW
- uruchomienie obsługi przerwań,
następuje przerwanie, analiza w przerwaniu który wiersz - pin wywołał przerwanie
mam wiersz, szukanie, która kolumna w następujący sposób:
ustalenie jednej kolumny jako wyjście ze stanem LOW
pozostałe jako wejście bez podciągnięcia pull: GPIOx_PUPDR ustawiony na 00 dla odpowiedniego portu, co pozwoli zabezpieczyć się przed zwarciami:
http://extremeelectronics.co.in/avr-tutorials/4x3-matrix-keypad-interface-avr-tutorial/zmiana - multipleksowanie kolumn poprzez przełaczanie do kolejnej kolumny stanu LOW wyjście
jeżeli pin, który wywołał przerwanie będzie miał ponownie stan niski - znając konkretną kolumnę - wyznaczam poszczególny przycisk
podsumowując:
za pomocą ustawienia kolumn na LOW jako wyjście, możliwe będzie obsługa przerwania reagującego na konkretny wiersz
w funkcji obsługi przerwania szukam która kolumna została wybrana
znając kolumnę i wiersz - reaguję przycisk
moje pytania, wątpliwości:
czy to będzie dobry sposób dla mojego przypadku?
zabezpieczenia na drgania - wait raczej odpada, analizowanie danych w przerwaniu
zabezpieczenie poprzez stan wysokiej impedancji (ustawione wejście dla kolumn) będzie działać dla mojej makiety?
ideą jest, aby przy niekorzystaniu z klawiatury - procesor bezsensownie jej nie "badał"
pozdrawiam