To zapewne nie przechodzi przez kompilację: Pułapka 1: Zerowanie bitu przez wpisanie jedynki Czyli zamiast zgasić flagę ustawiłeś ją ponownie :) Inna sprawa że robisz to niepotrzebnie, ponieważ flaga ta jest gaszona sprzętowo zaraz po wejściu do funkcji obsługi przerwania: Bit 6 – INTF0: External Interrupt Flag 0 ... The flag is cleared when the...
Przerwanie oparlem o wywolania DOS-owe XOR_BX,BX -> zerowanie BX XOR_CL,CL -> zerowanie CL POCZATEK: MOV_AH,08H -> ustawia ze odczyt klawiatury INT_21H -> wywolanie przerwania odczyty klawiatury MOV_CH,AL -> do CH znak ASCII klawisza nacisnietego CMP_AL,13 ->sprawdzenie czy ENTER JNE_DALEJ ->jak nie ENTER to skacz dalej CMP_CL,1...
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...
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...
W takim razie: 1. Weź dowolnego procka ze sprzętowym USB. Dla Ciebie chyba każda Xmega poza serią E będzie ok. Nie piszę o ARM czy PIC, ponieważ napisałeś na wstępie AVR. 2. Odpal sobie demo HID z ASF w AS6. 3. Skonfiguruj dowolny licznik do generowania cyklicznych przerwań, np. co 10ms, (albo skorzystaj z przerwania USB_SOF co 1ms), a w przerwaniu...
Nie używaj do odczytu przerwania, tylko zrób skanowanie jak w normalnej klawiaturze. Stan portu odczytujesz ciągle co np. 5ms (wykorzystaj przerwanie timera). Jeżeli 3 odczyty (lub więcej, dobierzesz eksperymentalnie) pod rząd są takie same to oznacza, że odczytałeś jego stan.
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...
Odnalazłem problem a powód był taki iż nie wyzerowałem flagi INTF0 od int0 Nie wystarczy wyłączyć przerwanie.
kod pojedynczego klawisza ma 11 bitów z tego 8 bitów danych, chciałem zapytać czy clock działa cały czas czy wypuszcza 11 impulsów przy naciśnięciu klawisz?? jeżeli działa cały czas (tak pewnie jest) to czy w tym schemacie w linku ta informacja zostanie wyświetlana, czy "przeleci" przez diody rejestry i diody, jeśli tak to jak ją zatrzymać aż do naciśnięcia...
Jest niemozliwe poniewaz zastosowale petle Do Loop z ktorych nie ma wyjscia (Loop jest przed Return) Lepiej bedzie jak odczyt klawiatury zrobisz na przerwaniach. I wtedy bedziesz bez problemu mogl wywolywac nieskonczone procedury. Zawsze kiedys przyjdzie przerwanie ktore bedzie moflo sprawdzic klawisz i wywolac inna procedure jesli zajdzie taka potrzeba....
Faktycznie aktywnym stanem jest zero i wtedy ten fragment kodu nie powinien dać żadnego rezultatu, ale co dziwne cokolwiek nacisnę i tak się wykona. Znaczy, dlaczego nie. Jak wcisnąłeś przycisk 0, a sprawdzasz 2, to przerwanie sie wygeneruje, ale na dwójce jest stan wysoki, to warunek (pierwszy) zadziała. Jak sprawdzam czy stan jest równy zero to też...
Witam Faktycznie pomyliło mi się call z icall. Ale do rzeczy, program główny nic innego nie robi. Wyłącz przerwania i w programie głównym daj skok call Odczyt_klawiatury nie zapomnij zmienić reti na ret. Jeżeli procedura odczytu klawiatury jest ok powinno działać. Jeżeli dalej nie będzie działać to najpierw emulacja w avrstudio, a później szukać na...
A jak skanujesz port klawiatury ? Znaczy w jaki sposób zrealizowałeś odczyt bitów na pinach klawiszy ?
Czyli zamiast robić na przerwaniu INT0 zrobić na timerze? Ale wtedy schemat by pozostał taki sam bo co wtedy zrobić z sygnałem z klawiatury do INT0? A kod do odczytu aktualnego klawisza jest w porządku?
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.
Podczas odbioru danych z pinu PD2 ( funkcja zgłoszenie ) występuje błąd tylko wtedy gdy przerwanie z timera 0 jest aktywne. Gdy na czas odbioru danych zablokuję to przerwanie procesor ładnie odbiera wysyłane do niego dane. I moje pytanie brzmi: Co jest nie tak z przerwaniem? Konkretnie to, co wskazał albertb: ... jeśli masz włączone przerwanie to jego...
W zasadzie sporo kodu to obsługa menu i lcd, ten kawałek najlepiej wykorzystać zamykając go w funkcji np void obsluga_ui() Odczyt klawiatury najlepiej zrealizować w przerwaniu, w którym odczytujesz porty we i ustawiasz kod klawisza w zmiennej. Wówczas w funkcji już używasz gotowego kodu. Do tego dojdziesz potem, jak posprzątasz obecny kod. Doprowadź...
Zastosowanie volatile wygląda OK, problemu szukałbym w innym miejscu. Może gdzie zadeklarowałeś zmienna lokalną o takiej samej nazwie "przerw_KL" i ci przesłania zmienną globalną? Rozumiem, że jest to program jakiegoś menu wielopoziomowego. Nie wiem jak u ciebie wygląda przepływ sterowania, ale problem może leżeć w tym, że po naciśnięciu przycisku w...
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
Ż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...
_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...
Kilkanaście lat temu, jak programowałem w Turbo Pascalu, to zdarzało mi się pisać proste gry i animacje. Wtedy nie korzystałem z zegara czasu rzeczywistego, tylko była instrukcja opóźniająca, była to pusta pętla trwająca jakiś czas (byłem bardzo początkujący i próbowałem takie pomysły zrealizować mając do dyspozycji oczekiwanie na klawisz, sprawdzenie,...
Mam jeszcze jedno pytanie. Czy cały ten kod czyli kalmana , PID i odczyt czujników mam wrzucić w jedno przerwanie? A np. ewentualnie wyświetlacz i klawiaturę obsługiwać w pętli głównej? Czy macie inny pomysł? Proszę o odpowiedź, chciałbym już zacząć pisać program:)
Witam Oczywiście tyle będzie przerwań na sekundę. Ja bym to zrobił na innych wartościach. Prescaler ustawiłbym na 1024 i zliczanie 108 impulsów przez licznik. Uzyskuje się w ten sposób przerwanie co 10ms (100 na sekundę), które można wykorzystać do odczytu klawiatury i łatwego robienia różnych układów czasowych z dokładnością 10ms. Do tego jest korzyść...
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.
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....
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...
Generalnie port jest zatrzaskiem więc nie ma sensu się martwić czy dana informacja się zmieni czy nie do czasu kolejnego zapisu do portu :) To daje ci sytuację taką korzystną sytuację że nie musisz się martwić o to co rozbi procek w tym czasie. Pytanie jak bardzo zależy ci na dokładności odmierzenia czasu w przypadku zapalania diody na około 1s lub...
nie rozumiem twojego pytania co miałeś na mysli/ albo celu... Przerwanie(funkcja) biosu obsługi klawiatury: INT 16h gdzie AH=0 która oczekuje na nacisniecie klawisza i odczyt znaku -> http://webster.cs.ucr.edu/AoA/DOS/pdf/ch... konkretnie 13.2.8
http://obrazki.elektroda.pl/5579748400_1... Dendy Keyboard Transformer - podłącz klawiaturę i magnetofon do Pegasusa! Artykuł powstał jako opis zmagań z próbą zrobienia reprodukcji kardridża Keyboard Transformer - rosyjskiego wynalazku, który umożliwia pisanie programów w BASICU. Kardridż udostępnia gniazdo klawiatury i magnetofonu...
1) czy jest konieczne stosowanie kondensatorów. Jeśli są potrzebne to jak podłączyć kondensatory, czy równolegle do każdego z przycisków (czyli 64 kondensatorów) czy może jest jakiś inny sposób na to. Moim zdaniem nie ma takiej potrzeby. 2) czy jest konieczne stosowanie rezystorów podciągających. czy przy porcie gdzie wystawiam czy tam gdzie odczytuje....
jest to deklaracja zmiennej "bufor", która jest tablicą bajtów ("db"), która zawiera kolejno: - bajt o wartości 2 - bajt o wartości 0 - 2 bajty o wartości niesprecyzowanej ( 2 times dup licate value " ? ") Jest to typowa deklaracja buforu służącego np. do odczytu tekstu z klawiatury za pomocą przerwania, w takim przypadku: - przed wywołaniem przerwania...
Kolejne pytanie: Jeśli chcę odebrać kilka znaków z klawiatury to powinienem wpisać to w jakąś tablicę? Jeśli chcę wysłać do PC cały wyraz to jak to robić? Możesz to zrobić różnie. Zależy czego potrzebujesz i na ile jesteś wprawny w programowaniu w C. W każdym z przypadków trudno jednak będzie się obyć bez tablic dla ciągów znaków odbieranych i wysyłanych....
Obsługa klawki 4x4 void KBD_init(void) { KBD_DIR = 1<<KBD_col1 | 1<<KBD_col2 | 1<<KBD_col3 | 1<<KBD_col4 | ~(1<<KBD_row1 | 1<<KBD_row2 | 1<<KBD_row3 | 1<<KBD_row4); KBD_PORT = 0xFF; }; unsigned char KBD_read(void) { KBD_PORT=0xff; KBD_PORT &= ~(1<<KBD_col1);...
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.
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ć,...
1. Aktywacja wiersza klawiatury. 2. Odczyt stanu kolumn dla tego wiersza. Resztą bym się nie przejmował, bo to w zasadzie nie działa. Klawiatury nie skanuje się w pętli, tylko na przerwaniach. Tak, jak to jest zrobione, jakakolwiek reakcja na klawisz następuje po zwolnieniu go, co jest strasznie wkurzające dla użytkownika. Kod jest ciekawy dydaktycznie,...
No właśnie, Możesz skopiować funkcje którą podałem ci w poprzednim wątku, ta z przerwania odczytująca stan przycisków. Dodatkowo uzbroić ją jak wyżej (at)excray napisał w odmierzanie czasu naciśnięcia. Wówczas odpowiednio ustawiasz kod klawiatury. Algorytm mniej więcej... Zaznaczam w funkcji który guzik nacisnieto, w kolejnych przerwaniach zliczamy...
Witam, Od wczoraj zmagam się z odczytem znaków z klawiatury AT. Vcc, GND podpięte, CLK podłączone do INT0 (przerwanie na opadającym zboczu), a DATA na PB0. Odebrane dane wysyłam po USARcie do PC. Odbieram je w Realtermie. Niestety nie mogę sobie poradzić z interpretacją skankodów. Jednorazowe wciśnięcie i zwolnienie klawisza, konczy sie wyslaniem 6...
Jest jeszcze przerwanie PCINT wyzwalane dowolnym zboczem. Wejść PCINT jest zdecydowanie dużo, zatem można reagować nie tylko na dwa przerwania INT0/1. Fakt, nie wszystkie AVRy to mają. Co do programowej obsługi to trzeba skanować klawiaturę w krótkich odstępach czasu i porównywać stan bieżący z poprzednim odczytem. Niestety czas musi być dość krótki...
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...
Różnica taka, że AVRy mają odczyt danych w innym rejestrze niż zapis. Kiedy czytasz z PORTD to odczytujesz to co wcześniej tam sam zaisałeś. Proponuje manuala i troszecczke go zwiedzić...
Witam, spróbuj teraz przeniosłem procedurke odczytu bezpośrednio do przerwania, według mnie to czekanie sekundy i wyświetlanie było powodem problemów. Jeszcze jedno po co czekasz sekunde w obsłudze Menutemperatury?. Pozdrawiam
Nigdy nie korzystałem z Getkbd, bo nie miałem takiej potrzeby, ale nie sądzę aby nie można było skorzystać z tej instrukcji w przerwaniu. W końcu nie są tu angażowane żadne timery, ani zaplanowane opóźnienia - po prostu zapis do portów i odczyt.
Też obstawiam za krótkie opóżnienia, ew. ustawianie wartości IO i natychmiastowe odczytanie - AVR muszą mieć NOPa, żeby zsynchronizować latcha na pinie pracującym jako wejście. BTW, jak koledzy napisali pomysł z matrycą w tym przypadku jakoś marnie wyszedł :) To można zrobić na jednym pinie ADC - przyciski zwierają rezystory na drabince R2R robiącej...
OK, to urządzenie MUSI być niezawodne, wiec myślę ze najlepiej będzie jeśli jednak zrobię tą komunikację od nowa na przerwaniach. Rozgryzam powoli implementację Atmela ( http://www.atmel.com/images/doc2564.pdf ). Przykład przeanalizowałem i rozumiem jak działa. Problem pojawia się kiedy chcę odczytać od konkretnego adresu w slave, chyba trzeba by dorobić...
Na początek mniej istotna dla Ciebie uwaga, ale przydatna. Używaj nowych wektorów przerwań i funkcji ISR() zamiast SIGNAL(). http://www.nongnu.org/avr-libc/user-manu... Kodu jeszcze nie analizowałem.
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...
ppawel12: 1. Podział na pliki nie zmniejsza kodu. 2. Co do wykorzystania peryferiów to zależy od projektu 3. Autor napisał że jest to ZL3AVR 4. Odnośnie braku konfiguracji INT0 - masz racje, o tym zapomniałem 5. Dla klawiatury matrycowej jest tylko jeden możliwy wariant całego odczytu klawiatury w przerwaniu - 0 na wszystkie kolumny, a jak wystąpi...
najprostrzą metodą zabezpieczenia (zresztą napisałes) sie jest wyłaczenie przerwania na czas przesuwania bufora i to wszystko. Co do przepelnienia sie zapisu w procedurze odczytu z klawiatury nalezy tylko sprawdzac czy nie wychodzimy z licznikiem poz zakres n bajtów bufora Na przesuniecie 32 bajtów mamy czas okolo 10mkrS czyli oko 160 cylki przy 16MHz...
//CIACH Widze danielbela że wykorzystujesz atmege 16 więc można tam wykorzystać przerwania PCINT (wywoływane zmianą stanu) więc można wsio robić w przerwaniu i bez diodek (jeśli nie chcemy skanować jej ciągle). //CIACH Niestety nie da się wszystkiego zrobić na przerwaniu. Tj. można zrobić odczyt samego naciśnięcia klawisza. Jednak jak będziemy chcieli...
Ok. Fajne. Powtarzanie można rozwiązać też w inny sposób. Ja na przykład używam zmiennej globalnej menu_event która jeśli nie wciśnięto żadnego klawisza jest zawsze równa zero a jeśli wciśnięto to zawiera kod klawisza. Program korzystający ma za zadanie na samym końcu obsługi wyzerować tą zmienną a odczyt jest w przerwaniu od zegara co 20ms i działa...
Mały uC ale pewnie starczy wyprowadzeń żeby podpiać lcd - będzie odrazu widać co się dzieje. Jak nie to może chociaż sprzętowy uart - tylko musiałbyś pamieć przypiąć pod inne wyprowadzenia. Reset Tcon.0 Enable Interrupts Enable Int0 On Int0 Odczyt zapisz tak dla pewności: On Int0 Odczyt Reset Tcon.0 Enable Int0 Enable Interrupts albo tak: on int0 odczyt...
https://obrazki.elektroda.pl/7497170000_... Był już 8051, teraz pora na Z80. Komputer składa się z kilku modułów. Płyta główna zawiera procesor Z80, pamięć 512kB ram i 512kB flash, układ IO 8255 i spinający to wszystko w całość leciwy 5V CPLD Atmela ATF1502AS, który działa też jako przełącznik banków pamięci. Wcześniejsza wersja zamiast...
Witam, - układ jest w permanentnym stanie reset, a więc interesuje cię, co jest na pinie 1 Jak już pisałem na początku: złącze CN180, dokąd to idzie? Nie bardzo rozumiem. Schemat połączeń umieściłem w 3cim poście. Złącze CN180 łączy się ze złączem CN001. Jak i gdzie idą sygnały z gniazda CN180 pokazuje schemat. układ jest w permanentnym przerwaniu,...
Jak masz klawiaturę podłączoną do portu C to nie będzie działać. Powodem jest standardowo uruchomiony J-TAG. Spróbuj z inną końcówką wyzwalającą przerwanie.
W przerwaniu sprawdzam 2 ostatnie stany jeśli są takie same zakładam że przycisk został wciśnięty W czasach "bez procesorowych", były układy scalone eliminujące drżenia styków. Dla jednego syku był to szeregowo-równoległy rejestr przesuwny, 8-wejściowa bramka NAND, 8-wejściowa OR i przerzutnik RS. Gdy na wszystkich wyjściach rejestru były jedynki,...
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...
czyli jak przykładowo dam: [syntax=basic4gl] do if flaga = 1 then 1wreset 'reset 1wwrite &H55 1wwrite &HCC 1wwrite &H44 'dokonaj konwersji end if if flaga = 2 then 1wreset 'reset 1wwrite &H55 1wwrite &HCC 1wwrite &HBE Temperatura(1) = 1wread(2) 'odczytaj dwa pierwsze bajty end if 'DALSZA OBRÓBKA DANYCH.... 'inne rzeczy - obsługa przycisków czy coś innego......
Ludzie momentami mnie PRZERAŻACIE. Ja robiłem multipleksowanie 4 cyfr 7-segm., linijki swietlnej i klawiatury z DS1820 w systemie pod AT89C2051 i nie mam żadnych problemów - blokuje przerwanie po całym kompletnum obiegu wykonuje transmisję przez 1wire po czym wlaczam przerwanie i dziala mi TAAK. p.s. nie uzywajmy bascoma i wszystko sie da
Podłączyłem klawiaturę PC do uC attiny2313. Dane są odczytywane, tzn. na lcd wyświetlany jest dany klawisz który został naciśnięty. Chciałem zrobić sterowanie menu za pomocą klawiatury. Najpierw napisałem prosty program, który powinien po naciśnięciu przycisku z numer "2" wyświetlić tekst na LCD. Program ten umieściłem w pętli głównej, a odczyt danych...
czyli twoja wersja to prawdopodobnie AMI Bios (American Megatrends Inc.) jeżeli tak to tutaj daję Ci dźwieki jakie wydobywa z siebie płyta główna przy problemach : 1 sygnał - Błąd odświeżania pamięci DRAM (układ odświeżania pamięci na płycie głównej komp jest uszkodzony). Rozwiązanie: Wyjmij i włóż moduły pamięci jeśli to nie pomoże to wymień pamięci...
Klawisze obsługuje się w przerwaniach tzn. Układ kontroli klawiatury wysyła przerwanie do komputera, który odczytuje kody klawiszy z bufora układu kontroli. Jest taki gotowy scalak 8279 http://www.aldec.com/IP_Services/Datashe... Ma on wyjście równoległe. Można też zrobić klawiaturę przeglądaną przez jakiś mikrokontroler (Atmel albo inny) wysyłający...
mozna to rozwiazac na kilka sposobow... jeden z nich: to zalezy jak odmierzasz sekunde, jesli masz timer ustawiony np na 0,2 sekundy i w przerwaniu timera zliczasz liczbe przerwan, to mozesz skanowanie klawiatury wrzucic w obsługe przerwania, wtedy na kazdym przerwaniu bedzie to odczytywane jako jedno wcisniecie klawisz, wiec jesli masz timer na 0,2...
Jeśli dobrze rozumiem komunikację PS/2 to na porcie B powinno być wysokie napięcie gdy kliknę jakikolwiek przycisk na klawiaturze. A tak się nie dzieje. Dlaczego? PS/2 to nazwa zarówno złącza jak i protokołu komunikacyjnego. Klawiatura jest urządzeniem, którego złącze PS/2 jest dwukierunkowe, to znaczy że z i do kontrolera klawiatury można wysyłać...
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,...
Witaj :D Według mnie tablica jest niezbedna poniewaz to w niej sa zapisane wlasciwe znaki , i wydaje mi sie ze nauczuciel sie myli bo samo polecenie getatkeyb() zwrocilo by numer wcisnietego klawisza a nie konkretna literke , liczbe czy znak . Przykladem moze byc fragment polskiego helpa do bascom-a w ktorym jest opisane dzialanie tego polecenia Funkcja...
Tylko, że kolega chce sprawdzać stan wyjścia które sterowane jest sprzętowo przez licznik. Poza tym zdarzyć się może ze stan któregoś piny zmieniany jest np. w przerwaniu a ty chcesz w pętli głównej sprawdzić jego stan. Sam to stosuje dość często. Np. sterując buzzer, który włączany jest podczas przyciskania klawisza klawiatury 4x4 i innych akcjach,...
Nie wiem czy dobrze zrozumiałem? Ale po przerwaniu 16h mogłoby być: 1 jz powrót_do_pętli_przed_przerwaniem_16h 2 cmp al,(kod_klawisza_0) 3 jb powrót_do_pętli_przed_przerwaniem_16h 4 cmp al,(kod_klawisza_9) 5 ja powrót_do_pętli_przed_przerwaniem_16h 6. dalszy kod W skórcie to tak, tylko trzeba pamiętać o opróżnieniu bufora przed odczytem...
Chcę zaimplementowac RTC w mojej Atmedze. Mają to być przerwania od asynchronicznego Timera2. Coś nie działa, mam kilka pytań : 1. czy piny w porcie C (PC7 i PC6 które służa jako TOSC1 i TOSC2) trzeba ustawić jako we/wy ? czy wystarczy ustawienie bitu AS2 w ASSR ? 2. jakie powinno być napięcie na nich ( u mnie na obu pinach rezonatora jest 0.4 V). 3....
Ok. Wiec nie RTOS. Ale głównym problemem w tym projekcie są zależności czasowe. Max czas pracy jest zrealizowany w godzinach (0-99) wykorzystałem w tym celu alarm z PCFka. Potem wygaszacz 1minuta zrealizowany na T1 i sygnale zegarowym 1024 z PCF. Najgorszej gdy wchodzę w opcje otwierania. Tam tych czasów jest mnóstwo. Czas do otwarcia. Czas na otwarcie...
https://obrazki.elektroda.pl/6692889600_... Od jakiegoś czasu czułem potrzebę sterowania komputerem za pomocą niestandardowej klawiatury. W wielu przypadkach, takich, jak emulatory starych komputerów i sterowanie urządzeniami za pomocą klawiatury, można przypisać funkcję programu do klawisza na klawiaturze. Na przykład komputer ZX...
Świetny projekt, szczególny szacun za kod. Jestem w trakcie uruchamiania, ale chciałem dodać sobie wybór efektów z pilota... i tu pojawił się problem. kawałek kodu wstawiam jako funkcję lub bezpośrednio w okolicach funkcji odczytu klawiatury. Korzystam z biblioteki Adafruit. Przy "zaremowanej" funkcji "show()" wszystko działa jak należy, ale przy normalnej...
Impulsator nie będzie pracował na przerwaniu tylko zwykle w pętli do loop bo takie rozwiązanie wystarczy. W tejże pętli będą także wysyłane sygnały regulacyjne po I2C jako odpowiedź na regulacje wykonane impulsatorem oraz wyświetlane dane na LCD. Procedura obsługi przerwania od Rx (MIDI) odczytuje bajt i jeżeli równy jest 176 (nasze dane) to czyta dwa...
Został mi jeden pełen port, a implulsator trzebaby w GCPA podłaczyć w "dowiązaniu" do przerwania, czyli musiałbym dorzucić jeszcze ze dwie diody ale chyba byłoby to realne. Zreszta podłaczyłem teraz LCD i zostało mi 2 piny wolne na tym porcie, będę musiał pomysleć. Lepszym rozwiązaniem byłby odczyt impulsatora z procesora klawiatury, zobacze może coś...
Bez problemu mozna zrobic obsluge klawiatury matrycowej, LCD, RS, ADC na jednym timerze + petla glowna a efekt sekwencyjnego wywolywania kodu jest i tak niewidoczny dla uzytkownika. Jak chcesz migac 3 diodami, np. 1 co sekunde, 2 co dwie sekundy, 3 co trzy sekundy to bez problemu zrobisz to na timerze wywolywanym co sekunde. A i tak jest to przerost...
(at)waldus321 Weź pod uwagę, że PCF8574 daje bardzo słabą jedynkę - wg noty max 300 uA, typowo 100 uA. To może byc problemem, gdyż potencjalnie zakłócenia moga spowodować błędne odczyty rozłączonych przycisków. Ja bym dał zewnętrzne pull upy. Ponieważ wyjścia tego układu są niemalże typu OC, IMHO on się słabo nadaje do sterowania multipleksowego. Rezystory...
kompilator: RIDE v6.1.3 Próbuję napisać program obsługujący jednocześnie wyświetlacz LCD (2x20, interfejs 4-bitowy) oraz klawiaturę PC. To jest biblioteka obsługi LCD z której korzystam: #define port_LCD P2 sbit LCD_E = port_LCD^0; sbit LCD_RS = port_LCD^1; sbit LCD_RW = port_LCD^3; void czekaj(unsigned int x) { unsigned int i; while(x--...
http://obrazki.elektroda.net/23_12490334... Odczytywanie stanu klawiatury przy pomocy mikrokontrolera nie jest niczym odkrywczym, lecz potrafi sprawić wiele problemów gdy mamy do dyspozycji za mało pinów I/O lub gdy mikrokontroler musi szybko wykonywać inne zadania. W tym projekcie zaprezentowano dwa podejścia do tego problemu: klasyczne,...
Witam, Niestety w ANSI C nie ma przenośnej metody na nieblokujący odczyt ze stdin. Masz kilka wyjść, w zależności od systemu: 1) wykonać blokujący odczyt fgetc(stdin) i przerwać go sygnałem, np. setsignal() i alarm(), 2) wykonywać nieblokujący odczyt, np. fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK); read(fd, ...); 3) wykonywać select() lub poll()...
Stale to jest- ale ostatnio jakby więcej. "Napisałem program- działał. Dodałem odczyt z czujnika- przestał". Może postaram się opisać elementarne zasady korzystania z przerwań od Timera aby uzyskać możliwość obsługi więcej niż jednego zadania. Mamy program który wykonuje się liniowo- instrukcja po instrukcji. START deklaracje funkcji. definiowanie konfiguracji...
O możliwościach Agata nie będę się wypowiadał, bo niewiele o nim wiem. Może tylko tyle, co mogę wywnioskować z tego ciekawego emulatora Apple, Agat i innych klonów https://sourceforge.net/projects/agatemu... Niestety w opisie Apple II autor popełnił wiele błędów. Po części wynikają one zapewne z nieznajomości tego komputera, ale i z błędnych opisów,...
Przykładowy kod w C znaleziony w sieci: #define ATKbdPort PORTD #define ATKbdPin PIND #define ATKbdDir DDRD // #define ATKbdDta 0 // #define ATKbdGetDta (ATKbdPin & (1 << ATKbdDta)) // unsigned char volatile dane = 0, nowy = 0, i = 0; // Odczyt danych z klawiatury realizowany jest w ramach // obsługi przerwania zewnętrznego...
Witam! Na wstępie chciałem zaznaczyć, że od niedawna dopiero poznaję procesory z serii ARM. Bardzo dawno temu miałem styczność z 51- jedynką i keilem. Moje doświadczenie w programowaniu C też nie jest oszałamiające, natomiast asembler na ARM jak na razie jest przeze mnie mało zrozumiany. Proszę o wyrozumiałość przy pisaniu ewentualnych odpowiedzi, za...
1. Standardowy gameport nie ma możliwości generowania żadnego przerwania, natomiast port szeregowy (COM) - tak. 2. Dobrze byłoby oddzielić dwie kwestie : - Program w komputerze moze sie co jakiś czas, np. 1s(co przy dzisiejszych sprzętach nie zajmie to nawet 1 % mocy obliczeniowej) pytać mikroprocesora (np. przez RS-a), jakie ostatnio były wciskane...
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...
https://obrazki.elektroda.pl/9443989800_... Jednopłytkowy komputer oparty na mikroprocesorze 8085 Założeniem było zaprojektowanie i zbudowanie prostego komputera na jakimś prostym procesorze w celu nauki assemblera. Konstrukcja oparta jest na wcześniej wspomnianym mikroprocesorze Intel 8085. Dlaczego akurat taki? Taki akurat miałem...
Cześć, Właściwie to z czym masz problem bo nie bardzo rozumiem. Według mnie nie powinieneś podłączać i klawiatury i LCD pod te same linie ponieważ o ile możesz określić sztywno czas przesyłania danych do LCD o tyle nie możesz określić chwili naciśnięcia klawisza co może zafałszować danąprzesyłaną do LCD. W przedstawionym przez ciebie schemacie zastosowałeś...
Witam forum. 1. Sytuacja PCF8583 podłączony do ATMega128 za pomocą I2C, wyjście INT z PCF podłączone go wejścia PE4 (INT4) mikrokontrolera za pomocą 4k7 pull-up resistor, zwartego do zasilania. Zegar działa bez zarzutu gdy czas/data jest odczytywany za pomocą odpowiedniej procedury. 2. Wyzwanie jest następujące: problem pojawia się w momencie gdy odczyt...
Witam...Dlaczego przerwania z Timera0 generowane nie sa zgodnie z dokumentacja? chciałbym zrealizować generator sterujący pinami portu PC0-7...w taki sposób aby wartości z tabeli --- unsigned char GenTab DDRC = 0xFF; // port C jako wyjscie 11111111 CLI(); //disable all interrupts TIMSK = 0x01; //timer interrupt sources TCCR0 = 0x00; //stop OCR0...
Namowiles mnie :) Prosil bym o przyspieszenie mojej edukacji i poszukiwan. Czy sa jakie sa jakies opisy, linki godne polecenia? Super ;) Trzeba by przeszukać forum - jest sporo linków. Kilka znajdziesz tu: http://www.elektroda.pl/rtvforum/topic30... Nosilem się z zamiarem podlaczenia do tego urzadzenia manipulatora/klawiaturki. jest tam 16 przyciskow...
PROSTA SPRAWA Z KLAWIATURĄ :) ja odczytuje klawiature 32x na sekunde Problem jest innego typu. Dla mnie klawiatura jest "zdarzeniem" na ktore nalezy "natychmiast" zareagowac. Dlaczego? Ano dlatego, ze robie m.in. stoper z dokladnoscia setnej sekundy z miedzyczasami. Tak wiec przelatywanie klawiatury nie wchodzi w gre. I to tez jest betka, bo wszak...
Podstawy się kłaniają ale do rzeczy. Ustawiłeś zmienna X jako bajt : Dim X As Byte a za chwilę robisz cos takiego: X = "141" Zmienna typu byte może zawierać wartości liczbowe z zakresu od 0 do 255 a nie jakiś teskt!!! Do tego celu służy zmienna typu string którą deklarujesz tak: Dim X As String * 3 Cyfra 3 informuje ile znaków będzie mogła...
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...
https://obrazki.elektroda.pl/3928983600_... Opiszę naprawę dość rzadkiej konsoli, polegającą na odtworzeniu schematu pierwowzoru, zaprojektowaniu i wykonaniu płyty głównej i dalszych krokach niezbędnych do przywrócenia jej życia i funkcjonalności, w których zastosowałem swoją nowatorską metodę. Będzie więc coś dla miłośników retro,...
Rzeczywiście, Atmega32 nie ma PCINT. Niemniej jak wspomniałem takie skanowanie lepiej jest zrealizować w oparciu o cykliczny odczyt. Wyklikałem poniższy kod ale nie gwarantuję, że jest on na 100% poprawny bo: - dawno nie pisałem w asemblerze - nie mam jak sprawdzić jego poprawności Idea jest taka, że w przerwaniu od przepełnienia T0 sprawdzamy klawiaturę...
Oczywiście - volatile. (Pozbyłem się tego niepotrzebnego TRUE) Jednak nie w tym problem. A mianowicie: Po naciśnięciu klawisza wykonuje się po raz pierwszy przerwanie. Odczytywany jest klawisz (INTCAP==0Bh GIPO==0Eh) Po zainicjowaniu rejestrów do następnego odczytu. Należy wyczyścić rejestr INTCAP, Czytając go, lub czytając GIPO. Tym samym linia INT...
Witam Podczas normalnej pracy z netbookiem samsung N130 kończyła się bateria. Windows zakrzyczał ze jest już poziom krytyczny bateri. Wyłączyłem go ręcznie przyciskiem, system normalnie się zamknął. Nastepnego dnia netbook nie włacza się słychać tylko kod biosu phenix 4 pauza 2. Bateria jest naładowana ale nie włącza się, także ekran, na kablu bez zmian....
Witam Klawiatura zbudowana jest za pomocą sześciu przycisków monostabilnych, podłączonych do portu PF0-PF5. Równolegle z każdym przyciskiem jest włączony kondensator elektrolityczny o pojemności 1µF w celu eliminacji wpływu drgań styków. Aby nie odczytywać stanu linii cały czas, zdecydowałem się na wykorzystanie przerwania zewnętrznego !INT7. Jest...
siedze nad tym 2 dni i nic :( Temat: Badanie serwisowe płyty głównej mikrokomputera Cel: umiejętność rozróżniania sygnałów sterujących płyty głównej. Umiejętność stosowania prostej diagnostyki komputera. Umiejętność rozpoznawania pkt. pomiarowych sygnałów zegarowych. 1. Wykonanie połączenia w/g zadanej konfiguracji sprzętowej np. z kooprocesorem, pamięcią...
przerwać klawiatura klawiatura odczyt atmega przerwać klawiatura
renault megane hamulce bramka logiczny samochodowa kamera
Ciśnienie za pompą myjącą w zmywarce: normy i diagnostyka Sharp LC-46LE830E - brak odbioru satelitarnego po burzy