Opisywany układ jest programatorem mikrokontrolerow AVR, wzorowanm na bardzo popularnym projekcie opracowanym przez http://www.fischl.de/usbasp/. Zaletą układu jest prostota (Tylko mikrokontroler ATMEGA8 i kilka dodatkowych elementow) i łatwość obsługi, a fakt że wspołpracuje on z komputerem przez port USB sprawia, że bez problemu można go używać na laptopie oraz komputerach z płytami głownymi pozbawionymi portu LPT (obecnie coraz trudniej o dobrą płytę z portem LPT). Transmisją sygnału przez USB zajmuje się mikrokontroler, więc nie jest wymagany żaden dodatkowy kontroler USB. Dodatkową ważną zaletą tego projektu jest szybkość programowania dochodząca do 5KB/s oraz możliwość jej zredukowania na potrzeby programowania mikrokontrolerow z zegarem <1.5MHz. Jedynym problemem jaki pojawi się na początku to konieczność zaprogramowania mikrokontrolera sterującego za pomocą dowolnego innego programatora. Najprościej jest to zrobić korzystając z opisu dostępnego tutaj. Do obsługi programatora najlepiej nadaje się program avrdude, gdyż działa on na wielu systemach operacyjnych. Testowałem go na Archlinux 64 , PLD Titanium, Windows XP i Vista.
Działanie:
Schemat ideowy programatora przedstawiony jest na rysunku poniżej:
Sercem układu jest mikrokontroler U1 (Atmega8) wraz z rezonatorem kwarcowym X1 (12MHz) i kondensatorami C1 (22pF) i C2 (22pF). Złącze RxD/TxD wraz z rezystorem R7 (1k) umożliwiają budowę interfejsu RS232 (w tej wersji nie jest wykorzystywany). Diody D3 i D4 wraz z rezystorami R5 (470R) i R6 (470R) stanowią kontrolkę zasilania i programowania. Rezystor R1 (10k) wymusza stan wysoki na pinie reset mikrokontrolera, gdy nie jest on wykorzystywany (po zaprogramowaniu układu U1). Z1 jest złączem USB typu B, służącym do komunikacji z komputerem i zasilania programatora oraz programowanego układu (gdy prąd nie przekracza 500mA). Kondensatory C3 (4,7uF) i C4 (100nF) filtrują napięcie zasilające a diody D1 (Zenera 3,6V) i D2 (Zenera 3,6V) dbają aby napięcia na liniach D+ i D- portu USB nie przekroczyły 3,6V. Rezystory R2 (2,2k) oraz R3 (68R) i R4 (68R) są konieczne dla poprawnego działania USB. Złącze Prog jest złączem programującym przez które w pierszej fazie programujemy układ U1 a później stanowi ono wyjście naszego programatora. Zworka S_Prog (Self Program) umożliwia uaktalnienie oprogramowania w układzie (zaprogramowanie U1). S_SCK (Slow SCK) zapewnia obniżenie częstotliwości zegara taktującego programowanie i możliwość zaprogramowania mikrokontrolerów działających na niskiej częstotliwości (<1,5MHz). Zworka S_Target (SUpply Target) podłącza zasilanie do programowanego układu.
Budowa:
Programator można zbudować w oparciu o płytkę drukowaną dostępną tutaj lub dowolną inną dostępną na stronie http://www.fischl.de/usbasp/. Rysunek w odbiciu lustrzanym znajduje się tutaj. Montaż rozpoczynamy od wlutowania jednej zworki znajdującej się pod układem scalonym U1. Kolejność pozostałych elementów jest dowolna ale polecam rozpocząć montaż od złącza USB. Pod mikrokontroler zalecam zastosowanie podstawki. Pomocą przy konstrukcji może okazać się dostępny tutaj schemat montażowy.
Gdyby chtoś chciał wykonać wersję płytki ze złączem KANDA, poniżej znajdują się odpowiednie wyprowadzenia tego złącza:
Wykaz Elementów:
1x Listwa Goldpin 1x2 (RxD/TxD)
3x Listwa Goldpin 1x3 + zworka
1x Listwa Goldpin 1x8
1x Złącze USB typu B (do druku)
1x Kabel USB_A - USB_B (taki jak do drukarki)
1x 1k
1x 2,2k
1x 10k
2x 68R
2x 470R
2x 22pF
1x 100nF
1x 4,7uF Elektrolit
1x Rezonator Kwarcowy 12MHz
2x Dioda Zenera 3V6
2x Dioda LED
1x Mikrokontroler ATMEGA8 + Podstawka
Programowanie:
Program do mikrokontrolera został napisany przez Thomasa Fischl'a i wszystkie jego wersje, począwszy od tych najwcześniejszych (wraz z kodami źródłowymi) można znaleźć na stronie autora. W moim projekcie zastosowałem wersję programu usbasp.2006-12-29.tar.gz dla mikrokontrolera ATMega8. Do mikrokontrolera należy załadować plik usbasp.atmega8.2006-12-29.hex znajdujący się w katalogu "/bin/firmware/". Z nowszą wersją oprogramowania miałem pewne problemy ale może to tylko przypadek :).
Po zaprogramowaniu mikrokontrolera czas na ustawienie jego bitow konfiguracyjnych (Fuse Bitow). Ogolnie powinno to wyglądać tak: ("1" oznacza bit niezaprogramowany, tak jak w kartach katalogowych)
Fuse high byte: 0xc9 (szesnastkowo)
RSTDISBL = 1
WDTON = 1
SPIEN = 0
CKOPT = 0
EESAVE = 1
BOOTSZ1 = 0
BOOTSZ0 = 0
BOOTRST = 1
Fuse low byte: 0x9f (szesnastkowo)
DODLEVEL = 1
BODEN = 0
SUT 1..0 = 01
CKSEL 3..0 = 1111
Rysunek poniżej przedstawia ustawienia fusebitów (Screen z programu BASCOM AVR):
Ustawienia fusebitów w programie Burn-O-Mat przedstawione są poniżej:
Obsługa:
a) Linux
1. Instalujemy program avrdude ze standardowego repozytorium
2. Podłączamy programator do portu USB (zworka S_Prog powinna być rozwarta)
3. Podstawowe komendy:
Tylko odczyt sygnatury: (m8 to typ mikrokontrolera)
avrdude -p m8 -c usbasp
Odczyt programu z pamięci mikrokontrolera do pliku *.hex
avrdude -p m8 -c usbasp -U flash:r:program.hex
Zapis programu z pliku *.hex do pamięci mikrokontrolera
avrdude -p m8 -c usbasp -U flash:w:program.hex
b) Windows
1. Włączamy programator do portu USB
2. Rozpocznie się instalacja sterownika dla USBasp. Wybieramy sterownik z folderu "/bin/win-driver/" (znajdziemygo po rozpakowaniu pliku usbasp.2006-12-29.tar.gz)
3. Ściągamy skompilowaną wersję programu avrdude (patrz załączniki)
4. Uruchamiamy konsolę "cmd"
5. Dalsze czynności tak jak dla systemu Linux od punktu 2
Pod Windowsem istnieje możliwość współpracy opisywanego programatora z programem BASCOM AVR. Aby to zrobić wykonujemy następujące czynności:
1. Klikamy Options->Programmer
2. W polu programmer wybieramy extrenal programmer
3. W części other w polu program wybieramy scieżkę do avrdude
4. W części other w polu parameter wpisujemy : "avrdude" -p m8 -c usbasp -U flash:w:"{FILE}":a -U flash:v:"{FILE}":a
"m8" musimy zamienić na odpowiedni typ mikrokontrolera, który chcemy programować (najczęściej jest to: t2313, m8, m16, m32 lub m162)
Zdjęcia Projektu:
Załącznik |
Wielkość |
Załącznik |
Wielkość |
63.12 KB |
|
11.52 KB |
|
11.56 KB |
|
55.19 KB |
|
15.67 KB |
|
6.59 KB |
|
6.63 KB |
|
6.38 KB |
|
6.43 KB |
|
12.07 KB |
|
12.05 KB |
|
78.15 KB |
|
16.36 KB |
|
6.69 KB |
|
6.67 KB |
|
6.66 KB |
|
6.66 KB |
|
95.06 KB |