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...
Ja do obslugi klawiatury uzywam przewaznie kodu, ktory jest w plikach w zalaczniku. W głownej peti programu musisz umiescic wywołanie Key_Service(); i zadbać o to, aby w przerwaniach od timera odpowiednie zmienne byly deinkrementowane.
Niestety klawiatura matrycowa wymaga nieco zachodu z jej obsługą, za to wymaga mniejszej ilości pinów - coś za coś :) Nie wiem jakie dodatkowe funkcje będzie miał program, ale z reguły skanowanie klawiatury robi się w oparciu o jakiś timer, bo dodatkowo należy eliminować drgania styków. Strona ... korzystaj do woli, a w razie problemów pisz na forum...
Czyli zamiast robić na przerwaniu INT0 zrobić na timerze? Nie. Jeżeli chcesz to pozostaw przerwanie INT0, ale w funkcji obsługi przerwania ustawiaj jedynie flagę, a w main() umieść resztę kodu wraz z opóźnieniami i pętlami, czyli gdy flaga zostanie wykryta w main() to wołaj swoją funkcję checkKeyboard(). I staraj się zawsze stosować zasadę, że przerwanie...
Robie projekt na ARMie i potrzebna mi jest klawiatura matrycowa 4x3. I teraz mam pytanie jak ja zrobic zeby dzialala na przerwaniach. Nie moge jej skanowac ciagle bo w tym czasie procek jest zajety czyms innym. Chodzi o to zeby np. jesli zostanie wcisniety jakis klawisz przyszlo przerwanie na ktorys z pinow, a w procedurze oblsugi tego przerwania zostaly...
(at)janne_ahonen Takiej obsługi nie robi się na przerwaniach IO, tylko na timerze. Skoro to kalwiatura matrycowa to i tak trzeba przemiatać rzędy i kolumny, więc prościej i lepiej to zrobić np. przerwaniu timera. To przy okazji załatwia sprawe debouncingu. Przemiatanie natet tak wolne jak 100 razy na sekundę i tak jest wystarczające.
Jeżeli zmienimy kolejność to co wtedy odczytamy skoro szyna nie będzie aktywna. Nie rozumiesz. Chodzi o to, żeby czytać stan klawiatury przed zmianą aktywnego segmentu. U Ciebie to działa tak: - zmieniasz segment - czekasz 1us na ustabilizowanie się nowego stanu - odczytujesz klawiaturę - wychodzisz z przerwania w mojej wersji to działa tak: - czytam...
AVE... Ja mam takie pytanie: dlaczego nie użyć albo rejestrów przesuwnych, albo czemu nie wziąć jakiegoś taniego mikroklocka z dużą ilością pinów, albo mniejszego i rejestrów by zrobić uniwersalny sterownik klawiatury matrycowej? Oddzielny układ mógłby sam załatwiać skanowanie klawiszy i debouncing, i mógłby generować przerwania dla układu głównego...
3) czy połączenie z linii wejściowej (do uP) diod i złączenie ich katod i podłączenie do INT0 wystarczy aby wywołać przerwanie. Czy może jest inny sposób na wywołanie przerwania wciśnięcia klawisza Pozdrawiam Propa Klawiatura z definicji nie jest szybkim urządzeniem a więc nie musie pracować na przerwaniach. A poza tym konstrukcja matrycowa za bardzo...
gummis: kolega pisał wyraźnie o uC AVR, a nie o '51 ;-D. ale kumam czacze :) wszysko OK. mimo ze wolę C niż jezyk maszynowy z tymi wszystkim jego cyferkami :D Osobiście muszę się z Wami zgodzić że macie rację w kwestii przerwań tylko ze jest jedno ale. Chodzi o tę klawiaturę. Z portów nie da się zrobic użytku z ww. opisanych powodów. Pozostaja ekspandery...
Załączam pełny program obsługi klawiatury 4x4. Obsadź swoje procedury i będziesz miał gotowy program. Nie zapomnij pozmieniać portów dla kolumn i wierszy, wartości kwarcu, itp. W procedurze obsługi przerwania możesz dołożyć dodatkowe czynności. Wartości kodów klawiszy (obliczane z kolumny i wiersza): - 0..9 - 0..9 - A..D - 20..23 - * - 10 - # - 12
Witam, chcę zrobić urządzenie które będzie miało niski pobór prądu bo chcę, żeby było zasilane z baterii(prócz klawiatury i karty SD chcę podłączyć jeszcze mały wyświetlacz i transmiter RF). Chciałem na razie uruchomić to na bibliotekach HAL.. Dla próby mam Nucleo z uC STM32L452RE. Zdecydowałem się na niego, bo ma port SDIO, przez który chciałem podłączyć...
a tu się mylisz i to bardzo klawiatura tam napewno działa a jak to już piszę wykonując skanowanie klawiatury cztery porty sa wejsciami a na 1 z 4 nastepnych wystawiasz 0 logiczne i czytasz jesli odczytana liczba jest taka jak wyslana to nic nie przyciśnięto jak mniejsza to nacisnieto 1 z klawiszy 1 rzędu następnie wszystkie porty do + poza 2 linią i...
Sprawdzenie czy klawisz wciśnięty jest długo czy krótko jest bardzo proste do wykrycia jeśli czytasz dane z klawiatury używając przerwań. Zawsze po wciśnięciu klawisza zapisujesz sobie nr ostatnio wciśniętego klawisza. Jeśli przyjdzie przerwania a żaden klawisz nie jest wciśnięty to ustawiasz tą wartość na 0. W obsłudze klawiatury sprawdzasz czy aktualnie...
Witajcie moi drodzy. Udało mi się obsłużyć (częściowo) klawiaturę matrycowa. Proszę o sprawdzenie kodu (kod bazuje na przykładzie dondu bo przez rs232 wysyłam to co kliknięto) http://obrazki.elektroda.pl/2692005700_1... 1. Co można ulepszyć/usprawnić? 2. Czy idea (oraz tryby pracy portów) są poprawne? 3. Czy wartość rezystora jest odpowiednia?...
wyjaśnij o co chodzi ci z tym przerwaniem ? jesli chcesz by klawisze były sprawdzane w przerwaniu zastosuj ten schemat : #include <avr/io.h> #include <avr/interrupt.h> #define F_CPU 1000000UL // flagi klawiszy np. key1 => PD0, .... volatile int key1=0, key2=0, key3=0, key4=0, key5=0; //przerwanie odczytuje jaki klawisz zostal wcisniety...
Witam, Mam problem. Chodzi o listingi z książki Marcin Wiązania - Programowanie mikrokontrolerów AVR w języku Bascom W książce są dwa przykłady sterowania matryca Led 5X7 Pierwszy przykład z książki ma za zadanie wyświetlać znaki po kolei i to działa. Natomiast drugi listing ma za zadanie przesuwać znaki z lewej do prawej. I to już nie działa. Schemat...
Witam. Nie mogę sobie poradziź z wprowadzaniem liczb dwucyfrowych z klawiatury matrycowej. Moja klawiatura jest obsługiwana z wykorzystaniem przerwania od Timera0. Jeśli możecie to prosze o pomoc i propozycje rozwiązania tego problemu. Poniżej zamieszczam część mojego kodu programu ....... [wyciety fragment] ....... Do 'pętla nieskończona DO...
Zrealizowałem zamek cyfrowy na dsm-51. Zamek ma dzialac tak: Jesli w pamieci eeprom nie ma zapisanego kodu (w komorce zero wartosc <> 184), zapala sie dioda i z klawiatury matrycowej podajemy nowy kod. Po podaniu 6-ciu cyfr (tyle ma kod) naciskamy klawisz 'ENTER' i kod zostaje zapisany do pamieci eeprom a dioda gasnie. Podajac kod, zawsze na poczatku...
Prosiłbym o pomoc w rozumieniu tego programu ponieważ chce wiedzieć jak to działa i również chodzi o sprawdzenie tego programu bo w jednym programie do symulacj pokazuje brak instrukcji a w drugim błąd w linii Tim0. Z góry dzięki [syntax=asm]T0_G EQU 0 T0_C EQU 0 T0_M EQU 1 TIM0 EQU T0_M+T0_C*4+T0_G*8 T1_G EQU 0 T1_C EQU 0 T1_M EQU 1 TIM1 EQU T1_M+T1_C*4+T1_G*8...
Musisz wyzerować flagę, a czy zrobisz to normalnie czy przy użyciu tej bzdurnej biblioteki to już nie ma znaczenia. 4\/3!!
Cześć. Zrobiłem coś takiego - czyli odczyt stanu klawiatury matrycowej na przerwaniach dla ATMega128. Kod w załączniku. Nie wiem tylko jak zrobić, żeby odczytywał jedno wciśnięcie klawisza. Przy takim programie po wciścnięciu klawisza rombie wykonywanie tego przerwania jak najęty aż do puszczenia klawisza. Mnie chodzi o to, że jak wcisne klawisz ma...
col<<=1 o to mu zapewne chodzi. nop wystarczy a większe opóźnienie jak już daj w innym miejscu. Ja te klawiatury obsługuje w przerwaniu, więc to inna historia
Przeniosłem z: Schematu/instrukcji...
Mam napisać program : -po naciśnięciu klawisza klawiatury matrycowej dioda będzie migała co sekunde ale mam co zrobić wykorzystując przerwania timera sory mistrzu ale sam napisałeś że chcesz taki program więc nie mniej teraz do nikogo pretensji że coś innego sobie teraz wymyśliłeś
Witam! Oczywiście, można tak zrobić. Sygnał z przycisków należy wtedy zsumować za pomocą diod i dać na pin przerwania. Jeśli klawiatura będzie matrycowa, to jeżeli np multipleksowane będą kolumny, to należy załączyć zasilanie na wszystkich kolumnach i sumować sygnał z wierszy, a następnie podać go na pin przerwania. Znalazłem także jeden błąd w kodach...
Debouncing w przerwaniu - tylko nie mów, że robisz to przez aktywne oczekiwanie wewnątrz przerwania. Jeśli tak, to zauważ, że to, że skasowałeś flagę przerwania i jesteś w przerwaniu wcale nie oznacza, że flaga nie może zostać ustawiona ponownie. Możliwy jest taki scenariusz: wciskasz przycisk, pojawia się zbocze opadające które ustawia flagę a więc...
Pytałeś o wybudzanie procesora, odpowiedz masz w linku dla przykładu klawiatury matrycowej. W ogóle lepiej zastosuj power-down A wybudzić możesz tylko stanem niskim przerwania int0. A jeśli chodzi o przerwania pin change warto zapoznać sie z rejestrami z tym związanymi a wszystko stanie się jasne. Chodzi o to ze przerwania zostaje wywołane, jeśli choć...
Hmmmm... tylko timerów potrzebuje do innych celów (m.in. do UART). W asemblerze robiłem tak, że w głównej pętli chodziła mi klawiatura, po nacićnięciu przycisku wykonywała się procedura i albo następował powrót do sprawdzania klawiatury, albo w procedurze było oczekiwanie na naciśnięcie określonego klawisza (nie było "omiatania" przez cały czas). Chodzi...
Ale po co się męczyć, skoro Atmel napisał [url=http://www.atmel.com/dyn/resources/... aplikacyjną na ten temat, gdzie jest matrycowa klawiatura, działanie na przerwaniach i niski pobór prądu.
Dziękuje koledze perlon i dondu za zainteresowanie, ja dopiero zaczynam zabawę z prockami Atmela i Bascomem więc wolałem zapytać. Drabinka z rezystorami fajna sprawa ale wolę proste rozwiązania. Więc skoro mogę użyć wejścia programujące to rozwiązuje mój problem, zrobię klawiaturę matrycową z wykorzystaniem przerwania.
Czy takie rozwiązanie jak wyżej podał eleproject jest ok a jeśli nie to jak zrobić obsługę klawiatury przy użyciu przerwania?
while (1) { IOSET0 = 0x00004000; //ustawienie jedynki na pierwszej linii klawisz= IOPIN0; //odczytanie stanu portu switch (klawisz &= 0x001e0000) //sprawdzenie na którym pinie jest stan wysoki { case 0x00020000: {LCDText("1");bre... case 0x00040000: {LCDText("4");bre...
jak już chesz koniecznie marnować wolne piny (bo może masz ich zbyt wiele) to lepiej podłącz sobie te przyciski przez 74HC30 i będziesz miał jeden wspólny sygnał dla przerwania INT jednocześnie wejścia 7430 podłącz pod jakiś port i w przerwaniu odczytasz sobie ich stan. Nie jest to najlepszy sposób bo to samo można zrobić w przerwaniach i uzyć klawiatury...
... Zumek thx wielkie... A co do c i bibliotek to proponuje szukac info wszędzie byle nie avr-lib :) Google bardzo pomaga... Czyli kto szuka nie błądzi.. :) A przy okazji nasze forum jest bardzo dużą bazą danych. Przy okazji dodam że poszukuje obecnie programu w ce do obsługi klawiatury matrycowej na przerwaniu. Pzerwaniu tzn mam na myśli przerwanie...
Witam, Niestety ale strasznie źle podchodzisz do tego zagadnienia bo w przerwaniu dajesz jakieś masakryczne opóźnienia i pętle, które mogą się nie skończyć nigdy. Zdecydowanie odradzam takie pomysły. Przerwania dla klawiatury matrycowej, owszem można używać ale postaraj się skorzystać z flag i te sprawdzania, które tu wykonujesz w przerwaniu przenieś...
Napisałem się, napisałem... a tu wylogowało i przepadło a wstecz w przeglądarce nie przywróciło :( ale postaram się odtworzyć. W wyżej zaproponowanym sposobie musisz mieć przycisk podpięty pod zewnętrzne przerwanie. Ja zrobiłbym to inaczej. Obsługę przycisku zrobiłbym w przerwaniu timera. Przerwanie wywoływał co kilka milisekund. W przerwaniu najpierw...
Mimo wszystko sam mikrokontroler nie jest w stanie zasymulowac matrycy w taki sposob, jak to robi MT8808. Rozwazalem ta opcje i mialem klopoty, gdzie ginely mi klawisze albo wyskakiwaly po dwa razy, i czasem zacinalo sie to w calosci. MT8808 rozwiazal wszystkie te klopoty. Tak jak napisałeś, poszedłeś po najmniejszej (drogiej) linii oporu. W sofcie...
Możesz tak zrobić, przy czym na przerwaniach łatwiej. Bo musisz jeszcze pomyśleć o eliminacji drgań styków, przerwania wywoływane z timera są do tego idealne.
seba_x , dziękuję za pomoc dostosowałem Twój przykład do Bascoma i udało się programik działa. Programik usytawiłem jako podprogram przerwania i zadziałało. Dzięki za pomoc.
Kol. Slaby , odnośnie sterowania statycznego to masz 100% racji, tylko spróbuj tym wysterować gotowe wyświetlacze matrycowe... Niestety nie da się. Trzeba matrycę złożyć z pojedynczych ledów. Kol. rabbit2 , czy nie wygodniej było by Ci oprogramować multipleks w przerwaniu z timera np. T0, i nie bawić się w "waitus" itp?
Chcesz wyzwalać przerwanie w chwili naciśnięcia klawisza ? Tak zrozumiałem, jeśli nie masz za wiele tych klawiszy w układzie np. 2 to możesz je po prostu podłączyć wprost na końcówkę odpowiedzialną za wyzwolenie przerwania INT0, INT1. Pamiętaj tylko o tym aby przełącznik spolaryzować do plusa zasilania opornikiem oraz równolegle do niego podłaczyć kondensator...
Jezeli ma być przerwanie wywołane zmianą stanu portu, to ja proponuje uzyć przerwania int2 (przerwanie zewnętrzne) . PO co cyklicznie srawdzać port kiedy mozna sprawdzać tylko wtedy kiedy potrzeba(byla zmianaportu :)). Zobacz to: http://www.elektroda.pl/rtvforum/topic69... Tu masz schemat klawiaturki matrycowej wraz z wykrywaniem zmiany :) Pozdrawiam.
Kolega niech raczy zauważyć że kontraktron ma coś takiego jak drżenie styków. Może być tak że przerwanie jedno twoje załaczenie potraktuje jak wiele zboczy je wzywalających i cały pomiar weźmie w łeb bo się wykona po prostu wielokrotnie. Musisz użyć więc kolejnego sprawdzania stanu styku juz po wykonaniu przerwania tak aby się upewnić ze jest to "trzymanie"...
Idea jest zawsze taka sama, bez wzgledu na procesor. Jezeli Verengard nie uzywa zadnego OSa to moze zrobic to na przerwaniu od timera.
Z dziedziny technicznej to dodam jedno... Nie widze bardzo warznego elementu jakim jest tranzystor na anodzie lub katodzie wyswietlaczy led ... Czy to przeoczenie czy ktoś sobie chce masówke produkowac tnąc wszystkie koszta na krótką mete ? Dodano po 6 Wogle brak elementarnych wręcz elementów przy tego typu konstrukcjach. Czyli : -Diody przy klawiaturce...
Proszę nie zwracać uwagi na # itp. Program wpisuję ręcznie z klawiatury DSM, co wyklucza niepoprawną składnię. W książce panów Gałka (instrukcji do DSM 51) w załączniku D 'Urządzenia wejść/wyjść DSM-51' znajduje się tabela. Są tam adresy B i Hex m.in sterownika przerwań, klawiatury matrycowej, wyświetlacza LCD, itp) Rejestr portu A układu 8255 znajduje...
Mam takie pytania, co się dzieje kiedy przytrzymasz przycisk ? Czy będzie zmieniał stany w takt przerwań procesora czy nie ? I dlaczego kolega nie wykorzystał połączenia klawiatury matrycowej 4x3 ? Bo troszkę za dużo tych diod a mozna było prościej oraz wykorzystać przeżutniki jak wspomniał kolega wyżej.
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...
a jeśli nie sprawdzasz klawiszy w przerwaniu tylko w pętli głównej to możesz użyć zwłoki 25 mS i ponownie sprawdzić stan jeśli zgodny to znaczy że klawisz wciśnięty
klawiatura matrycowa przerwania atmega matrycowa klawiatura matrycowa
yanosik pliki mercedes sprinter tacho rejestrator hikvision reset hasła
wkrętarka milwaukee interfejs delphi
Pompa dodatku Eolys w Citroën C4 1.6 HDi 2009 ITT OX 710C – parametry, pasmo, funkcje, opinie o oscyloskopie analogowym 2x10-15 MHz