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ć.
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 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).
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.
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:
Diody Zenera zabezpieczające port USB komputera wlutowane od strony ścieżek:
Po wlutowaniu wszystkich elementów pozostało zaprogramowanie mikrokontrolera atmega8.
Teraz wystarczy wywiercić otworki w obudowie na diody LED, przełącznik i kabel USB.
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.
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.
Programowanie zaczynamy od wgrania wsadu. Najnowszą wersję pobieramy ze strony projektu http://www.fischl.de/usbasp/.
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
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
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.
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:
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.
Mamy w domu dość wiekowy (2012) Boombox Philips, model AZ385/12 używany przez dzieci głównie jako…
Mega tanie, bezprzewodowe moduły Internet of Things na dobre zadomowiły się w naszych sieciach. Od…
Pewnie nie każdy posiadacz tytułowej stacji lutowniczej wie, że posiada ona możliwość aktualizacji firmware'u. Producent…
Jakiś czas temu, przeglądając Aliexpress natknąłem się na ciekawy shield do Arduino Nano. Według opisu…
W mailach i komentarzach kilka razy przewijała się prośba o ten wpis. Chodzi o aktualizację…
Dziś tematyka audio, a nawet audiofilska. Uznany wzmacniacz słuchawkowy Lehmann Black Cube Linear o dość…
Zobacz komentarze