piątek, 30 listopada 2012

Płytki wtykowe do płytki stykowej - ATmega8/8A/48/88/168/328

W życiu każdego konstruktora, który zajmuje się mikrokontrolerami, nadchodzi taki moment, w którym mówi:
Tak było również ze mną.Wcześniej używałem płytki stykowej, w którą bezpośrednio wtykałem scalaki. Miało to jednak pewne wady - za każdym razem, gdy chciałem przetestować program na np. ATmega musiałem podłączyć milion pierdółek i kabelków, niezbędnych do tego, żeby ATmega w ogóle wystartowała.
Powstały więc dwie płytki-adapterki, które baaardzo ułatwiają życie. Pierwsza z ATmega8 i druga z ATtiny13, obie zawierają elementy niezbędne do uruchomienia i zaprogramowania procesora oraz pozwalające się wetknąć do płytki stykowej.

 

Schemat

Oto schemat płytki przeznaczonej dla ATmega8/8A oraz ATmega48/88/168/328:
  

Jak widać na schemacie płytka zawiera wszystkie elementy, które są potrzebne do uruchomienia i zaprogramowania procesora. Jest też, filtracja zasilania, dodatkowa filtracja dla przetwornika analogowo-cyfrowego, kwarc, gniazdo programatora, sygnalizację poprawnego zasilania, przycisk reset oraz wyprowadzenie wolnych pinów. Niestety kwarc nie ma kondensatorów - nie starczyło miejsca na płytce. W związku z tym przy programowaniu należy pamiętać o ustawieniu fusebita odpowiedzialnego za dołączenie wewnętrznych kondensatorów.

 

Płytka

Płytka jest dosyć mocno upakowana, zawiera dużo elementów na małej przestrzeni. Dla oszczędności miejsca, czasu i wierteł część elementów jest w obudowach SMD. Są to wszystkie rezystory i kondensatory. 
Trzeba przyznać, że ta płytka jest trudna do wykonania w domowych warunkach przede wszystkim ze względu na cienkie ścieżki prowadzące do gniazda programatora. Jednak, kiedy już ją wytrawimy i zlutujemy do kupy naprawdę przyspiesza projektowanie prototypów na płytce stykowej.

 

Adapterek w akcji

Poniżej zamieszczam kilka zdjęć z płytką adapterka na żywo:


W kolejnej części płytka ATtiny13/13A/25.
Pobierz schemat i płytkę (Eagle): KLIK
Dwa zdania w kwestii licencji na te pliki (jak to głupio brzmi!). Źródła są darmowe dla zastosować hobbystycznych lub osobistych (produkcja pojedynczych sztuk), jedynie chciałbym żeby osoby, które zbudują taką płytkę pochwaliły się nią na użytek innych. Może to być wpis na swoim blogu, na jakimś forum lub zdjęcia wysłane do mnie. Piszcie na maila:

wieloiksiasty małpa gie mail kropka kom

Gdyby ktoś chciał sprzedawać sprzęt wg. mojego projektu masowo (taaa, na pewno by  ktoś chciał to sprzedawać) również proszę o kontakt. Brrrr, zamieniam się w korporację...

czwartek, 22 listopada 2012

Makefail: undefined reference to `main'

Zainstalowałem Eclipse według tego poradnika: KLIK. Następnie postanowiłem sprawdzić, czy wszystko działa tak jak powinno, tworząc nowy projekt według tego poradnika: KLIK. Jak zwykle coś nie chciało działać. Tym razem ujrzałem piękny komunikat:
../crt1/gcrt1.S:195: undefined reference to `main'
Hmm... Linker zdaje się sugerować, że nie może znaleźć funkcji `main', do której odwołuje się jakiś tam kawałek kodu inicjalizacyjnego. Ale przecież widzę jak na dłoni, ślepy jeszcze nie jestem, przede mną na ekranie jawi się funkcja `main'.

Przekopałem cały internet i wszystko inne. Co ciekawe, ten problem pojawiał się już na forach, ale nikt nie podał jednoznacznego konkretnego rozwiązania tego dziwacznego błędu. Cóż, musiałem poradzić sobie samodzielnie.

Rozwiązanie

Osoby o słabszych nerwach proszone są o nieczytanie ciągu dalszego. Inne, które już zdążyły zapytać kolegę o przyczynę, powinny jak najszybciej zmienić numer telefonu i wyprowadzić się jak najdalej. Uwaga!!! Teraz:

Naciskamy Ctrl+S i sprawdzamy czy działa. Działa?

sobota, 10 listopada 2012

Wacom Bamboo i Linux Mint 13

Gdy po raz pierwszy podłączyłem mój tablet do komputera z Mintem na pokładzie spotkał mnie wielki zawód... przeogromny, przeogromniasty. Mój ulubiony sprzęt do projektowania PCB w Eaglu nie działa? Tak być nie może!

Na szczęście rozwiązanie mojego problemu okazało się być całkiem łatwe. Po prostu brakowało oprogramowania do obsługi tego modelu (Wacom Bamboo CTH-470). Najdziwniejsze jest w tym to, że na wcześniejszych wersjach Ubuntu (Mint to w zasadzie nic innego jak Ubuntu z małymi zmianami) tablet działał od razu i bez żadnego problemu.

Okazuje się, że aby zmusić sprzęt do współpracy należy w terminalu wydać (tylko/aż) trzy komendy:
sudo apt-add-repository ppa:lekensteyn/wacom-tablet
sudo apt-get update
sudo apt-get install wacom-dkms xserver-xorg-input-wacom
Po restarcie wszystko powinno działać.

piątek, 9 listopada 2012

Eliminacja drgań styków - część II

Część pierwsza: KLIK 

Sposoby eliminacji drgań styków




Drganiom styków można zaradzić na dwa sposoby:
  • Sprzętowo – za pomocą filtru RC (rysunek 3) lub wykorzystując specjalny układ scalony np. MAX6816, MAX6817 czy MAX6818. Wady tej metody to koszty części niezbędnych do realizacji wybranego sposobu, słaba dostępność wyspecjalizowanych układów scalonych oraz zajęcie cennego miejsca na płytce drukowanej. Przy eliminacji drgań (ang. debouncing) jednego przycisku te wady wydają się nie mieć znaczenia, jednak kiedy musimy obsłużyć jednocześnie kilka i więcej przycisków warto zwrócić na nie uwagę. Na rysunku 4 widać efekt działania filtru RC.
Rysunek 3 – filtr RC.
Źródło: http://konto.bydgoszcz.wsinf.edu.pl
Rysunek 4 - Drgania przefiltrowane przez filtr RC.
Źródło: Opracowanie we współpracy autora i Przemek6
  • Programowo – ten sposób nie wymaga żadnych dodatkowych elementów na płytce. Jego wady to pewne zapotrzebowanie na czas procesora oraz zajęcie części pamięci programu, która w małych mikrokontrolerach AVR (lub podobnych) jest zazwyczaj bardzo ograniczona. Programową eliminację drgań styków najłatwiej zrealizować przez wstrzymanie się z kolejnym odczytem stanu przycisku, dopóki nie ustaną drgania. Tą metodę przedstawia przykładowy kod na rysunku 5. Ma ona dużą wadę - przed każdym odczytem procesor bezczynnie czeka przez pewien czas (na przykładzie aż 20 ms). Dla procesora to bardzo długo. Przez ten czas procesor mógłby dalej wykonywać pozostałą część programu. Ten sposób również nie gwarantuje pełnej skuteczności.
Rysunek 5 – najprostsza programowa eliminacja drgań styków.
Źródło: Opracowanie własne

czwartek, 1 listopada 2012

Eliminacja drgań styków - część I

Jakiś czas temu brałem udział w konkursie dla młodocianych wynalazców. Powstał wtedy projekt o drganiach styków. Konkurs się skończył, a ja zostałem z gotową pracą, która nie była mi do niczego potrzebna. Dlatego postanowiłem ją opublikować - oto jej pierwsza część.

Drgania styków

Drgania styków to wynik niedoskonałości elementów stykowych. Każdy przycisk, przełącznik, kontaktron lub enkoder zawiera w sobie styki, które mają tendencję do drgania podczas zwierania i rozwierania. Zjawisko to wynika całkowicie z niedoskonałości mechanicznej konstrukcji elementów stykowych i trwa od kilku do kilkunastu milisekund przy każdorazowym zwarciu lub rozwarciu.

Rysunek 1 - parametr bounce time oznaczający przeciętną długość drgań styków.
Nota katalogowa B3F Tactile Switch firmy Omron
Źródło: tme.eu

Producenci czasami podają w notach katalogowych (rysunek 1) swoich produktów parametr bounce time. Oznacza on przeciętną długość drgań w danym modelu przycisku.

Drgania styków dają się we znaki przede wszystkim przy budowie urządzeń cyfrowych, w których przycisk pełni rolę wyzwalacza pewnych operacji lub służy  jako interface użytkownika. Brak skutecznej eliminacji drgań powoduje pewne anomalie. Dzieje się tak, ponieważ drgania, mimo, że zbyt krótkie, aby zobaczyć je gołym okiem, są przez mikrokontroler odbierane jako wielokrotne, następujące szybko po sobie naciśnięcia przycisku. Ilość takich zmian stanu jest nieprzewidywalna i często powoduje duże zamieszanie. Rysunek 2 pokazuje drgania styków w przykładowym przycisku. Widać na nim, że do ustabilizowania się wykresu potrzeba  około 2 ms.

Rysunek 2 - drgania styków widoczne na cyfrowym oscyloskopie.
Źródło: Opracowanie we współpracy autora i Przemek6

Nierozwiązanie problemu powoduje, że:
  • nastawiane liczby przeskakują losowo;
  • menu przeskakuje o kilka pozycji naraz;
  • sygnały wysyłane przez enkoder są błędnie interpretowanie przez procesor;
  • operacje są wyzwalane wielokrotnie, co może doprowadzić nawet do przepełnienia stosu i poważnych błędów w programie.
Jeśli chcemy uniknąć tych przykrych konsekwencji powinniśmy zadbać o prawidłową eliminację efektu drgających styków. W następnych częściach:
  • sprzętowa eliminacja drgań;
  • programowa eliminacja drgań;
  • gotowy algorytm eliminacji drgań w tle wraz z obszernym opisem.
Część druga: KLIK