Programator USBTiny-MkII SLIM

Programator USBTiny-MKII SLIM (klon AVRISP-MKII) obsługuje wszystkie µkontrolery Attiny, Atmega, oraz Xmega. Posiada trzy interfejsy programowania: ISP, PDI, oraz TPI. Bezpośrednio współpracuje z AvrStudio lub AvrDude. Mała wygodna płytka, zawiera dwukierunkowy translator napięć dla wszystkich interfejsów współpracujący już od 1,2V, zworkę umożliwiającą zasilanie układu docelowego 5V lub 3,3V (stabilizator LDO 3,3V), oraz diody sygnalizujące. Sercem układu jest kontroler AT90USB162 ze sprzętowym interfejsem USB, dzięki czemu prędkość programowania jest bardzo duża.

O programatorze:

mkii_slim_render_topUkład zbudowany w oparciu o projekt LUFA (link), programator wzorowany na USBTiny-MKII (link), oraz USBTiny MKII PL (link). Zamiast oryginalnego translatora napięć GTL2003, użyłem MAX3002 tak jak autor wersji PL – układ ten jest w miarę łatwo dostępny. Taka zamiana wymaga modyfikacji kodu, którą autor opisał pod podanym linkiem – kod w załączniku jest zmodyfikowany – oryginalny będzie działał błędnie.

UWAGA – jak się okazało wersja oparta na MAX3002 (1.0) nie radzi sobie z obciążonymi liniami ISP – nie kopiować! Płytka w wersji 1.1 z układem GTL2003 która pracuje prawidłowo, dostępna jako aktualizacja – płytka ta pracuje z oryginalnym firmware.

Programator posiada trzy złącza wannowe 6pin, do obsługi trzech protokołów: ISP, PDI, oraz TPI. Pozwalają one programować wszystkie dostępne układy Atmega, Attiny oraz Xmega. Płytka wygląda na skomplikowaną i ściśniętą, ale bez problemu można wykonać ją w warunkach domowych. Przelotki potrzebne do działania programatora nie znajdują się pod układami czy innymi elementami więc można wykonać je przy pomocy drutu. Przelotki pod układem at90usb162 wyprowadzają jego pozostałe wolne piny na spód płytki, gdzie znajdują się sporych rozmiarów pola lutownicze – więc układ może być również wykorzystywany jako płytka do testowa innych programów wykorzystujących sprzętowe USB. Zmiana programu jest bajecznie prosta, bo odbywa się poprzez szybki bootloader USB i darmowe narzędzie od Atmela – FLIP.

Pod gniazdami wannowymi znajduje się zworka do wyboru napięcia którym można zasilić układ docelowy. Położenie pin 1 i 2 – napięcie 5V. Położenie 2 i 3 – napięcie 3,3V. Do obniżenia napięcia wykorzystano stabilizator liniowy LDO typu MCP1825S-3302ED – ale można wlutować dowolny stabilizator zgodny pinowo, np LF33. Zworka całkowicie zdjęta nie poda żadnego napięcia na układ docelowy a tym samym na „wtórną” stronę translatora napięć która musi mieć zasilanie. W takim przypadku napięcie zasilające należy doprowadzić taśmą z układu docelowego.

O samym programowaniu nie ma co się rozpisywać, programator jak programator. Wszyscy wiemy do czego służy. Może być obsługiwany bezpośrednio z AvrStudio lub pośrednio przez AvrDude. Minus jest taki że nie może być używany w obydwu programach – trzeba się zdecydować na jeden – choć zmiana wersji to 5 minut :)

Uruchamianie:

mkii_slim_1Po poprawnym zmontowaniu układu, podłączamy go do portu USB i naszym oczom powinien ukazać się piękny dymek że znaleziono nowe urządzenie „AT90USB162 DFU”. Pobieramy i instalujemy program FLIP od Atmela. Instalujemy sterownik, ręcznie wskazując folder z katalogu Atmel\Flip\usb\. Po poprawnym zainstalowaniu włączamy FLIP’a, klikamy na ikonkę z układem i wybieramy z listy at90usb162. Klikamy drugą ikonkę z przewodem usb, wybieramy z listy USB, a w następnym okienku OPEN. Program powinien wykryć układ bez oporów – jeśli jest inaczej (okienko z błędem) to znaczy że coś źle zrobiliśmy. Można przeinstalować sterownik, podpiąć do innego portu, lub ponownie uruchomić system.

Jeśli układ jest nowy (pusty) to po podłączeniu od razu wystartuje w bootloaderze – nie trzeba nic ruszać. Jeśli tylko uaktualniamy wsad, należy założyć zworkę na piny HWB, a następnie zewrzeć piny RST. Wtedy układ startuje w bootloaderze. Zworki można po tym zdjąć.

Jeśli chcemy sami skompilować kod, wystarczy do tego WinAvr w wersji 2010-01-10. Dajemy make clean a potem make all – i już. Mamy tu jednak do wyboru pod jaki program chcemy nasz kod skompilować – może działać z AvrStudio LUB z AvrDude. Jeśli chcemy używać go z AvrDude, do pliku makefile dodajemy wpis:
CDEFS += -DLIBUSB_DRIVER_COMPAT


Kolejnym krokiem jest załadowanie pliku do pamięci. W programie FLIP ciskamy ikonę otwartej książki ze strzałką „do”, i wybieramy wsad do wgrania. Następnie dajemy RUN. Powinniśmy mieć zaznaczone ptaszki przy „erase”, „program”, oraz „verify”. Program wgra się bardzo szybko. Wystarczy odłączyć i podłączyć programator – lub zewrzeć piny RST, i powinny zaświecić się obydwie diody na płytce.

Po tym komputer wykryje nowe urządzenie LUFA AVRISP MkII CLONE – czas zainstalować sterownik. Jeśli chcemy aby programator współpracował z AvrStudio, instalujemy sterownik z katalogu Atmel\AVR Tools\usb\ – katalog ten jest tworzony podczas instalacji AvrStudio. Jeśli chcemy pracować z AvrDude, instalujemy sterownik LIBUSB. Po rozpakowaniu paczki, odpalamy program inf-wizard, wybieramy z listy nasz programator, zapisujemy utworzony plik, i klikamy install now lub korzystamy w windowsowego instalatora. Na programatorze zaświeci się LED1 co oznacza gotowość do pracy – gratulacje, to wszystko.

W AvrStudio wystarczy kliknąc na ikonę Con, wybrać programator AVRISP mkII i kliknąć connect.
W AvrDude wystaczy zmienić typ programatora w linii poleceń na:
-c avrisp2 -P usb lub -c avrispmkII -P usb.

Aktualizacja 2013-03-03:
W projekcie AVRISP-MKII lufy poczyniono kolejne zmiany, najważniejsze to:
Usunięcie błędu który blokował komunikację USB w przypadku gdy nie udało się nawiązać komunikacji z układem docelowym.
Dodanie funkcji szybkiego przełączania pomiędzy sterownikiem Jungo (Avr/Atmel Studio) i LibUSB (AvrDude) na tym samym FirmWare. Wystarczy zewrzeć piny resetu (można wyprowadzić je w postaci switcha na obudowę) i układ przedstawi się w systemie z innym numerem seryjnym. Dwa mignięcia diodą to sterownik Jungo, cztery mignięcia to sterownik LibUSB. W obydwu przypadkach po wykryciu należy zainstalować poprawne sterowniki. Jest to funkcja bardzo przydatna gdy korzystamy z różnych środowisk, wcześniej trzeba było wgrywać osobne wsady i korzystać z filtra sterowników.
Ponadto programator zapamiętuje ostatnio używany tryb i od takiego startuje po podłączeniu, pamięta też ostatnio ustawianą prędkość SCK. Poniżej znajduje się paczka ze skompilowanym wsadem z funkcją przełączania (LUFA 130303). Aby samodzielnie skompilować program z powyższą funkcją przełączania, należy w pliku AppConfig.h zdefiniować (odkomentować) linię RESET_TOGGLES_LIBUSB_COMPAT.

Zobacz także: µProg – mały, szybki, przenośny programator AVR z SD

Galeria:

Pliki:
POBIERZ – Pliki eagle 5.10: PCB, SCH, alternatywne PDF; Wsad HEX w dwóch wersjach, pełny kod źródłowy C – wersja 110528, pliki pomocnicze.



POBIERZ – Pliki eagle 5.10: PCB, SCH, alternatywne PDF wersji 1.1; Wsad HEX w dwóch wersjach – wersja 111009, pełny kod źródłowy C – wersja 111009, pliki pomocnicze.



POBIERZ – Pliki eagle 5.10: PCB, SCH, alternatywne PDF wersji 1.1; Wsad HEX z opcją przełączania oraz pełny kod źródłowy C – wersja 130303, pliki pomocnicze.



Aktualny firmware jest zawsze dostępny na stronie projektu LUFA u dołu strony, projekt znajduje się w katalogu Projects/AVRISP-MKII, i należy go skompilować. Załącznik na tej stronie nie będzie aktualizowany wraz z aktualizacją LUFY.

3.67 avg. rating (78% score) - 3 votes

108 komentarzy

  1. Dzień Dobry ,
    jestem zainteresowany kupnem zmontowanego programatora ostatniej wersji.
    Prosze o odpowiedź na adres mailowy.
    A.Wardzinski

  2. Hi,
    your GND is connected to USB Mini pin 4. This pin should be for identification. GND is pin 5. I was wondering how it works for you. I realized that you have usb shield connected to GND. Probably this is why it works.

    • Hi i know this, my mistake. It works in any single case. Maybe GND is taken from shield, maybe micro-usb cables have 4 and 5 pins shorted together, don’t know.

  3. Ja mam takie pytanie, gdzie wkładasz mikrokontroler do zaprogramowania? Robisz prowizorkę łącząc na pająka? Masz może jakiś adapter? Gdzie ewentualnie taki adapter można kupić? Może można gdzieś znaleźć schemat aby samemu wykonać? Szukałem już i na elektroda i poprzez Google ale wszyscy piszą jedynie o programatorach ignorując w ogóle temat tego gdzie włożyć microkontroler :)

    • ISP – czyli programowanie układu w systemie. Gotowy produkt lub moduł posiada 6 pinowe złącze na płytce, i tam się wpina wtyczkę programatora. Podstawki do programowania stosowało się w czasach układów S51 których nie można było programować w systemie, teraz nie ma już takiej potrzeby. Adapter oczywiście można sobie zbudować w oparciu o notę aplikacyjną ale jaki w tym sens?

  4. Witam!

    Czy ktoś posiada jeszcze płytki PCB do tego projektu?

    Dziękuję

  5. Mam takie pytanie czy nie dałoby się jakoś ograniczyć ilość linii programujących? Z tego co widać na schemacie to najwięcej linii używa ISP bo 4 (SCK, MISO, MOSI, RESET), czy nie dałoby się na tych czterech liniach puścić też sygnałów TPI oraz PDI? Po co bawić się w 3 złącza jak można by używać jednego 6 pinowego (z wliczoną masą i zasilaniem)…

    • To już niestandardowe rozwiązania, do tego niestandardowe kable, i cała reszta, a potem przypominanie sobie „jak ja to zrobiłem”. Albo płytka rozbudowana o kolejne układy przełączające interfejsy tak aby się nie gryzły. Jak kto woli, ja wolę trzymać się standardów :)

  6. Złożyłem układ, wgrałem wsad 130303, system widzi urządzenie avrstudio „Unable to connect to tool AVRISP mkII (000200312345)”. Próbowałem zmieniac sterowniki za pomocą zadig, odinstalowac, zainstalować, 6.2, 5.1 itd, ciągle ten sam błąd. avrdude nie widzi żadnego programatora pod USB. Wszystko to niezależnie, czy programator mruga 2 czy 4 razy. Win7 x64.

    PS. Macie może skompilowanego hexa najnowszego wydania?Bo jak sam skompilowałem atmelowski toolchainem, to system nawet urządzenia nie wykrywał.

  7. Witam. Zbudowałem sobie programator w wersji 1.1 (wersja 130303). Mam problem, bo po podłączeniu do komputera pojawia się chmurka „Nie rozpoznano urządzenia”. Zmierzyłem napięcie zasilania na płytce i wynosi ono 3,6V a przecież powinno być 5V? Co może być nie tak?

  8. Ok problem rozwiązany, powodem był złej jakości kabel USB…

  9. Michał S.

    Wykonałem programator z tej strony. Wgrałem HEX z wersji 130303. Przyciskiem od resetu zmieniam ten niby sterownik. Dioda mruga dwa razy lub cztery. Problem w tym, że za każdym razem komputer widzi to samo urządzenie. Myślałem, że powinny być dwa różne. Mam system Windows 8 i on sam zainstalował sobie sterowniki.

    W menadżerze urządzeń mam za każdym razem pozycję JUNGO i w niej „AVRISP mkII” oraz „WinDriver”.

    • To źle że sam zainstalował. Układ przedstawia się tak samo, dla tego trzeba dopilnować aby zainstalować odpowiednie sterowniki.

    • Michał S.

      Chciałem dzisiaj przeinstalować serowniki, więc wszedłem w menadżer urządzeń i w zakładce JUNGO odinstalowałem AVRISP mkII oraz WinDriver. Tylko teraz mam problem po gdy teraz wpinam programator to on nie pojawia się już w zakładce JUNGO tylko w „Inne urządzenia” jako AVRISP mkII i ma przy sobie żółty trójkąt z wykrzyknikiem. Teraz nawet automatycznie nie udaje się ich zainstalować. Coś zepsułem i nie wiem jak to naprawić.

  10. czy ktoś instalował Flip ?
    java uniemożliwia odpalenie „could not create java virtual machine”
    i po xmega :) sa nawet pakiety z javą od Atmela – oczywiście niedziałające – pozdrawiam

  11. Wsad z nowej LUFA’y. Skompilowany z wersją programatora 1.18
    https://drive.google.com/file/d/0B-N8Fu15GoAzYW9CZmZxVEtUZ2M/view?usp=sharing

  12. Co wpisać w BOARD TYPE kompilując wsad? NONE czy USBTINYMKII?

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Proszę pozostawić te dwa pola tak jak są: