Magiczne hasło brzmi PULL-UP. Sprawdź w datasheet i tysiącach publikacji w sieci.
Oops pomyliłem system binarnym z dziesiętni wagami bitów :D zaraz poprawie edit:najprościej uint8_t k;//deklaruje wcześniej ponieważ będe używał poza pętlą for(k=0; k<4; k++){ if( (PIND>>(4+k))&... ){k++;break;}//k++ ponieważ otrzymam 0-3 a potrzebuke 1-4 uint8_t j = ( i*4 ) + k; jeszcze...
Jedynym wyjściem zdają się być przerwania, obsługę klawiatury należy zrobić w podprogramie przerwania INT0 lub INT1, poczytaj ten temat :-) http://www.elektroda.pl/rtvforum/topic10...
Sprawdzić w nocie katalogowej pod jakim adresem powinno być (w każdej jest "Register summary") i wpisać. Np. dla ATmega8515 (i pewnie większości pozostałych) będzie tak : #define GICR 0x3B i po tym dopiero może być #define ENABLE_INTO_FALLING ... BTW. Prawidłowo to powinno już być w pliku nagłówkowym io.h . Może masz niezadeklarowany typ procesora ?...
Mam własną procedurę ale działa na zasadzie mnożenia *10 wpisanej do tej pory wartości i dodawania numeru klawisza (0-9) wraz z kontrolą długości liczby, formatowaniem wyświetlania na LCD, obsługą klawiatury w przerwaniu i innymi bajerami. Jak chcesz mogę podesłać Ci odpowiednie procedury. BTW: jaki masz uC ?
Musisz wyzerować flagę, a czy zrobisz to normalnie czy przy użyciu tej bzdurnej biblioteki to już nie ma znaczenia. 4\/3!!
Ciekawe jest to widać w twoim profilu (Pomógł: 79927) :P ale do rzeczy. Według mnie coś takiego można zrealizować w następujący sposób: - konfigurujesz przerwanie zewnętrzne żeby było wyzwalane przerwanie zboczem opadającym, rosnącym etc. - w tym przerwaniu uruchamiasz timer który zlicza sobie impulsy - jeżeli zliczy określoną ilość impulsów to wykonujesz...
Hmm, 33 to 3x11. 2x11 zrozumiałbym bez problemu bo jeden raz to wciśnięci e klawisza a drugi to jego zwolnienie. Trzeci (a w zasadzie drugi) to być może autorepeat ale teraz to zgaduję. Na koniec transmisji z klawiatury trzeba dokonać potwierdzenia na linii zegara. Być może jak tego nie robisz to klawiatura wysyła jeszcze raz. upanie
Biblioteka Adafruit_NeoPixel blokuje przerwania więc Możesz mieć problem z obsługą klawiatury podczas jej działania.
U mnie diody raz działały raz nie :(. Zrobiłem sobie tak :) Po obsłudze przerwania wystawiam 0 na wiersze i sobie czekam aż przyjdzie kolejne przerwanie :)
A oto sposób podłączenia klawiatury. Na tym samym porcie co moduł LCD- podłączyłem klawiaturę, nie zauważyłem żadnych przekłamań transmisji do wyświetlacza podczas działania obsługi klawiatury (kilka mikrosekund zmian na lini danych LCD nic nie przekłamie, bo LCD ma na wejściu filtry RC i jest powolne): Nawet można klawiature strobować sygnałem E od...
Witam ! Wydaje mi się, że chodzi tu o rozróżnienie przerwań zewnętrznych od wenętrznych inny skok przy przerwaniu wew. a inny przy zew. W programie obsługi trzeba poprostu sprawdzać skąd przychodzi przerwanie i odpowiednio skskać. Obsługa klawiatury z przerwania nie jest dobrym pomysłem. pozdrowienia T Dodano po 3 Witam ! Wydaje mi się, że chodzi tu...
Poczytaj kartę katalogową DS18B20 ! W kominku potrzebujesz odczytu temperatury z dokładnością około 0.1°C , a nie wystarczyłoby do 1° C. Poza tym użyj obsługi klawiatury w przerwaniu.
Co ile masz przerwanie od timera bo jak się domyślam stan klawiatury odczytujesz kilkadziesiąt razy na sekundę?? Napisze to po raz kolejny: Wywal odczyt po IIC klawiatury z obsługi przerwania!!! I rób to tak samo jak odczyt czasu w programie głównym na podstawie flagi. Po drugie po co odczytujesz za każdym razem czas z PCF'a??? Skoro masz przerwanie...
Witam. Od jakiegoś czasu zajmuję się mikrokontrolerami, ale programuję wyłąćznie w asemblerze. Teraz muszę się przesiąść na język wyższego poziomu, ze względu na konieczność prowadzenia obliczeń. W związku z tym mam kilka pytań. Jak najefektywniej obsługiwać klawiaturę matrycową w C (cyfry + kilka klawiszy odpalających funkcje specjalne) ? Jak obsługiwać...
To zależy co robisz w przerwaniach. Wysyłanie znaku z klawiatury zajmuje ok. 4ms. W przerwaniach obsługuję odbiór i nadawanie znaków przez uart i odczyt z ADC- i nic się jakoś nie psuje. Być może- jeszcze. Ale co ile Twój Timer0 generuje przerwanie- nie wiadomo- bo nie podałeś częstotliwości. I ile czasu zajmuje obsługa przerwania- też nie wiadomo....
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?
Moim zdaniem masz rację, że przerwania powodują problem. Miałem kiedyś podobną zagwozdkę z obsługą klawiatury PS2 + multipleks. Problem rozwiązało zezwolenie na przerwanie przerwania multipleksowania, tak aby przerwanie (w moim wypadku) od obsługi klawiatury miało "wyższy priorytet" i mogło wywłaszczyć przerwanie multipleksowania.
napisałem program do obslugi klawiatury i cos mi nie chce działac nie wiem dlaczego wyglada to mniej wiecej tak: dim zmienna as byte config portd.0 = input set portd.0 'wlaczenie podciagania config timer0 = timer, prescale = 1024 on timer0 klawiatura enable interrupts enable timer0 do (program glowny) loop klawiatura: if portd.0 = 1 then incr zmienna...
Bardzo dziękuję za odpowiedzi. Skonfigurowałem piny PA2 i PA3 jako UART2, aktywowałem przerwania. Jak debuguję, to obsługa przerwania następuje z klawiatury komputera, lecz z klawiatury MIDI podłączonej do mikrokontrolera nie ma już żadnej reakcji. Mam podłączony MIDI shield do pinu Rx. Jak mogę przesłać tę wiadomość MIDI do mikrokontrolera? Czy idę...
A czasami BIOS (czy co tam siedzi) nie powinien zająć się obsługą klawiatury i udostępnić przerwanie do jej obsługi?
To zależy od programu. Zwykle w 90% aplikacji nie ma konieczności używania przerwań, gdyż obsługa klawiatury nie jest zwykle czynnością krytyczną czasowo (człowiek nie zauważy 10ms opóźnienia).
_jta: bez komentarza. Znasz moje zdanie. Nie ma takiej komendy jak napisałeś "żądanie puszczenia klawisza". Ponadto gdyby takowa istniała i była użyta w procedurze obsługi przerwania klawiatury BIOS (np. przerwanie 16h) wówczas DOS nie mógłby realizować buforowania. Jedna z funkcji obsługi klawiatury ale w DOS a nie BIOS umożliwia odczyt (również możliwy...
Z chęcią poczytałem prawie cały temat i także uważam, że warto abyś go nie zamykał. Ja jak zwykle idę w kierunku oszczędzania źródła zasilania (w większości przypadków baterii litowej), więc podejście Mirekk36 jest akurat w kontraście do mojego przypadku (w zakresie przerwań): ...Ale nie potrzeba zaraz wszystkiego co się da opierać o przerwania, czyli...
Skoro opanowałeś obsługę timera, to zrób jeszcze całą obsługę LED w przerwaniu timera. W pętli głównej się multipleksowania LED nie robi, bo ciężko w to wpleść jakikolwiek inny kod. Jaki wtedy jest sens podziały projektu na pliki *.h i *.c skoro część pliku "7led.c" będę miał w pliku związanym z Timer0 ? Chyba, że coś źle zrozumiałem. Źle do tego podchodzisz....
Witam Przerwanie nie nadaje się. W czasie obsługi przerwania, drgania klawiszy mogą zafałszować wynik.
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...
Zrezygnowałem z "obsługi klawiatury" w przerwaniu i robię to w głównej pętli programu ale do eliminacji drgań styku korzystam jeszcze z HAL_Delay(20), to chyba tutaj jest miejsce na wykorzystanie timera?? Bo nie wiem jak inaczej można byłoby zastosować timer do obsługi odczytu klawiatury? Co do karty SD, skorzystałem z interfejsu SDIO i middleware FatFs,...
Obsługa klawiatury znajduję się w nieskończonej pętli for ale już tego fragmentu nie wrzucałem. Obsługę klawiatury nie mam zrobionej na przerwaniu zewnętrznym. A czy wysyłanie komend SKIP ROM i CONVERT T można w ogóle wyrzucić z tej pętli?
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,...
Ja osobiście użyłbym nawet delay'ow które są dołączane biblioteką - i znów nie wiem jak to w Bascomie jest . Ale jeśli wszystko będziemy robić poza , obsługą przerwania dla klawiatury to nic nie przeszkadza timerowi dalej generować zadane przebiegi :)
Możliwe, że trzeba dać tranzystorowi czas na otwarcie, jedno NOP może nie wystarcza, a więc odczyt portu przycisków należało by raczej umieścić na początku procedury obsługi przerwania. Wiersze klawiatury w tablicy będą wtedy przesunięte, chyba że operację inkrementacji licznika też się przeniesie.
Bardzo ciekawym rozwiązaniem klawiatury jest wykorzystanie PCF8574. Wystarczą nam wtedy tylko 2 porty i mamy klawiaturę 16 przycisków. I nie potrzeba całej paczki 1n4148 :D Rozwiązanie zerżnięte z jakiegoś radia samochodowego. Do obsługi klawiatury nie zatrudniłbym przerwania. Sygnały z niej są "wolne" jak palec operatora i wystarczy ją skanować po...
To zależy jak napiszesz program ale ja nie widzę tutaj żadnego problemu czy kolizji. Przerzucenie obsługi klawiatury i wyświetlacza do przerwania zegarowego powoduje to że w programie głównym masz bardzo dużo czasu na zajęcie się czymkolwiek chcesz.
Ja bym ten problem widział w ten sposób. Podzielić cały program na dwie niezależne części. Pierwsza to program obsługi klawiatury, który by cały czas skanoweł Twoje klawisze oraz druga na przerwaniach, która realizowała by całkowicie niezależnie mruganie diodek. Bo wiadomo że to mruganie będzie z jakimś maksymalnem tempem wykonywane i to byłby podstawowy...
Wektory przerwań mają odpowiednie priorytety ... jeżeli odczyt czasu masz w przerwaniu to przerwanie klawiatury powinno być o mniejszym priorytecie. Jeżeli obsługę odczytu masz w pętli głównej - to zrób własny "kontroler przerwania" :P Po odczytaniu godziny itd. sprawdź czy flaga przerwania jest ustawiona, a jeżeli tak to skocz do procedury obsługi...
Witam Do wyjść klawiatury wpinasz równolegle bramkę NAND 4-wejściową (zakładam klawiatura 4x4), a wyjście bramki do wejścia z przerwaniem zewnętrznym (INT0, INT1). W momencie naciśnięcia przycisku z klawiry na wyjściu bramki będzie "1" które wykrywasz (lub zbocze) na INTx. W obsłudze przerwania sprawdzasz klawisz jak normalnie.
Pytanie stawiane było czemu źle działa Bo jest źle napisane. A najlepiej jechać po innych zwłaszcza po tych co się uczą. Po takich co się uczą nikt nie jeździ. Po takich którzy "chcą" odpowiedzi, ale wiedzą lepiej od odpowiadających - już tak. Freddie Chopin dzięki jakiś konkret co do przerwań, powiedz mi jeszcze czy będę mógł modyfikować wypełnienie...
Jaki typ mikroprocesora ? Ile wyjść/wejść możesz przeznaczyć na obsługę klawiatury ?
Nie no to jakas sieczka jest delay ms(20) w przerwaniu? ta obsługa to chyba długa praca typu aby działało. Obsługę takiej klawiatury najlepiej zrobić w przerwaniu jakiego timera, np co 50ms. 2 kolejne równe odczyty równoznaczne z wciśniętym klawiszem. Zadem problem dorobić opcje dla długiego przytrzymania klawisza. n kolejnych równych odczytów. A reszta...
Cześć wydaje mi się że nie potrzebie komplikujesz sobie życie przerwaniami (przynajmniej do klawiatury) ustal jakieś główne założenie np.: podstawa to odczyt klawiatury a do przerwania daj LED8SEG niżej dodaje kod obsługi klawiatury 4x4 która zwraca 0xFF gdy żaden klawisz nie został wciśnięty korzystałem z tej procedury właśnie między innymi do kalkulatora...
1. uC to 89C4051 Faktycznie to troszkę zmienia. Ale malutka '51 atmela ma sprzętowy uart i chociaż to warto było by wykorzystać. Co do reszty sprzętu to użyj jak najwięcej hardware jak się da (encoder na przerwaniu). O rs sprzętowym pod bascomem już tutaj parę razy pisaliśmy - ostatni raz chyba wakacje zeszłego roku. Co do reszty to też da się zrobić...
Tak się zastanawiam... Dlaczego nikt nie stosuje przerwania zbiorczego do obsługi klawiatury i impulstatora? Podpinamy po Bożemu klawiaturę + impulsator na jeden port następnie z każdej nogi diodą sygnałową na przerwanie INT. Po wykryciu przerwania wartość portu jest zatrzaskiwana. Odpada problem drgania styków ponieważ czas okresu drgania styków jest...
Twierdzisz kolego, że łatwiej napisać soft jednocześnie obsługujący enkoder, LCD oraz generowanie sygnału niż 2 osobne ? Powyższe stwierdzenie jest chyba prawdą jedynie w przypadku małych umiejętności programisty Proszę https://www.elektroda.pl/rtvforum/topic3... Pomiar częstotliwości (sprzęt+przerwania), czasu (sprzęt), oscyloskop (DMA), obsługa...
Przerwanie 1Ch jest wywoływane z wnętrza IRQ 0. Ma więc wyższy priorytet niż przerwanie klawiatury - IRQ 1 - i stąd "zawieszenie". Komputer nie reaguje na klawiaturę, dopóki nie zakończy się IRQ 0, a ono nie zakończy się, bo debugger czeka na klawiaturę.... EDIT: Dla jasności - nie chodzi tu o fakt, że IRQ0 ma wyższy priorytet niż IRQ1. Wystarczy ,...
Do piotrkopec: Po prostu jeżeli przychodzi przerwanie, to ustawiasz flagę i blokujesz to przerwanie. Odblokowujesz je ponownie po wykonaniu odpowiadającej mu czynności w pętli głównej. Poza tym, jeżeli chodzi o klawiaturę, to powinieneś eliminować drgania styków. Na przykład po otrzymaniu przerwania odczytywać stan tego pinu kilkakrotnie w odstępie...
gdzieś wyczytałem, że dobrze jest wyłączyć przerwania na czas odczytu czasu, zwłaszcza, że dodatkowo w przerwaniu zewnętrznym INT1 mam obsługę klawiatury PCF8574
Oba timery z kontrolerka, wykorzystuję w trybie PWM, co koliduje z wykorzystaniem ich do generacji przerwania dla klawiatury. Otóż niekoniecznie. Timer skonfigurowany do PWMa może także generować przerwanie od przepełnienia.
... 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...
Cytat z książki Wiązani: "Funkcja oczekuje na odebranie znaku z klawiatury, czyli wstrzymuje działanie programu. Przerwanie pętli oczekiwania może nastąpić przez ustawienie zmiennej Err, na przykład w podprogramie obsługi przerwania". Przyznam, że robiłem coś kiedyś na klawiaturze AT, ale nie kombinowałem z "wstrzymywaniem" programu.
Witam , jest mały problem z tym prockiem otóż chodzi o wejścia komparatora analogowego. Napisałem dość skomplikowany program do obsługi odbiornika nasłuchowego - w tym LCD, PLL, EEPROM i KEYS. całość w komplecie działa dobrze (są pullupy na wejściach komparatora), ale bez tych pullupów program chwilę działa (wysyła dane do LCD i PLL) ale potem już działa...
marco47 - przepraszam, nie zauważyłem. marek19951 - proste if-then nie załatwi problemu. Jeżeli masz zapał, a widzę , że masz, zacznij od procedury obsługi klawiatury , która nie powoduje opóźnień poprzez martwe pętle ( czyli m.in wait, debounce, bitwait itp). Ja to zrobiłem na przerwaniu programowym z timer1, które odliczało mi okresy 10 ms w połączeniu...
Dostałem wskazówki do programu tylko nie wiem jak zastosować je w praktyce prosiłbym o pomoc o pokazanie tego w programie Napisz obsługę klawiatury matrycowej 3x4 najlepiej w przerwaniach, tak by w każdej chwili można było przerwać wyświetlanie kolejnych napojów. Możesz to też zrobić przed zmianą komunikatu przez skok do procedury obsługi klawiatury....
True wyłącza:) (Nawyk z 51:P) :) I nie należy zapominać , o jeszcze jednej prawdzie ;) W 51-ce przed ponownym włączeniem przerwań globalnych , należy wyzerować flagę przerwania , a w AVR należy to zrobić tuż przed zakończeniem obsługi przerwania , bo inaczej ... mamy kłopoty :D Piotrek
Witajcie. Na ćwiczenia muszę napisać program, który będzie zamieniał priorytety przerwań i uwidoczniał to. Polega to na przeprogramowaniu sterownika przerwań 8259A. Macro odczytania wektora: http://obrazki.elektroda.pl/8751800300_1... Komunikat pojawia się gdy naciska się coś na klawiaturze a timer ma większy priorytet. Procedura obsługi przerwania...
pcf_pinread(unsigned char adres_pcf, unsigned char pin) { unsigned char stan_portu; unsigned char signal; stan_portu = pcf_portread(adres_pcf); stan_portu >>= pin; signal = (stan_portu & 1); return signal; } Właśnie nie odczytuje w przerwaniu, odczyt PCFa jest ustalony w pętli głównej w której jak narazie jest...
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.
W układzie (renowacja radio do auta) mam 2 enkodery i 6 przycisków. Na procku mam wolny tylko jeden port z przerwaniem, więc wszystkie szyny z klawiatury i emulatora ELM402 są przez diodę podpięte do portu z przerwaniem. Zmiana napięcia L2H generuje mi sygnał obsługi klawiatury. Tak mniej więcej w skrócie. Projekt jeszcze na 2 lata (w wolnych chwilach),...
Po usunięciu pętli w podprogramach obsługi klawiszy przygasanie zmniejszyło się o około 90%. Obecnie widzę, że na czas obsługi nacisnięcia wyświetlacz ledwie przygasa. Spróbuję stworzyć obsługę w przerwaniu. Czy mogę w przerwaniu wpakować instrukcję debounce? Wiem, że domyslnie wprowadza 25ms opóźnienia, by wyeliminować drgania styków klawiatury. Wydaje...
Ogólnie widziałem że używasz real-time do domierzania opźnień. nie, do opóźnień jest przerwanie timera 1 co 50ms. KEYBOARD_KEY_TIMEOV z przerwania obsługi klawiatury, jak po 15 sekundach nic nie naciśnięto, wystawiany jest kod klawisza : KEYBOARD_KEY_TIMEOV. natomiast propozycja milis() niestety nie przyniesie oczekiwanego rezultatu. najlepiej jest...
Z tymi sterownikami nie maiłem do czynienia ale początek opisu wskazuje, że służą do obsługi code page - czyli zestawu znaków (np polskie litery) Co do programowania kontrolera przerwań to znalazłem taki papier: http://sirius.cs.put.poznan.pl/~inf94333... Trzeba pamiętać, że dostęp do rejestrów HW jest przez rozkazy assemblera in/out i nie jest...
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.
Napisałes że najwyższy priorytet mają informacje z PC więc do nich musisz podporządkować pozostałe kroki programu. Z drugiej strony obsługa w przerwaniu portu szeregowego i przepisanie danych do tablicy to raczej działanie "błyskawiczne" ;)...
W przerwaniu mam zamiar uruchomić timer1, w którym wykorzystuje Input Capture by zatrzasnąć kolejne zbocze opadające Timer powinien sprawdzić stan pinu za jakiś czas np 30ms. Powinieneś to jeszcze połączyć z wykrywaniem zarówno zbocza opadającego jak i narastającego. Zależnie od tego, które zbocze wywołało przerwanie zwiększasz lub zmniejszasz zmienną...
To prawda że nie są to procesory wielordzeniowe. Windows może wykonywać kilka zadań "jednocześnie" pracując na procesorze jednordzeniowym ( pamięta ktoś może 386, 486, pentium 166 itp ? ) Zrobiłem kiedys program "wielozadaniowy" na at90s8535 polegało to na odczytaniu stanu interesujących mnie wejść w pętli głównej programu i wywołaniu odpowiednich procedur....
Standardowo nie masz zegara o potrzebnej rozdzielczości. Ja bym zrobił tak: napisał własną obsługę przerwania timera systemowego (nie RTC) aby uzyskać licznik do pomiaru z zadana dokładnością, podłożył ją pod tę standardową, podkręcił częstotliwość przerwań (standardowo jest to ok 18 Hz) do takiej jak potrzeba. Wtedy w przerwaniach od transmisji używał...
Żeby zrobić menu - potrzebujesz dodać kolejne funkcje obsługi odczytu i wyświetlania temperatury. Obsługę wyświetlania i poruszania się po menu itd. Ponadto istniejącą procedure obsługi PCF musisz rozszerzyć o procedury odczytu i zapisu daty oraz obsługę budzika. Kolejna sprawa to wprowadzenie przerwań. Tzn. Ustawiasz w PCF odpoowiednią datę budzika...
Jedyne co możesz zrobić w tej sytuacji, to nie zmieniać programu, a w miejsce S4 podłączyć S1. Dlatego, że korzystasz w tym przypadku z przerwania zewnętrznego EINT2, które to nie jest dostępne (ani żadne inne przerwanie zewnętrzne) na pinie do którego podłączony jest klawisz S1. Możliwość przełączenia jest prosta, wystarczy spojrzeć na schemat zestawu...
Ja ogólnie etap migania diodami mam już za sobą zrobiłem parę projektów prostych wykorzystujących TIMERY, Przerwania zewnętrzne, obsługę klawiatury bądź LCD i teraz zamierzam się właśnie dokształcić w interfejsach a doświadczenia w tym temacie nie mam, dlatego też pytam się was. A co sądzicie aby ten problem spróbować zrobić na interfejsie SPI? Z tego...
Umieść LCD również na magistrali adresowej wraz z RAM. Oczywiście LCD musi mieć adres inny niż RAM (wykorzystaj pin A15 do aktywacji LCD'ka i dezaktywacji RAM). I wtedy wysyłasz dane do LCD'ka również rozkazem movx (at)DPTR,A. Musisz tylko zrobić sprzętowo generację ENABLE dla LCD (bramki NAND i sygnały RD i WR). Chyba że masz jakiś niestandardowy LCD...
ok.tu mam cały program,który pisałem aby zrobić zabezpieczenie przed kradzieżą auta - podajesz kod z klawiatury,wszystko wyswietla sie na wyswietlaczu,poprawny kod wystawia jeynkę na pin P1.0 AT89S52 a to z kolei zamyka tranzystor sterujacy prcą przekaźnika który zamyka obwód rozrusznika auta :))Oczywiscie trzeba odpowiednio ukryć układ w aucie tak...
Ale jak ktoś mógłby wyjaśnić przerwania na innych pinach niż 2 i 3 to będę wdziezny Jeżeli masz płytkę Uno, to obsługa przerwań zewnętrznych jest standardowo dostępna tylko na pinach 2 i 3: https://www.arduino.cc/reference/en/lang... Jest jednak możliwość obsługi przerwań na innych pinach, ale jest to...
wyświetlacz nie pracuje tylko i wyłącznie w trynie odczytu to zwykła głupota, wyjściem może byś zapamiętanie stanu portu w przerwaniu i odtworzenie go po wyjściu z przerwania, w tym przypadku zalecałbym wykorzystanie wyświetlacza bez wykorzystania flagi zajętości. 2 wyjściem może być wyłączanie przerwania od klawiatury podczas realizacji funkcji obsługi...
W obsłudze przerwania; w pętli głównej; w podprogramie obsługi klawiatury... jednym słowem tam gdzie jest taka potrzeba. Jak zrobić? W rejestrze PINx(x to litera danego portu) masz aktualny stan bitów portu. Odczytując wiesz, czy przycisk wciśnięty.
dondu - można poprosić fragment Datasheet lub stronę czy kawałek kodu ? Mój kod jest bardzo rozbudowany i stricte pod rozwiązanie urządzenia które mam, ale oczywiście mogę naprowadzać i poprawiać kod napisany przez autora tego tematu. Z chęcią pomogę ale dopiero późnym wieczorem. Teraz - przygotowania świąteczne więc wybaczcie :D Proszę także brać...
Witam, Chciałbym napisać program (w Codewarriorze) który na wyświetlaczu 2x16 na grónej linijce będzie odliczał sekundy a na dolnej wyświetlał dane zczytywane z klawiatury matrycowej. Jak to najprościej zrobić? Wydaje się że trzebaby użyć przerwań wewnątrz których byłby napisany podprogram który by co sekundę zmieniał stan sekundnika, a w głównym programie...
Tutaj nie ma znaczenia jak często host będzie żądał obsługi. Jeśli program ma być napisany zgodnie ze sztuką to musi obsłużyć taka ewentualność. Najczęściej transmisja host -> klawiatura odbywa się w sytuacji naciśnięcia klawiszy CapsLock, NumLock (bo wtedy host zapala odpowiednią diodę na klawiaturze) oraz w sytuacji resetu systemu (np po włączeniu...
FastAVR jest mocno związany z asemblerem i daje bardzo efektywny kod wynikowy - Bascom się chowa przy nim. Ale tak jak w asemblerze trzeba pamiętać o deklaracji i inicjacji każdej zmiennej. Pierwsze 3 linie definiują typ proca, głębokośc stosu, prędkość zegara - ważne dla symulatora. Definiuję przerwanie od Timera0 i ustalam tryb pracy Timera0 Definiję...
http://obrazki.elektroda.pl/9745806300_1... Witam. Sesja się zbliża, więc tradycyjnie zacząłem już prokrastynować :D . Ostatnio zacząłem pisać bibliotekę do obsługi klawiatury PS/2 w C dla AVR i postanowiłem na szybko w godzinkę lub dwie stworzyć jakiś praktyczny projekt w celu jej przetestowania. Początkowo nie planowałem tego publikować,...
do bascoma można dokupić dodatkową bibliotekę emulującą klawiature PS/2. Sam używam tej biblioteki do paru projektów. W bascomie niepowinieneś mieć problemow jest bardzo prosty (no czasami są problemy z przerwaniami).
Daje to mi 10 wywolan przerwania z czego 9 'niepotrzebnych' . Tu pierwsze pytanie o jakim procku my mowimy, zeby zalowac 9 przebiegow bardzo prostej funkcji Takiego stylu programowania uczyłby kolega w szkole? kolejne 10800 wybudzen Ile trwa praca procesora po takim wybudzeniu, niech bedzie 10ms co daje stosunek 1:800. W praktyce bedzie to poniżej...
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...
Rozwiązaniem problemu okazało się użycie zaimplementowanych w mikrokontrolerze AtMega328 tzw. timerów. Dostępna w Internecie biblioteka TimerOne, dodaje gotowe funkcje do obsługi przerwań czasowych. Rozwiązanie to w całości rozwiązało mój problem.
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
W UART_Transmit nie ma nic takiego co mogłoby powodować gubienie tych znaków a wygląda tak: Dodano po 10 Właśnie zmniejszyłem częstotliwość przerwania do obsługi klawiatury do ok 30 razy na sekundę i zwiększyłem predkość transmisji do 19200 bps i jest dobrze cały string jest przesyłany w komplecie :) Dzięki bartosz.tarnowski
NP: IF A and B and C then coś tam się dzieje end if A B C to klawisze ( piny porty zmienne ) Pozdro! I to powinno dziać się w obsłudze przerwania, jeżeli ma to się rzeczywiście natychmiast stać. Klawiaturę podłącz tak, aby po wciśnięciu dowolnego klawisza generowała określony stan, linię z tym stanem podłącz do pinu zewnętrznego przerwania w kontrolerze,...
W najprostszym przypadku ProcessMessages pozwala na przetworzenie kolejki wiadomości. Polecenie PeekMessage odbiera oczekujące wiadomości i tworzy specjalną strukturę. kolejne polecenie służy do obsługi wirtualnych kodów wiadomości związanych z klawiaturą. Ostatnie polecenie przekazuje komunikat procedurze obsługi komunikatu. Nie jest prawdą, jak przedmówca...
markosik20: Aaa widzisz, jednak nie wszystko napisałem: unsigned char znak_klaw = 0x00; sbit dana_klaw = P3^1; sbit zegar_klaw = P3^2; Zmienna zegar_klaw to sygnał zegarowy z klawiatury, a dana_klaw to dana przesyłana z klawiatury. No ale zauważ, że po wywaleniu funkcji inicjalizacja_LCD() program działa prawidłowo więc wszystkie funkcje while() w przerwaniu...
Zdaję sobie sprawę że program nie jest żadnym mistrzostwem świata (np. pierwsza cyfra zawsze mocniej świeci), ale program spełnia moje założenia. To zależy, jakie są Twoje założenia. Jeśli chciałeś osiągnąć to, żeby wykonać ten jeden konkretny projekt, bo był Ci potrzebny i na tym planujesz poprzestać, to może i bitwę wygrałeś, chociaż w niezbyt dobrym...
Załączam 2 programy do obsługi RS-232 w Turbo Pascalu. Są to programy terminalowe, ale uproszczone w ten sposób, że najpierw jest wczytywane polecenie z klawiatury, wysyłane do modemu, a potem wypisywana jest odpowiedź modemu. Można więc wykonać jedno polecenie AT. Programy operują na portach (bez BIOS'u), jeden z użyciem przerwań, drugi bez. Niestety...
Co do odmierzania czasu to możesz to zrobić na wiele sposobów. W normalnych pętlach albo klawiaturę obsługiwać w przerwaniu, wtedy opóźnienie definiuje to przerwanie i nie angażuje zbytnio procesora. A z drugiej strony to poszukaj na forum, sam tu umieszczałem program obsługi klawiatury matrycowej.
No tak, wyświetlacz jak najbardziej jest w przerwaniach. A możesz rozwinąć dokładniej co masz na myśli obsługi klawiatury od timera... Bo wiem mniej więcej jak to się robi w przypadku "normalnej" klawiatury, nie wiem jak tego użyć do klawiatury matrycowej. Klawiatura jest w zestawie uruchomieniowym [url=http://www.btc.pl/pdf/zl3avr.pdf]ZL...
Idea jest zawsze taka sama, bez wzgledu na procesor. Jezeli Verengard nie uzywa zadnego OSa to moze zrobic to na przerwaniu od timera.
Najlepiej zrobić to w obsłudze przerwania od timera. Tak jak pisze kolega Alagner - licznik ustawić na np. 100Hz, a w obsłudze przerwania muszą być liczniki programowe realizujące odliczanie czasu - pierwszy liczy do 100, co daje na jego wyjściu 1s, a następny może już odliczać sekundy, następny minuty, godziny, itd... Jednocześnie w tym przerwaniu...
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...
No właśnie z tego niewiele wynika, bo nie widać dobrze połączeń (ścieżek) pomiędzy poszczególnymi elementami płytki, ale zakładam, że to zestaw uruchomieniowy wcisnąć klawisz i nie puszczać do czasu, kiedy timer wyłączy diody, puścić klawisz i zaobserwować reakcję diod. Można ewentualnie spróbować wyeliminować problem stosując sprzętowy debouncing....
Dziękuję BlueDraco za zainteresowanie się moim problemem oraz za uwagi, których do końca nie bardzo rozumiem. Program jest poskładany z przykładów, które są podane w literaturze, być może tam też są błędy, które ja nieświadomie powielam. Jeżeli chodzi o priorytety przerwań. Co masz na myśli pisząc, że różnicuję priorytety i doprowadzam do zagnieżdżania...
Witam! W ramach napisania programu do obsługi klawiatury na złączu PS/2 chciałem zapoznać się obsługą uart w przerwaniu wyzwalanym zewnętrznym sygnałem. Sam uart działał, poprawnie wysyłał znaki, same przerwania zewnętrzne także działały, natomiast próba wysłania pojedyńczego znaku w przerwaniu kończy się niepowodzeniem tzn. terminal nie odbiera żadnego...
I ostatnia rzecz: w instrukcji montażowej pisze, ze dla kwarcu 8MHz trzeba zastosować układy U5 i U6 z serii 4518 a nie 4520. Czy będzie problemem jak zamontuję jednak 4520'stki (takie bowiem posiadam)? Cześć! U5 i U6 dzielą CLK tak, aby uzyskać 500 Hz dla NMI (przerwanie niemaskowalne). Jest to ważne, ponieważ od tej częstotliwości zależy dokładność...
Tak, ale klawiatura jest częściej skanowana i trzeba odczekać jakiś czas aby DS przekonwertował temp. a to przerwanie które używam jest od PCF8583
obsługa przycisku przerwaniu arduino obsługa klawiatury obsługa klawiatury atmega
realtek dźwiękowa naprawić spawarka dopisanie sterownika citroen
firstchip fc1178bc epson l3250
Parkside PAS 125 F5 Angle Grinder IC Identification, Common Control ICs, and Datasheet Sources Instrukcje obsługi i serwisowe Samsung Renaissance: MQ-910A, CD-1310B, MQ-910Q, MQ-1310D