Witam,
Ponieważ mnie także zainspirował niesamowicie temat konkursu jaki zorganizował na forum, kolega NIEBO!,
to już tak całkowicie poza konkursem i po jego zakończeniu postanowiłem też zrobić sobie we własnym zakresie podobny wyłącznik ;) W zasadzie uznałem, że bardzo przydatne do tego celu okażą się sposoby do obsługi (wprawdzie zwykłych) klawiszy, to jednak - przecież tematem zadania jest także klawisz - tyle że bezdotykowy a dokładniej mówiąc taki na podczerwień. Popełniłem zatem króciutki kod źródłowy, wgrałem do mikrokontrolera i przetestowałem. Ku mojej uciesze okazało się, że prześlicznie zaczęło to działać. Hmmm jedyne czego jeszcze nie sprawdzałem - to fakt czy np przelatująca mucha lub komar będą w stanie włączyć taki klawisz ;) ... ale spokojnie, będę musiał założyć jakąś małą hodowlę owadów, przetresować je do zadań specjalnych i jak śmigłowce wysyłać w okolice wyłącznika ;) .... o tym jeszcze w razie czego poinformuję, tymczasem przejdźmy do rzeczy.
piątek, 19 października 2012
piątek, 12 października 2012
Watchdog AVR - prostsze niż myślisz
Witam,
Ponieważ ostatnimi czasy dostaję także sporo zapytań na temat Watchdoga w AVR i widzę, iż pomimo rzekomej prostoty temat ten budzi wciąż wiele wątpliwości i niezrozumienia, chciałbym napisać kilka zdań. Ale panowie i Panie, zanim coś napiszę to najpierw jednak skieruję waszą uwagę na właściwe tory jeśli chodzi o to jak sobie radzić samemu w takich kwestiach. Tym bardziej, że czasem zastanawiam się aż - co tutaj pisać, skoro wystarczyłyby prawie przysłowiowe 2-3 zdania i temat omówiony. Dlatego dziwię się, jakimi drogami próbują nieraz niektóre osoby dochodzić do sedna sprawy. Przede wszystkim zanim się zada pytanie na tego typu temat warto sięgnąć do dokumentacji, którą się ma na dysku, do pliku nagłówkowego, do internetu itp. Nie chcę przez to broń Boże udawać cwaniaczka, co to odsyła wszystkich do dokumentacji zamiast wytłumaczyć, ale jednak postanowiłem podpowiedzieć jak ja np próbuję do czegoś dojść najpierw sam. Może to na przyszłość i wam ułatwi lepsze posługiwanie się dokumentacją bo rozumiem też, że na początku to zwykle człowiek nie wie jak się poruszać w tym gąszczu nowych informacji. A zatem, do rzeczy...
Ponieważ ostatnimi czasy dostaję także sporo zapytań na temat Watchdoga w AVR i widzę, iż pomimo rzekomej prostoty temat ten budzi wciąż wiele wątpliwości i niezrozumienia, chciałbym napisać kilka zdań. Ale panowie i Panie, zanim coś napiszę to najpierw jednak skieruję waszą uwagę na właściwe tory jeśli chodzi o to jak sobie radzić samemu w takich kwestiach. Tym bardziej, że czasem zastanawiam się aż - co tutaj pisać, skoro wystarczyłyby prawie przysłowiowe 2-3 zdania i temat omówiony. Dlatego dziwię się, jakimi drogami próbują nieraz niektóre osoby dochodzić do sedna sprawy. Przede wszystkim zanim się zada pytanie na tego typu temat warto sięgnąć do dokumentacji, którą się ma na dysku, do pliku nagłówkowego, do internetu itp. Nie chcę przez to broń Boże udawać cwaniaczka, co to odsyła wszystkich do dokumentacji zamiast wytłumaczyć, ale jednak postanowiłem podpowiedzieć jak ja np próbuję do czegoś dojść najpierw sam. Może to na przyszłość i wam ułatwi lepsze posługiwanie się dokumentacją bo rozumiem też, że na początku to zwykle człowiek nie wie jak się poruszać w tym gąszczu nowych informacji. A zatem, do rzeczy...
czwartek, 11 października 2012
Obsługa klawiszy - zwłoka czasowa CD...3
Witam,
To już ostatnia część w której postaram się zamknąć sprawy związane z właściwym podejściem do obsługi klawiszy a szczególnie drgań styków. Uwaga! to nie oznacza, że prezentowane tu rozwiązania są jedyne i najlepsze na świecie ;) .... przede wszystkim chciałem w uzupełnieniu do książki "Mikrokontrolery AVR Język C Podstawy programowania" a szczególnie do opisanej tam funkcji SuperDebounce(), zaprezentować tym cyklem artykułów jak mniejszymi krokami można dojść do napisania czy też pisania takich funkcji we własnym zakresie. Wiąże się to oczywiście z podejściem w programie jak do mini systemu czasu rzeczywistego, w którym takie pojęcia jak: pseudo-wielowątkowość, zdarzenia czy timery programowe to już chleb powszedni. A pisanie funkcji nieblokujących, jest jak jedzenie dobrej bułki z masłem. Przede wszystkim, mam nadzieję, że czytając te 3 artykuły każdy zobaczy, że tych określeń nie ma co się bać i że można w przyjazny sposób je zagospodarować w każdym swoim, nawet najprostszym programie. Napiszemy sobie zatem dzisiaj tylko jedną funkcję do obsługi pojedynczego klawisza. Będzie to taki protoplasta funkcji SuperDebounce z książki, tyle że tym razem przedstawiony jest jego rozwój od samego zarodka, poprzez jajko aż do końcowej postaci ;) Nasz cel:
przejdźmy zatem do rzeczy...
To już ostatnia część w której postaram się zamknąć sprawy związane z właściwym podejściem do obsługi klawiszy a szczególnie drgań styków. Uwaga! to nie oznacza, że prezentowane tu rozwiązania są jedyne i najlepsze na świecie ;) .... przede wszystkim chciałem w uzupełnieniu do książki "Mikrokontrolery AVR Język C Podstawy programowania" a szczególnie do opisanej tam funkcji SuperDebounce(), zaprezentować tym cyklem artykułów jak mniejszymi krokami można dojść do napisania czy też pisania takich funkcji we własnym zakresie. Wiąże się to oczywiście z podejściem w programie jak do mini systemu czasu rzeczywistego, w którym takie pojęcia jak: pseudo-wielowątkowość, zdarzenia czy timery programowe to już chleb powszedni. A pisanie funkcji nieblokujących, jest jak jedzenie dobrej bułki z masłem. Przede wszystkim, mam nadzieję, że czytając te 3 artykuły każdy zobaczy, że tych określeń nie ma co się bać i że można w przyjazny sposób je zagospodarować w każdym swoim, nawet najprostszym programie. Napiszemy sobie zatem dzisiaj tylko jedną funkcję do obsługi pojedynczego klawisza. Będzie to taki protoplasta funkcji SuperDebounce z książki, tyle że tym razem przedstawiony jest jego rozwój od samego zarodka, poprzez jajko aż do końcowej postaci ;) Nasz cel:
- nieblokujący charakter funkcji
- wykorzystanie struktury w celu minimalizacji przekazywania argumentów
- prostota zastosowania
- wykorzystanie timerów programowych
- realizacja przykładu w prostym systemie wielozadaniowym
przejdźmy zatem do rzeczy...
środa, 10 października 2012
Obsługa klawiszy - drgania styków CD...2
Witam,
Nadszedł czas na kolejny artykuł z cyklu drgań styków przedstawianych prawie wszędzie w krzywym zwierciadle. Ostatnio zajmowaliśmy się wyjaśnieniem od podstaw dlaczego tak wielu ludzi błędne przedstawia zagadnienia związane drganiami styków w programach, które piszemy dla mikrokontrolerów obojętnie jakiej rodziny.
Drgania styków ? - to BAJKI ! więc jak to jest naprawdę?
W tym temacie omówiłem podstawy związane ze zjawiskiem drgań styków. Na podstawie tegoż artykułu wiemy już iż w zdecydowanej większości przypadków drgania styków powstałe w pierwszej fazie, przy wciśnięciu klawisza, można w zasadzie zignorować i nie martwić się o ich występowanie czy efekty uboczne w większości naszych prostych aplikacji. Dzisiaj właśnie od tego zaczniemy, od podstaw tworzenia najprostszych z możliwych ale za to absolutnie skutecznych funkcji do tych celów. Zobaczysz, w jak prosty sposób można napisać najprostszą obsługę klawisza tak aby nie występowało zjawisko, które błędnie nazywane jest przez wiele osób efektem drgania styków i to tych drgań przy wciśnięciu klawisza. Sam uśmiejesz się jak to może być proste jeśli to dobrze przemyśleć. Weźmy zatem za cel przykład z poprzedniego artykułu. Nasze pierwsze zadanie to napisanie kodu obsługi klawisza, który po każdorazowym wciśnięciu ma zmieniać stan diody LED na przeciwny. Innymi słowy mówiąc, dioda ma pięknie zapalać się i gasnąć, bez żadnego migotania, bez najmniejszego kłopotu i to niezależnie od tego jak długo wciśniemy klawisz. Dodatkowo jeśli klawisz będzie wciśnięty non stop, to dioda LED ma nie zmieniać swojego stanu, zatem do rzeczy ....
wtorek, 9 października 2012
ROR & ROL'owanie bitów - wersja wojskowa
W związku ze sporą ilością pytań jakie dostaję co jakiś czas na maila, chciałbym pokazać sposób w jaki można dokonywać tzw "ROL'owania" bitów w ramach jednego bajtu lub słowa, w najprostszy sposób w języku C. Naturalnie dodam, że nie chodzi tutaj o zwykłe przesuwanie bitów w prawo lub lewo, ponieważ wtedy wsuwają się nam zera od prawej lub lewej. Mam tu na myśli rolowanie, czyli jeśli np bajt przewijamy w lewo to najstarszy bit, który niejako wypada z bajtu, trafia z powrotem do niego ale na pozycję najmłodszego bitu. Co ma z tym wspólnego wersja wojskowa ? ;) widzicie te pagony odpowiadające randze starszego sierżanta ? .... jak za chwilę się przekonasz, wzrokowo mają one sporo wspólnego z prezentowanym kodem źródłowym. Nadmienię od razu, że w samym asemblerze można o kilka bajtów odchudzić kod, w porównaniu do tego, który zostanie wygenerowany przez kompilator C, ale komu by się chciało bawić wciąż we wstawki asemblerowe mając do dyspozycji wygodny C a tym bardziej z tak błahego powodu ...
sobota, 6 października 2012
Drgania styków ? - to BAJKI ! więc jak to jest naprawdę?
Subskrybuj:
Posty (Atom)