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:

Złącze LPT

Złącze LPT

Najprostszym programatorem z możliwych, jest taka uproszczona wersja STK200:

Schemat STK200

Schemat 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:

Ulepszony schemat STK200

Ulepszony schemat 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:

Port COM (RS232)

Port COM (RS232)

Schemat prostego programatora na port COM zamieściłem poniżej:

Schemat programatora AVR na RS232

Schemat programatora AVR na RS232

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.

Schemat USBasp

Schemat USBasp

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:

Złącze typu KANDA

Złącze typu KANDA

Łą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:

Opis pinów mikrokontrolera ATmega8

Opis pinów mikrokontrolera ATmega8

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ąć.