Ads_700x200

piątek, 19 października 2012

IR TOUCH - wyłącznik bezdotykowy

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, 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...

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:


  • 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

Witam,

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ę?

Pod pozorem tego nieco przewrotnego tytułu chciałbym zwrócić wam uwagę na to, jaką krzywdę początkującym wyrządzają popularne ostatnio w internecie poradniki wszelkiego rodzaju, próbujące nieudolnie wyjaśnić może nie sam fakt istnienia drgań styków, bo takie zjawisko na pewno istnieje, ale tłumaczące w pokrętny i całkowicie zły sposób jak sobie z tym radzić w mikrokontrolerze, oraz czego one są przyczyną. Mamy tu do czynienia z totalną mistyfikacją w 80% przypadków ;)

sobota, 15 września 2012

Eclipse AVR GCC - dołączanie bibliotek *.a

Witam,

Ostatnio zaciąłem się w poszukiwaniu rozwiązania jak można dołączyć do projektu ale w ECLIPSE bibliotek dostarczonych od kogoś i skompilowanych do plików z rozszerzeniem *.a Okazało się bowiem, że dołączenie ich np. do AVR Studio nie stanowi większego kłopotu, to jednak do Eclipse hmmmm .... tu zaczęły się "schody". Jako przykładowy projekt wziąłem sobie bibliotekę do obsługi wyświetlacza monochromatycznego LCD opartego o sterownik KS108. Przygotowano dość fajne biblioteki na stronie: LINK. Można pobrać z niej dokładny opis w PDF jak należy skonfigurować te biblioteki w AVR Studio 4.xx. Niestety ta metoda nie działa wprost w Eclipse. Na szczęście jest rozwiązanie ...

czwartek, 6 września 2012

PetitFS - Atmel Toolchain - Warnings!

Witam,

Dzisiaj chciałbym przedstawić taki mały HINT ;) (podpowiedź). Otóż z uwagi na to, iż od niedawna przeszedłem na nowy toolchain Atmela pod Eclipse (ver: 3.4) .... to okazuje się, że wprowadzono w nim sporo nowych jakby rygorów. Na temat wymuszonego specyfikatora const już pisałem na blogu, a przez to kłopotach z PSTR. Teraz okazało się, że próba kompilacji znanych bibliotek PetitFS w nowym toolchainie owocuje kolejnymi warningami jak na załączonych niżej obrazkach. Dlatego postanowiłem dojść do tego jak  ten problem rozwiązać i podzielić się z wami jak zwykle. Może komuś się przyda ? ;)

piątek, 24 sierpnia 2012

Eclipse - kłopot z PSTR() ? - przeczytaj ;)

Witam,

Ostatnio odkąd udało mi się po raz pierwszy użyć najnowszego toolchaina Atmela pod Eclipse, (a to dzięki kolegom SunRiver i Krauser z www.forum.atnel.pl), okazało się, że w kodach które dotąd pisałem pojawiło się mnóstwo ostrzeżeń (Warnings!) .... związanych nie tylko z użyciem zmiennych zdefiniowanych w pamięci FLASH, ale co ciekawe także w liniach mojego kodu gdzie stosowałem swoje własne funkcje z końcówką _P, co ma oznaczać, że jej argumentem będzie właśnie zmienna czy wskaźnik do zmiennej znajdującej się w pamięci FLASH. Okazuje się bowiem, że w nowym toolchainie języka C, postanowiono zrobić porządek, którego wcześniej nie było a widać to nawet po tym co wyżej napisałem. No bo jakim prawem użyłem określenia "zmienna w pamięci FLASH" ??? skoro to w zasadzie nie żadna zmienna tylko STAŁA z punktu widzenia programu w C. W końcu pamięć FLSAH jest tylko do odczytu - zgodzisz się chyba ze mną na tym etapie? prawda ? - no i trudno nie przyznać racji, że postanowiono zrobić z tym porządek. Na czym polega ten porządek ?

niedziela, 5 sierpnia 2012

AVR GCC domyślna promocja do typu int - WAŻNE!



Witam,

Tym razem chciałbym przekazać informację, w związku z tym, iż dostaję co jakiś czas zapytania, na temat problemu w obliczeniach, jeśli chodzi o przykład o ADC w książce "Mikrokontrolery AVR Język C Podstawy programowania". Zamieściłem bowiem spory artykuł, który wyjaśnia ów problem, ale co ważniejsze przy tej okazji, ostatecznie rozprawiam się z wyjaśnieniem czytelnikom, spraw związanych z tak ważnym zagadnieniem jak domyślna promocja do typu int, z jaką mamy do czynienia w AVR GCC. Promocja ta nie jest błędem samym w sobie, jednak jeśli nie zdajemy sobie sprawy z jej istnienia, może to prowadzić w wielu przypadkach podczas obliczeń szczególnie na liczbach większych niż te, które mieszczą się w zakresie od 0 do 65535,do poważnych kłopotów czy błędów w działaniu własnych programów. Zwykle staram się każdemu indywidualnie opisywać to w mailu, lub też na www.forum.atnel.pl, w licznych postach. Dlatego postanowiłem opisać to szczegółowo w jednym miejscu i przekazać do szerszej publiczności jako artykuł uzupełniający do książki. Proszę zajrzeć do linku poniżej:

środa, 1 sierpnia 2012

Własne kolory składni w Eclipse - proszę bardzo!

Witam,

Dzisiaj chciałbym przedstawić pewne zagadnienie, które spędzało mi sen z powiek od dawna. Chodzi mianowicie o sposób na własne kolorowanie składni ale przede wszystkim tła w edytorze wewnątrz Eclispe. Przy czym istotne jest to, że chodziło mi o możliwość przygotowania edytora do pracy na ciemnym (najlepiej czarnym tle) aby nie męczyć wzroku. Jak wiadomo domyślnie kolory dla edytorów C posługują się białym tłem. Niestety czasem powoduje to zmęczenie wzroku i niektóre osoby (w tym ja) chętnie ustawiłyby sobie inne kolory. Kłopot w tym, że Eclipse posiada niesamowicie rozbudowane drzewko do ustawiania przeróżnych opcji. Łatwo więc się w tym pogubić nawet jeśli raz kiedyś się samemu to zrobiło. Tak było w moim przypadku. Kiedyś przygotowałem własny profil kolorów, ale nie mogłem dojść jak się go zapisuje do pliku a potem odtwarza. Jedna dzięki temu, że istnieje sobie www.forum.atnel.pl oraz tacy koledzy jak "stachu" czy "worner" na tym forum, udało mi się w końcu dojść i opanować to wszystko a jednocześnie opisać i przedstawić większej liczbie osób co niniejszym czynię...


wtorek, 17 lipca 2012

Kurs programowania Androida w Basicu - ruszył

Witam,

Chciałbym poinformować wszystkich zainteresowanych, że właśnie na www.forum.atnel.pl ruszył kolejny wspaniały kurs pisania aplikacji na telefony komórkowe pracujące pod kontrolą systemu Android. Prowadzi go ten sam kolega o nicku ariek44, który niedawno napisał kurs programowania telefonów w Pythonie pod Symbianem. Znamy więc już możliwości wspaniałego przekazu kolegi z poprzedniego kursu. Ten zapowiada się równie niesamowicie, a już pierwsze odcinki kursu wywołały ogromne zainteresowanie ;) Zapraszam wszystkich do wątku na naszym forum:


W razie czego zainteresowanym przypominam....