tag:blogger.com,1999:blog-6085382734211687437.post6944731776545907774..comments2024-03-14T14:56:25.667+01:00Comments on Mikrokontrolery Jak zacząć - zbiór najczęściej udzielanych porad: Zaawansowana obsługa klawiatury ARM, AVR, PIC i inneUnknownnoreply@blogger.comBlogger21125tag:blogger.com,1999:blog-6085382734211687437.post-10548675285554575912018-07-18T18:15:48.110+02:002018-07-18T18:15:48.110+02:00Szanowni blogowicze,
Czy idzie w tej bibliotece zr...Szanowni blogowicze,<br />Czy idzie w tej bibliotece zrobić tak żeby po wciśnięciu dwóch klawiszy jednoczesnie wykonała się instrukcja? Próbowałem tak:<br />if( IsKey( KEY_ENTER & KEY_ESC ))<br /><br />ale nie działa.<br /><br />Pozdrawiam KamilAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-6085382734211687437.post-85433471707403809122014-11-23T01:00:24.891+01:002014-11-23T01:00:24.891+01:00http://www.elektroda.pl/rtvforum/viewtopic.php?p=1...http://www.elektroda.pl/rtvforum/viewtopic.php?p=14156636#14156636Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6085382734211687437.post-57424330409853881102014-11-22T01:16:34.960+01:002014-11-22T01:16:34.960+01:00Nie napisałeś co Ci nie działa i co chciałeś osiąg...Nie napisałeś co Ci nie działa i co chciałeś osiągnąć.<br />Załóż wątek na elektrodzie , dołącz cały kod i wklej tutaj link do tego wątku. Deucalionnoreply@blogger.comtag:blogger.com,1999:blog-6085382734211687437.post-8442405380718846302014-11-22T00:33:14.140+01:002014-11-22T00:33:14.140+01:00sory, że tak się rozciągnąłem, ale lubie przejrzys...sory, że tak się rozciągnąłem, ale lubie przejrzystość w kodzie :)<br />Dodam, że uC to ATmega8 a program piszę Atmel Studio 6.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6085382734211687437.post-77920667017475927482014-11-22T00:30:27.927+01:002014-11-22T00:30:27.927+01:00Niemam już nerwów do tego. Może mi ktoś powie co r...Niemam już nerwów do tego. Może mi ktoś powie co robie źle:<br /><br />#include <br />#include "keyb.h"<br />#define F_CPU 1000000 //ustawienie oscylatora na 1MHz<br />#include //dołączenie biblioteki z przerwaniami<br /><br />int main(void)<br />{<br />//ustawienie wejśc/wyjść<br /> DDRC=0; //Piny na porcie C jako wejścia<br /> PORTC |= (1<<PC0) | (1<<PC1); //PC0 i PC1 jako wejscia do sterowania prawo-lewo<br /> DDRB = 0xFF; //PORTB jako wyjścia<br /> PORTB = 0xFF;<br /> <br />//Ustawianie przerwań co 10ms <br /> TCCR0 |= (1<<CS02) | (1<<CS00); //ustawienie preskalera na 1024, źródło CLK, czyli standardowo przerwanie bedzie co 256ms (jeżeli nie ustawimy TCNT0)<br /> TIMSK |= 1<<TOIE0; //włączenie przerwania od przepełnienia licznika<br /> TCNT0 = 246; //ustawienie wartości początkowej<br /> sei(); //zezwolenie na przerwania<br /> <br /> while(1)<br /> {<br /><br /> switch( GetKeys( )) <br /> { <br /> case KEY_UP: <br /> PORTB=~PORTB;<br /> break; <br /> case KEY_DOWN: <br /> PORTB=~PORTB;<br /> break; <br /> } <br /><br /><br /> }<br />}<br /><br /><br /> ISR(TIMER0_OVF_vect) //początek funkcji obsługi przerwania<br /> {<br /> KeybProc(); <br /> TCNT0 = 246; //ustawienie wartości początkowej<br /> }<br />Dodam, że mam dodane do projektu keyb.c i keyb.h zgodnie z zaleceniami z powyższego linku z elektrody.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6085382734211687437.post-82024088175157509662014-09-04T08:24:58.334+02:002014-09-04T08:24:58.334+02:00Hi, mam pytanie czy i w jaki sposób można zaadopto...Hi, mam pytanie czy i w jaki sposób można zaadoptować tą bibliotekę do obsługi klawiszy które są podpięte pod różne porty tj np: trzy klawisze podpięte do portu B PB1, PB3, PB4 a czwarty klawisz do portu D - PD7 ?? Próbowałem na różne sposoby zmusić program do pracy ale nic mi nie wyszło (jeśli klawisze są na jednym porcie jest ok) ale ja potrzebuje mieć klawisze na różnych portach.<br />Z góry dzięki za pomoc.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6085382734211687437.post-57361906029156886182014-05-31T11:43:29.617+02:002014-05-31T11:43:29.617+02:00Hej nie mogę sprawdzać stanu kilku klawiszy w funk...Hej nie mogę sprawdzać stanu kilku klawiszy w funkcji.<br />Jakby GetKeys() się blokowało lub działało tylko w funkcji main<br /><br />void submenu()<br />{<br /> <br /> lcd_locate(0,0);<br /> lcd_str("tekst");<br /> while( 1 )<br /> {<br /> if(GetKeys() == KEY_UP)<br /> {<br /> lcd_str("key_up");<br /> }<br /> if(GetKeys() == KEY_ENTER)<br /> {<br /> lcd_str("key_enter");<br /> }<br /> }<br /> <br />}Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6085382734211687437.post-4342026953905863592014-04-25T22:25:26.037+02:002014-04-25T22:25:26.037+02:00Niestety u mnie nie działa.
dostaje komunikaty
un...Niestety u mnie nie działa.<br /><br />dostaje komunikaty<br />undefined reference to `GetKeys' <br />i<br />ld returned 1 exit status<br /><br />Jak mogę naprawić ten błąd.<br /><br />Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6085382734211687437.post-6374602779700661422014-03-28T23:12:10.305+01:002014-03-28T23:12:10.305+01:00Odczyt stanu klawiszy realizuj w jakimś przerwaniu...Odczyt stanu klawiszy realizuj w jakimś przerwaniu i zapisuj do jednej zmiennej która będzie odczytywać ta biblioteka. Ustaw jedna kolumnę i wyjdź z przerwania. Podzczas następnej obsługi tego przerwania odczytaj wiersze i ustaw następna kolumnę itd. Wszystkie wiersze powinny być odczytane przed odczytem zmiennej przez bibliotekę.Deucalionnoreply@blogger.comtag:blogger.com,1999:blog-6085382734211687437.post-19076030319924625122014-03-28T16:50:29.483+01:002014-03-28T16:50:29.483+01:00Pytam bo nie mam pomysłu jak to zrobić, biblioteka...Pytam bo nie mam pomysłu jak to zrobić, biblioteka z domysłu oczekuje odpowiedniego stanu na odpowiednim ustalonym pinie, a te klawiaturki matrycowe trzeba skanować zmieniając porty z wejść na wyjścia itp.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6085382734211687437.post-47497346904590225242014-03-24T20:57:41.855+01:002014-03-24T20:57:41.855+01:00A masz jakieś konkretny problem, czy tak tylko pyt...A masz jakieś konkretny problem, czy tak tylko pytasz?<br />Można ją nawet wykorzystać do obsługi klawiatury znajdującej się po drugiej stronie globu, kwestia tylko cyklicznego dostarczenia fizycznego stanu klawiszy. Wykorzystywalem ją do obsługi klawiatury pojemnosciowej wykonanej w oparciu o układ MPR121, więc na pewno da radę z jakąś tam chińska klawiaturą. Deucalionnoreply@blogger.comtag:blogger.com,1999:blog-6085382734211687437.post-68471959348969561062014-03-24T19:42:04.712+01:002014-03-24T19:42:04.712+01:00Czy komuś się udało wykorzystać tą bibliotekę do o...Czy komuś się udało wykorzystać tą bibliotekę do obsługi chińskiej matrycy 4x4 z 8 pinami?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6085382734211687437.post-44171268807684221062013-07-12T17:31:49.344+02:002013-07-12T17:31:49.344+02:00Od kiedy GPL pozwala na limitowanie do zastosowań ...Od kiedy GPL pozwala na limitowanie do zastosowań niekomercyjnych?matma6http://matma6.netnoreply@blogger.comtag:blogger.com,1999:blog-6085382734211687437.post-68525604075739480412013-06-18T23:01:31.169+02:002013-06-18T23:01:31.169+02:00Porozmawiam z autorem, a na razie zapraszam na for...Porozmawiam z autorem, a na razie zapraszam na forum, gdzie jak sądzę pomogłeś pytającemu: <a href="http://www.elektroda.pl/rtvforum/topic2590247.html" rel="nofollow">[ATmega8][WinAVR] - biblioteka Zaawansowana obsługa klawiatury jak uruchomic.</a><br /><br />Dzięki Twoim uwagom pytający zrozumiał jak proste jest używanie tej biblioteki:<br />cyt.: "<b>działa! dzieki wielkie! w sumie to prosta sprawa</b> :) "<br /><br />Dziękuję za pomoc,<br />:-)Donduhttps://www.blogger.com/profile/00935153382439363150noreply@blogger.comtag:blogger.com,1999:blog-6085382734211687437.post-70438104998395005702013-06-16T09:32:16.548+02:002013-06-16T09:32:16.548+02:00Dondu, popraw listing keyb.h bo jest niekompletny....Dondu, popraw listing keyb.h bo jest niekompletny. Potem czytelnicy bezmyślnie kopiują i nie wiedzą co jest grane.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6085382734211687437.post-84825132581493142152013-04-05T08:18:11.635+02:002013-04-05T08:18:11.635+02:00Bardzo fajny kurs. Kiedy następny odcinek.
P.S. Ni...Bardzo fajny kurs. Kiedy następny odcinek.<br />P.S. Nie mogę się doczekać kontynacji !Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6085382734211687437.post-514246479343163722012-12-16T18:45:13.946+01:002012-12-16T18:45:13.946+01:00O coś takiego chodziło?
staic char _key,
static ...O coś takiego chodziło?<br /><br />staic char _key, <br />static unsigned int _key_time;<br /><br />if( IsKey( KEY ))<br />{<br /> _key = 1;<br /> _key_time = KeysTime();<br />}<br />else if ( _key )<br />{<br /> _key = 0;<br /> if( _key_time < 10 )<br /> {<br /> // Tutaj kod obsługi krótkiego naciśnięcia (t < 100ms)<br /> .... <br /> }<br />}<br /><br /><br />if( IsKey( KEY ) && KeysTime( ) >= 100 )<br />{<br /> // Tutaj kod reakcji na naciśniecie klawisza KEY<br /> // Kod wykona się tylko wtedy gdy czas trzymania klawisza przekroczy 1s<br />} Deucalionnoreply@blogger.comtag:blogger.com,1999:blog-6085382734211687437.post-73436871847283755602012-12-16T14:40:53.457+01:002012-12-16T14:40:53.457+01:00Witam, jestem początkujący w temacie i możliwość s...Witam, jestem początkujący w temacie i możliwość skorzystania z takiej biblioteki to nieoceniona pomoc.<br />Zrobiłem swój pierwszy projekt w którym obsługę jednego klawisza realizuje dedykowana funkcja.W drugiej wersji chciałem wprowadzić modyfikację polegającą na użyciu twojej biblioteki, ale brakuje funkcji realizującej obsługę jednego klawisza z rozróżnieniem: krótkie naciśnięcie i naciśnięcie długie z auto repetycją. Ładnie to działa jeżeli mamy dwa przyciski do dyspozycji, ale jak to zrobić na jednym ?. <br />Przykład: <br />if( IsKey( KEY))<br />{ <br />// Kod wykonywany za każdym razem gdy wciśnięty jest klawisz z uwzględnieniem drgań styków co jest w moim projekcie wadą, aby to usunąć trzeba wywołać funkcję ClrKeyb( KBD_LOCK );, ale wówczas nigdy nie zostanie spełniony 2 warunek <br />}<br />if( IsKey( KEY ) && KeysTime( ) >= 100 ) <br /> { <br />// Tutaj kod reakcji na naciśniecie klawisza KEY <br />Kod wykona się tylko wtedy gdy czas trzymania klawisza przekroczy 1s <br /> } <br />Czy jest sposób aby taką obsługę zrobić z tą biblioteką ?<br />Pozdrawiam,Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6085382734211687437.post-31726589047662276262012-10-12T08:36:32.141+02:002012-10-12T08:36:32.141+02:00Witam. Ta wersja funkcjonuje już od około pół roku...Witam. Ta wersja funkcjonuje już od około pół roku, wcześniej też używałem bardziej złożonej wersji, ale działającej na tej samej zasadzie. Z takiego podejścia do obsługi klawiatury korzystam już od kilku lat na różnych procesorach (ARM, AVR, Zilog) i dzięki temu w każdym kolejnym projekcie nie muszę się zastanawiać nad wszystkim co jest związane z obsługą klawiatury. Zazwyczaj implementacja polega na Ctrl+V Ctrl+C plus ta cała wymagana otoczka opisana w podsumowaniu. <br />Zapraszam więc do testowania i dzielenia się uwagami. PozdrawiamDeucalionnoreply@blogger.comtag:blogger.com,1999:blog-6085382734211687437.post-58341245961675591772012-10-12T03:48:32.795+02:002012-10-12T03:48:32.795+02:00Witam. Przyznam że do tej pory pisałem bardziej sk...Witam. Przyznam że do tej pory pisałem bardziej skomplikowany program by osiągnąć podobne efekty. W twojej bibliotece podoba mi się ta uniwersalność przez co łatwo przerobić na inny mikrokontroler tej samej rodziny - ja pracuję tylko na AVR. Fajne, naprawdę fajne. PozdrawiamAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-6085382734211687437.post-32317566690494198322012-10-10T15:53:38.102+02:002012-10-10T15:53:38.102+02:00No faktycznie wygląda nieźle. Chyba dzisiejszy wie...No faktycznie wygląda nieźle. Chyba dzisiejszy wieczór spędzę na testowaniu na jakimś AVR. Dzięki!Piotrnoreply@blogger.com