Mikrokontrolery AVR firmy Atmel królują obecnie na polskim rynku. W artykule postarałem się przybliżyć rodzaje najpopularniejszych rozwiązań w kwestii programowania tych układów. Ich ceny są coraz niższe i można je dostać w coraz większej liczbie sklepów. Aby rozpocząć przygodę z tymi układami, pierwszym ważnym krokiem jaki musimy podjąć jest zakup programatora. Ze względu na mnogość rodzajów, modeli i modyfikacji, napisałem ten krótki artykuł. Starałem się w sposób jak najbardziej przystępny dla początkujących opisać podstawowe typy programatorów, wraz z ich wadami i zaletami.
Programator LPT
Najtańszą opcją jest programator na LPT – niestety, najnowsze komputery i laptopy zwykle nie posiadają już tego złącza. Istnieją co prawda specjalne przejściówki USB<->LPT, ale nie każda nadaje się do tego celu; mogą sprawić wiele problemów – zwłaszcza początkującym. Mimo wszystko, jeśli należysz do grona „szczęśliwców” wyposażonych w nieco starszy sprzęt i masz do dyspozycji port LPT, ta opcja wydaje się być najlepszym wyborem. Złącze posiada 25 pinów (DB-25) i wygląda mniej-więcej tak:
Najprostszym programatorem z możliwych, jest taka uproszczona wersja STK200:
Jak widać, wystarczy kilka rezystorów, złącze DB-25 i 10 tzw. goldpinów. Programator oparty na tym schemacie ma jednak jedną, ogromną wadę – kompletny brak zabezpieczeń płyty głównej (czyli jeśli popełnimy błąd przy podłączaniu układu, istnieje duże ryzyko, że uszkodzimy płytę główną podczas próby programowania). Z tego powodu, mniej doświadczonym użytkownikom, polecam poniższą wersję STK200:
Programator COM (RS232)
Sytuacja ze złączem COM jest bardzo podobna, jak ze złączem LPT. Port posiada 9 pingów (DB-9) i wygląda tak:
Schemat prostego programatora na port COM zamieściłem poniżej:
Programator USB
Ostatnią opcją – w moim przekonaniu najrozsądniejszą (jeśli nie posiadamy portu COM ani LPT) – jest programator USB. Jego cena jest niestety nieco wyższa od pozostałych (od 30zł w górę – polecam zakupy na Allegro!), wystarczy wpisać „avr isp usb” w wyszukiwarce). Istnieje też możliwość samodzielnego złożenia takiego programatora, ale schemat opiera się na zaprogramowanym mikrokontrolerze – innymi słowy potrzebujemy gotowego programatora, by najpierw zaprogramować układ sterujący naszym przyszłym programatorem. Najpopularniejszym projektem jest tutaj bez wątpienia USBasp, po szczegóły odsyłam do tej strony.
UWAGA! W chwili obecnej (12.08.2010) programator USBasp ma duże problemy z działaniem w systemach Windows 7 (zarówno 32bit, jak i 64bit). Sam korzystam ze sprzedawanego na Allegro STK500v2 z funkcją „HID” oraz zabezpieczeniem portu USB i polecam go każdemu.
Złącze KANDA
Złącze KANDA to układ wyprowadzenia pinów, za pomocą których łączy się mikrokontroler z programatorem. Jest ich 10, z czego cztery to GND – w 10-żyłowej taśmie, GND 'ekranują’ przewody sygnałowe, dzięki czemu taśma może być dłuższa i jest mniej podatna na zewnętrzne zakłócenia – dużo rzadziej występują błędy w transmisji. Złącze prezentuje się następująco:
Łączenie programatora z mikrokontrolerem
Zakładając, że mamy już nasz programator i jest on wyposażony w złącze KANDA (nie jest to warunek krytyczny, podłączając uC do innego złącza, pomijamy po prostu dodatkowe linie GND, których nie ma), pora przystąpić do podłączenia go z naszym mikrokontrolerem. Jako przykładowy uC wybrałem Atmega8, lecz sposób łączenia jest podobny dla każdego innego układu. Pierwszym krokiem jest znalezienie opisu wyprowadzeń Atmega8. Najszybszym sposobem jest wejście na stronę images.google.pl i wpisanie w wyszukiwarce nazwy naszego mikrokontrolera (czyli „Atmega8”). Już na pierwszej stronie powinny pojawić się obrazki podobne do tego:
W przypadku trudności, zawsze można na google.pl wpisać frazę „Atmega8 datasheet”, pobrać plik PDF z dokumentacją i poszukać odpowiedniego rysunku na jednej z pierwszych stron.
Następnie, należy zwrócić uwagę na porty opisane jako MISO (pin 18 w Atmega8), MOSI (pin 17), SCK (pin 19), RST/RESET (pin 1), VCC (pin 7) i GND (piny 8 i 22). W opisie naszego złącza (np. schemat złącza KANDA opisany w punkcie wyżej) mamy wyprowadzenia o takich samych nazwach – wystarczy połączyć je z odpowiednimi pinami w naszym mikrokontrolerze. W przypadku KANDA mamy jeszcze wyprowadzenie LED, które bez obaw możemy pominąć.
W programatorze typu lpt można umieścić rezystory i to powinno zapobiec uszkodzeniu płyty głównej.
Witajcie.
Xixox’ie. Jeśli chodzi o ten najprostszy programator, to już tam są zastosowane rezystory.
Pozdrawiam.
Mateusz.