Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

STM32F072 Klawiatura matrycowa (przerwania zewnętrzne)

14 Lis 2016 13:16 630 8
  • Poziom 8  
    Cześć. Mam klawiaturę matrycową podłączona do wymienionego kontrolera. Napisałem już odczytywanie wszystkich klawiszy z tym, że dzieje się to w pętli. Chciałbym aby wciskanie klawiszy wywoływało przerwanie zewnętrzne. Moje pytanie brzmi, czy przerwania mam ustawiać na kolumny, którym ustawiam bity, czy na wiersze, które odczytuje? Bo domyślam się, że nie na wszystkie 7 pinów.
  • Specjalista - Mikrokontrolery
  • Poziom 8  
    Timera użyje kiedy uporam się z całą resztą. Metoda delay() jest tylko tymczasowym rozwiązaniem i zdaję sobie sprawę z jej prymitywności. Chyba, że pomoże on mi rozwiązać mój problem z przerwaniami? Nie widziałem żadnego tematu, w którym było wyjaśnione podłączenie ich do klawiatury.
  • Specjalista - Mikrokontrolery
    Problem to dopiero będziesz miał, jak będziesz próbował użyć przerwań zewnętrznych. Naprawdę - użyj timera. Szukaj na forum milionów tematów o używaniu przerwań do odczytu stanu przycisków. W google zresztą też znajdziesz.
  • Poziom 8  
    Robię projekt na studia. Chciałbym w jak największym stopniu napisać to sam. Nie jestem w tym doświadczony, ale jak na razie wszystko, co napisałem, rozumiem. Problem w tym, że wymaganiem mojego projektu jest użycie przerwań zewnętrznych :/ A nie widzę nigdzie innego użycia przerwań niż tylko przy wciśnięciu klawisza klawiaturki.

    @Edit
    Właśnie czytam Twój post pod jakimś innym tematem i też piszesz, że nie powinno się używać przerwań do tego. Również wolałbym sprawdzać stan pinów za pomocą timera z jakimś odstępem czasu. Ale wtedy gdzie proponowałbyś użycie przerwania w projekcie: sterowanie diodą RGB klawiaturą matrycową z użyciem komunikacji USART?

    Jeszcze nadmienię, że próbując to zrobić, program reagował już na jedną linię, ale dioda świeciła się stale, co było nieoczekiwane :/
  • Pomocny post
    Specjalista - Mikrokontrolery
    kyriuch napisał:
    A nie widzę nigdzie innego użycia przerwań niż tylko przy wciśnięciu klawisza klawiaturki.

    Przerwania zewnętrzne mają wyjątkowo ograniczone zastosowania. Nadają się np. do tego, żeby obsługiwać sygnały od innych układów scalonych, świadczące o tym że dany układ ma coś ciekawego do powiedzenia. Do przycisków nadają się wyjątkowo słabo, bo żeby to działało, to i tak będzie Ci potrzebny timer. Powód jest prozaiczny i są nim drgania styków, które sprawią, że będziesz musiał jakoś poradzić sobie z faktem, że dostaniesz np. 10000 przerwań... Do klawiatury matrycowej to już w ogóle wyjątkowo słaby pomysł, bo timer jest potrzebny tak czy siak, a użycie przerwań całość jedynie wyjątkowo skomplikuje.

    Tu nie chodzi o to, że nie chcę Ci pomóc - właśnie chcę i najlepszą pomocą będzie _NIE_ używanie do obsługi przycisków przerwań zewnętrznych tylko timera, który będzie Ci potrzebny i tak (bo jak będziesz przełączał kolumny?).
  • Poziom 8  
    Hmm, czyli rozumiem, że w momencie, kiedy dioda migała mi cały czas przy poruszaniu lekko klawiaturką, było to związane z tym, że przerwania działały, ale były wywoływane drganiem styków? Jest sens i możliwość w takim razie może podłączenie przerwania zewnętrznego na linię RX UART'a? Gdzieś w projekcie muszę tego użyć niestety.
  • Pomocny post
    Specjalista - Mikrokontrolery
    Prowadzący może też docenić Twoje eksperymenty, których efektem jest opinia o całkowitej nieprzydatności tego mechanizmu w projekcie. Możliwość podłączenia przerwania masz w zasadzie wszędzie. Sens, przynajmniej w projekcie który przedstawiłeś, niestety nigdzie wg mnie...
  • Poziom 8  
    Rozumiem. Dzięki w takim razie, zrobię całą resztę, do klawki użyję Timera, a co do użycia przerwań, przedstawię mu to co zaobserwowałem i zapytam, czy dalej mam w to brnąć. Pozdrawiam!