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

ATMega32 - Problem z obsługą wielu klawiszy w programie

Paweł Frąckowiak 28 Lip 2016 19:17 1104 9
  • #1 15835560
    Paweł Frąckowiak
    Poziom 11  
    Witam!

    Mam nurtujący mnie problem z obsługą dwóch i więcej klawiszy podłączonych do ATMega32.
    Polega on na tym, że w poniższym programie (w zasadzie jego części, ale ta część właśnie nie działa jak należy) dzieją się rzeczy, których ogarnąć nie potrafię.

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


    Po starcie programu od razu zapala mi się dioda podłączona do wyjścia PD5 co sygnalizuje, że został wciśnięty jeden z dwóch klawiszy (zasadniczo żaden klawisz wciśnięty nie został). Dziwniejsze natomiast jest to, że gdy w funkcji pobierz_klawisz() zakomentuje część kodu odpowiedzialną za obsługę klawisza UP i zostawię tylko to co odpowiada za klawisz OK to funkcja śmiga jak ta lala czyli gdy trzymam guzik to dioda się pali, a gdy go puszcze to gaśnie.
    Nie wiem co robię źle i stąd moja prośba o pomoc i nakierowanie mnie na właściwe tory by móc obsłużyć dwa guziki, a docelowo cztery.

    Z góry dziękuje serdecznie!
  • #3 15835778
    Paweł Frąckowiak
    Poziom 11  
    Widzisz @matti0010 dlatego właśnie pisze bit_is_set(PINC, 3) bo też tak pomyślałem, ale było OK a zapis pozostał
  • #4 15835815
    matti0010
    Poziom 11  
    W definicji portów makro pozostało, z tego powodu o tym pomyślałem. Wystarczy że masz je źle ustawione i już np. zamiast pinu 3 masz inny ustawiony. Próbowałeś na innych wyprowadzeniach ATmegi?
  • #5 15835884
    Paweł Frąckowiak
    Poziom 11  
    Próbowałem z innymi wejściami zamiast PC3 i gdy było KEY_OK i cokolwiek jeszcze to była lipa, ale nie testowałem co byłoby gdyby zostawić tylko jeden klawisz inny niż ten KEY_OK. Teoretycznie powinno działać skoro samo OK działa, ale nie sprawdzałem i niestety teraz nie zbadam tematu bo jestem w pracy i nie mam tu sprzętu
  • #7 15835950
    Paweł Frąckowiak
    Poziom 11  
    No cóż będę kombinował jeszcze po pracy, ale miałem nadzieje, że strzeliłem jakiś głupi błąd, który poza autorem wypatrzy każdy:-)
  • #8 15836032
    Kwarcu
    Poziom 13  
    Polecam zapoznanie się z tą biblioteką: Link
    Prosta w obsłudze, i funkcjonalna, stosowałem na ARM, AVR.
  • #9 15836037
    Paweł Frąckowiak
    Poziom 11  
    No można ale wstyd byłoby polec na takim banalnym temacie jak obsługa dwóch klawiszy...
  • #10 15840985
    Paweł Frąckowiak
    Poziom 11  
    Problem rozwiązany!

    Przyczyną takiego zachowania wejść było użycie portu na którym aktywny był JTAG, wystarczyło go wyłączyć i wszystkie wejścia zaczęły działać jak ta lala.
    Guzik OK działał bo jako jedyny nie był podłączony pod piny interfejsu JTAG.

    Dzięki za wszelką pomoc!
    Pozdrawiam!
REKLAMA