Programator DIY do AVR – USBasp

USBasp – bardzo popularny programator do mikrokontrolerów AVR opisywałem całkiem niedawno na stronie Programator USBasp v2.0 Lcsoft. Był to gotowy moduł, który można kupić na ebay’u czy aliexpress za naprawdę małe pieniądze. Jednak swój sukces osiągnął dzięki bardzo prostej budowie i może zostać samodzielnie złożony nawet przez początkującego elektronika. Ja swojego USBasp zacząłem składać w 2007 roku i nieukończony projekt wrzuciłem do pudełka. Po 8 latach ponownie ujrzał światło dzienne i myślę, że warto go uruchomić.

Schemat USBasp na atmega8

W sieci można znaleźć kilka wersji schematów programatora, ale najlepiej oprzeć się na oryginalne ze strony autora, czyli www.fischl.de/usbasp/. Ja, projektując kilka lat temu PCB do swojego USBasp, korzystałem z jakiegoś innego schematu, zawierającego błędy. Zatem korzystajmy z oryginału, który wygląda tak:

Schemat programatora usbasp

Schemat na którym ja się wzorowałem nie zawierał rezystorów zabezpieczających R4-R6, diod Zenera 3V6, a rezystor R3 był włączony między 14 pin atmegi i R2, a powinien być umieszczony za gniazdem USB i przed R2. Mimo to mój USBasp działa (dolutowałem od strony druku diody Zenera).

Jednostronna płytka drukowana do USBasp DIY

Płytkę drukowaną do programatora projektowałem pod konkrektną obudowę, więc miałem z góry narzucone wymiary laminatu. Przy rozmieszczaniu elementów przeszkadzał nieco otwór na śrubę, która przechodzi przez środek PCB. Płytka jest jednostronna i nie udało się uniknąć kilku zworek (kolor czerwony), część z nich można zastąpić rezystorami zabezpieczającymi, o czym niżej.

Płytka do usbasp

Jak pisałem wyżej, w moim układzie nie uwzględniłem kilku elementów i projekt należy traktować jako punkt odniesienia, który wymaga poprawek a nie wzór do skopiowania. Nie uwzględnione diody Zenera wlutowałem od strony druku do pinów 2 i 3 gniazdka USB i masy. Tak zmontowany układ działa prawidłowo, ale poza tym dwie pionowe zworki przy gnieździe KANDA P1 powinny być zastąpione rezystorami R5 i R6 270Ω. Ścieżkę prowadzącą z pinu 19 atmegi do pinu 7 gniazda P1 KANDA należy przeciąć i połączyć rezystorem R4. Rezystor R3 powinien być wlutowany między 1 i 2 pin gniazdka USB P2. Zapewni to zgodność z oryginalnym schematem. Nie montowałem u siebie goldpinów P4 – SlowSCK, gdyż w nowszych wersjach firmware taktowanie ustawia się programowo. Można wtedy zrezygnować z wlutowywania długiej zworki prowadzącej do 25 nogi atmegi. Goldpiny P5 (Selfprogramming) umożliwią w przyszłości założenie zworki i upgrade firmware’u. W miejsce P3 wlutowałem włącznik kołyskowy, którym można podać napięcie zasilania na gniazdo KANDA – VTarget.

Niedokończony układ sprzed 8 lat wyglądał tak:

USBasp do dokończenia

Diody Zenera zabezpieczające port USB komputera wlutowane od strony ścieżek:

Płytka USBasp - strona ścieżek

Po wlutowaniu wszystkich elementów pozostało zaprogramowanie mikrokontrolera atmega8.

USBasp - obudowa

Teraz wystarczy wywiercić otworki w obudowie na diody LED, przełącznik i kabel USB.

Zaprogramowanie atmega8 wsadem usbasp 2011-05-28

Teraz znajdujemy się w punkcie, kiedy to musimy zaprogramować mikrokontroler AVR by mieć programator do programowania mikrokontrolerów AVR. Na szczęście nie jest to duży problemem – wystarczy płytka stykowa z zasilaczem, atmega8 i programator składający się z wtyczki lpt i kabelka. Jeśli ktoś posiada bardziej profesjonalny STK200, to oczywiście również się nada. Niezbędny będzie komputer czy laptop ze złączem LPT.

Programowanie atmegi8 - niezbędnik

Mikrokontroler wsadzamy do płytki, do nóżek 7 i 20 podłączmy zasilanie +5V, do 8 i 22 GND (masę). Końcówki programatora odpowiednio: RESET – 1 pin, MOSI – 17 pin, MISO – 18 pin, SCK – 19 pin. Masę programatora koniecznie trzeba połączyć z masą na płytce.

Płytka stykowa - programowanie atmega8

Programowanie zaczynamy od wgrania wsadu. Najnowszą wersję pobieramy ze strony projektu http://www.fischl.de/usbasp/.

Firmware usbasp ze strony domowej

Po rozpakowaniu kopiujemy sobie w dogodne miejsce plik usbasp.atmega8.2011-05-28.hex. Do zaprogramowania polecam świetny avrdude. W Windowsie czy Linuksie wystarczy wpisać w linii komend:

avrdude -c bascom -p m8 -U flash:w:usbasp.atmega8.2011-05-28.hex

Programowanie atmega8

Parametr -c bascom oznacza zastosowanie programatora typu bascom, -p m8 to typ mikrokontrolera – atmega8, dalsza część to programowanie pamięci flash zawartością wskazanego pliku.

Teraz musimy wgrać wymagane fusebity. Tu należy poświęcić nieco uwagi, bo błąd może narobić problemów lub uczynić atmegę bezużyteczną. Procesor z półki sklepowej posiada skonfigurowane fusebity, które między innymi ustawiają taktowanie procesora z wewnętrznego oscylatora o prędkości 1MHz. Dlatego możemy programować “goły” procesor, z podłączonym tylko zasilaniem. Po wgraniu nowych wartości taktowanie zostanie przestawione na zewnętrzny kwarc i nie będziemy już mieć możliwości komunikowania się z atmegą wpiętą w płytkę stykową – chyba że dołożymy rezonator i dwa kondensatorki. Wywołujemy avrdude ze składnią:

avrdude -c bascom -p m8 -U hfuse:w:0xC9:m -U lfuse:w:0xEF:m

Atmega8 - wgrywanie fusebitów

W skrócie – wgrywamy fusebity o wartości 0xC9 i 0xEF szesnastkowo. Mikrokontroler jest gotowy do włożenia w podstawkę na płytce programatora.

Podsumowanie

Kompletny i sprawdzony wizualnie programator można podłączyć do komputera i sprawdzić, czy jest poprawnie wykrywany. Mój gotowy układ, zamknięty w obudowie wygląda tak:

USBasp w obudowie

Jego przewaga nad większością gotowych układów to kabel z wtykiem USB – dzięki temu nie trzeba stosować przedłużaczy chroniących przed wyłamaniem wtyczki USB z płytki. Układ też wygodniej podłącza się do komputerów stacjonarnych.

Możesz również polubić…

2 komentarze

  1. 20.12.2015

    […] Płytka wyjęta z żółtej koperty od razu pracowała poprawnie. Mimo to, wgrałem przez USBasp bootloader, by uniknąć niespodzianek w przyszłości. Osoby po raz pierwszy odpalające Arduino […]

  2. 03.04.2024

    […] – shield za 10-12 zł to całkiem niezłe rozszerzenie płytki Arduino. Generalnie używam programatora USBasp, który kiedyś złożyłem samodzielnie, mogę też polecić taniego gotowca. Mam też STK200 […]

Leave a Reply

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.