Get the Flash Player to see this player.

time2online Joomla Extensions: Simple Video Flash Player Module
Wstęp AVR

Na wstępie opiszę jak zabrać się za programowanie mikrokontrolerów, co trzeba zakupić i na co trzeba zwrócić szczególną uwagę. Jeśli ktoś jest totalnie zielony w tych sprawach to polecam kupić gotowy zestaw uruchomieniowy dla Atmegi16 lub 32. Unikniecie tym samym problemów takich jak ustawianie fuse bitów, źle polutowane przewody oraz błędy w schematach.

Polecam także aplikację ElectroDroid (Demetrio Iero) dla wszystkich osób posiadających smartphone z systemem android oczywiście aplikację można ściągnąć za darmo z android market kategoria narzędzia. W skład aplikacji wchodzi przelicznik kodów paskowych i zwykłych dla rezystorów, kondensatorów i dławików. Można tam obliczyć wielkość rezystora dla diody, sprawdzić prawo Ohma, obejrzeć wszystkie standardy przewodów, obliczyć dzielnik napięcia oraz wiele innych.

Ciekawą książką do nauki tego języka jest http://helion.pl/ksiazki/jezyk-c-dla-mikrokontrolerow-avr-od-podstaw-do-zaawansowanych-aplikacji-tomasz-francuz,jcmikr.htm jeśli nie stać Ciebie na książkę, to możesz odwiedzić ten link i ściągnąć sobie przykłady. Nawet bez opisu, to bardzo użyteczna wiedza. Ale ogólnie zachęcam do korzystania ze sprawdzonych książek.

Wszystkie programy, które udostępnię wypróbowałem na płytce Gotroniki moduł uruchomieniowy AVR wersja 2 (http://www.gotronik.pl/modul-uruchomieniowy-avr-atmega16-wersja-p-572.html) i jest to naprawdę dobry produkt. Jest też spory wybór na http://kamami.pl mają także dobry opis zestawów uruchomieniowych.

avr

Do programowania tej płytki nie potrzeba PROGRAMATORA, ani zewnętrznego zasilania (wystarczy kabel USB)!! Podpinamy kabel USB, ściągamy program megaload (dołączony do płytki jak zakupicie z Gotroniki) i możemy zacząć zabawę. Płytka posiada wyświetlacz siedmiosegmentowy, wyświetlacz LCD ze standardem HD44780, konwerter RS232 na USB, mikroprzyciski, termometr cyfrowy ds18b20 i czujnik podczerwieni. Zaletą takiej płytki jest to, że wszystkie układy są polutowane i sami nie musimy nic lutować. Wystarczy, że podłączymy odpowiednie wyprowadzenia. Na płytce jest tylko jeden błąd konstrukcyjny, a mianowicie czujnik podczerwieni jest na równoległej linii z termometrem cyfrowym, co powoduje indukowanie się sygnałów na obydwu liniach. Dlatego nie załączajcie termometru jednocześnie z czujnikiem podczerwieni. Jak eliminować zakłócenia w naszych projektach można poczytać na http://www.forbot.pl/forum/topics20/dla-poczatkujacych-zaklocenia-w-pracy-mikrokontrolerow-poradnik-praktyczny-dla-robotykow-vt6913.htm

Jeśli ktoś już miał styczność z takim zestawem i chciałby zrobić coś samodzielnie, to musi kupić:

  1. lutownice 30W - ważna jest moc lutownicy, ponieważ przy dużej mocy będą wam odpadały oczka od płytki uniwersalnej, a za mała nie rozpuści wam cyny, dlatego najlepsze lutownice, to najtańsze lutownice. Chyba, że chcemy lutować SMD, to trzeba kupić taką na gorące powietrze, a takie kosztują już coś koło 200zł. Posiadam już taką, ale SMD jeszcze nie potrafię lutować;
  2. płytkę uniwersalną - uwaga zawsze spójrz na płytkę, którą kupujesz pod światło, jeśli zobaczysz tam połączenia to kup inną oszczędzisz sobie troszkę czasu. Lepiej samemu przeprowadzić ścieżkę niż męczyć się z gotowymi ścieżkami. Podobno da się usuwać gotowe połączenia, ale chyba trzeba mieć do tego diamentowe ostrze. Mi się nie udało. Ważną sprawą jest zakupienie płytki z dziurkami, albo małej wiertarki do nawiercania dziurek. Można także kupić kwas i wytrawić płytki w domu, ale ja już nie pomogę , bo sam nigdy tego nie robiłem;
  3. cynę - tu nie ma haczyków. Trzeba kupić taką zwiniętą w pudełeczku lub w szpulce, którą można sobie wyciągać;
  4. kilkadziesiąt różnych oporników i kondensatów do lutowania przewlekanego - ważne, żeby to nie były oporniki SMT (do lutowania powierzchniowego). Są 2 rodzaje kondensatorów elektrolity i ceramiki. Różnią się one tym, że elektrolity są spolaryzowane (maja + i -) oraz ładują się dłużej niż ceramiki. Są jeszcze inne rodzaje kondensatorów, ale do robienia urządzeń na atmegach nie musicie więcej wiedzieć;
  5. programator. Czym one się różnią? Szybkością wgrywania programu, ceną, magistralą używaną do programowania, kompatybilnością z niektórymi środowiskami. Z reguły programator dobiera się do procesora na którym mamy pracować. Najbezpieczniej dla ARM kupić programator JTAG (np. ZL30PRGv2 z kamami), a dla AVR 8 bitowych ISP (AVRISP MKII), ponieważ fabrycznie mikrokontroler ma załączone fuse bity JTAG'a(ARM) i ISP(AVR). Kupując płytkę Gotroniki nie musicie kupować programatora, można ją programować bezpośrednio po RS232 za pomocą kabla USB. Ja posiadam AVR ISP MKII kosztował coś około 120zl i jak dotąd sprawuje się bardzo dobrze. Program jest wgrywany bardzo szybko, a jak źle coś polutuje to programator informuje mnie diodami informującymi, które świecą się w różnych kolorach, w zależności od problemu, który aktualnie wystąpił;
  6. Mikrokontroler - w naszym przypadku Atmega16,32 różnią się od siebie wielkością pamięci flash, czyli długością kodu który można wrzucić do naszego procka i subtelnymi różnicami, które przy programowaniu w C nie mają znaczenia.
  7. Multimetr- tu warto się zaopatrzyć w taki miernik, który będzie informował nas o zwarciach dźwiękiem. Za zwarcie uznaje się przewód łączący dwa punkty, który ma mniej niż 30 ohm . Ponieważ często cyna będzie kapała na pobliskie pola i może wystąpić zwarcie. Nasze lutowanie ograniczy się do sprawdzania zwarć.
  8. System operacyjny inny niż Vista. Nie działają tam biblioteki winavr (niby działają ale nie działają), podczas wgrywania programu zblokujecie sobie procek, więc jak macie Viste, to możecie odrazu instalować Xp lub 7. (Sprawdzałem w 2009 więc może już to naprawili)

Jak już kupiłeś sobie wszystko i polutowałeś swój pierwszy układ, a on nie chce wgrać programu, to najprawdopodobniej źle przylutowałeś przewody. Robienie własnych urządzeń, to ciągłe sprawdzanie tego co się aktualnie robi i jak nie potrafisz się z tym pogodzić, to zmień hobby, bo im dalej w las tym będzie więcej drzew.

Aby mikrokontroler działał, to musi być doprowadzone napięcie stałe z reguły 4,5-5V o jak najmniejszych zakłóceniach. Doprowadzamy je zarówno do zasilania mikrokontrolera jak i do zasilania przetwornika ADC, jest to dosyć istotne, ponieważ nawet jak nie używasz ADC, to i tak musi być doprowadzone napięcie i GND.

Do tego zawsze przy nóżkach z napięciem jest przylutowany kondensator ceramiczny 100nF (takie małe żółte coś), po to żeby zmniejszyć zakłócenia. Mało tego niektóre mikrokontrolery nie działają, gdy tych kondensatorów nie ma. Pisze o tych kondensatorach ponieważ ich nie uwzględnia się nigdy w schematach, a wkłada się je wszędzie, gdy tylko można.

Jeśli wiesz, że mikrokontroler ma załączone fuse bity umożliwiające wgrywanie programu, a program dalej nie chce się wgrać, to należy zobaczyć na błąd który wyskakuje podczas wgrywania. AVR Studio informuje zawsze o tym dlaczego program się nie wgrał. Czasem wystarczy obciążyć linie reset opornikiem 10k ohm, a czasem wystarczy odlutować ten opornik, ponieważ oporność przewodów wystarcza. Czasem po prostu występuje jakieś zwarcie i trzeba dobrze przejrzeć luty, albo polutować na nowo.

Jeśli udało nam się wgrać pierwszy program, a program nie działa tak jak powinien, to najprawdopodobniej program został źle napisany i sprawdź program ponownie. Najpierw można sprawdzić, czy na pewno skompilowaliśmy program pod dany mikrokontroler, ponieważ mikroprocesory różnią się budową. Głównym problemem jest także używanie bibliotek z zdefiniowanym czasem w samej bibliotece (np. #define F_CPU =4000000). Jeśli ustawiliśmy Fuse bity na 8MHz, a nasz biblioteka była pisana na 4MHz to nasze opóźnienia się rozjadą, a wszystkie funkcje wykorzystujące opóźnienia będą działały nieprawidłowo.

Jeśli masz pewność, że program jest ok, to sprawdź czy nie przylutowałeś urządzenia do nóżek odpowiadającym za JTAG, ponieważ jest to najczęstszy błąd. Jeśli masz załączone fuse bity uruchamiające JTAG, to oznacza, że na tych nóżkach jest zawsze niskie napięcie, a tym samym wartość logiczna zawsze na danej nóżce jest 0. Więc urządzenia podłączone do tych nóżek działają nieprawidłowo. Żeby usunąć ten błąd należy odpalić AVR Studio kilknąć ikonkę AVR i przejść na zakładkę fuse bity po czym odznaczyć JTAG. Po tej operacji powinno być ok.

PDF w wersji polskiej dla ATmegi16 pobrany z http://www.pg.gda.pl

 


 

Adresy: