Programator na USB (USBasp)


9.66667
Ocena: None Średnia: 9.7 (9 głosujących)

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łącznikWielkość
Schemat63.12 KB
Płytka11.52 KB
Płytka (odbicie lustrzane)11.56 KB
Płytka (6 na stronie)55.19 KB
Montowanie15.67 KB
Opis płytki 6.59 KB
Opis płytki (odbicie lustrzane)6.63 KB
Punkty lutownicze6.38 KB
Punkty lutownicze (odbicie lustrzane)6.43 KB
Płytka (Złącze KANDA)12.07 KB
Płytka (Złącze KANDA) (odbicie lustrzane)12.05 KB
Płytka (Złącze KANDA) (8 na stronie)78.15 KB
Montowanie (Złącze KANDA)16.36 KB
Opis płytki (Złącze KANDA)6.69 KB
Opis płytki (Złącze KANDA) (odbicie lustrzane)6.67 KB
Punkty lutownicze (Złącze KANDA)6.66 KB
Punkty lutownicze (Złącze KANDA) odbicie lustrzane) 6.66 KB
AVRDUDE 5.5 (plik *.exe i *.conf)95.06 KB



Portret użytkownika michalMNW

dziwny problem

Mam już najnowszy firmware i nadal ich nie wykrywa, a grzeją się jakby coś było źle podłączone, dodam również, że na nóżkach zasilania zamiast 5V jest 3.5V. Co zrobić?

Portret użytkownika EDC

Odp.dziwny problem

Kolego, rusz głową. Żeby sprawdzić czy Twój post się zamieścił wystarczy nacisnąc u góry strony "Odpowiedzi i zmiany". Jeśli założysz konto będziesz miał możliwość edycji swoich postów, dopisywania lub zmian bez konieczności zamieszczania nowego postu. To nie kosztuje aż tyle czasu.

Co do procesorów, to jeśli się grzeją to napewno coś jest źle podłączone, albo nepewno było i już są uszkodzone. Te procesory dużo wybaczają ale mi się udało już dwa załatwić na amen. Oczywiście przez pośpiech, nieuwagę i pomyłkę.

-

BARTek
Moja strona

Portret użytkownika Grzeniu 73

Witam! Widział ktos wsad do

Witam! Widział ktos wsad do procesora 16u2? Chciałbym wgrać do płytki Adruino uno.Szukałem ,ale nic nie znalazłem.

Portret użytkownika my website

Odpowiedź | Mirley - Elektronika i Programowanie

Real time stats and reporting and you'll be able
to promote your link in forums, over a free blog, via email, along
with few limitations my website so you will need
to get extra careful that you just do not get carried away and borrow greater than you are able to afford to repay, since you'll wind
up in more trouble.

Portret użytkownika janusz123321

Dlaczego po podłączeniu nic

Dlaczego po podłączeniu nic sie nie dzieje i strasznie się grzeje dioda zenera D2?

Portret użytkownika EDC

Odp.USBasp

Nic się nie dzieje bo grzeje się dioda ;) Jest na linii transmisji więc jeśli tam coś kuleje to trudno będzie się dogadać z komputerem.
Nie każdy ma dobry wzrok, spytam więc czy widziałeś te paski na jednym z końców diody. Jak w każdej diodzie prawie, oznaczeniem biegunowości jest znak na obudowie w postaci paska. Przeciwna strona do tej z paskiem ma być podłączona do masy.
Do testów wyjmij też mikrokontroler z podstawki. Dopiero jak znajdziesz przyczyne grzania się diody możesz go tam wstawić z powrotem.

-

BARTek
Moja strona

Portret użytkownika goscXYZ

Hej Mirley, mam pytanie, ja

Hej Mirley, mam pytanie, ja nie jestem aż tak bardzo wtajemniczony i chciałem się zapytać, do czego jest w tym programatorze interfejs RS232 ??? (widzę na schemacie) Tzn. można jakoś ten programator debagować czy coś????