USBTiny-MkII SLIM programmer

USBTiny-MkII SLIM programmer (AVRISP-MKII clone) supports all Attiny, Atmega, and Xmega µcontrollers. It has three programming interfaces: ISP, PDI, and TPI. It works with AvrStudio or AvrDude. Small convenient board, contains double direction voltage translator for all interfaces and working from 1,2V, jumper for target chip voltage selection 5V or 3,3V (LDO stabilizer), and status LEDs. The heart of the device is a AT90USB162 controller with hardware USB, so it can provide fast programming speeds.

About:

mkii_slim_render_topCircuit built and based on LUFA project (link), programmer inspired by USBTiny-MKII (link), and USBTiny MKII PL (link). I used MAX3002 in place for original GTL2003 translator, exactly like author of the PL version – this chip is more available. This change also need a change of code, which is described in last link – code in attachment is already moded – original will work incorrectly.

WARNING – as it shows, MAX3002 version (1.0) is working poorly when ISP lines are loaded with some resistance or capacitance – do not copy! PCB in 1.1 version with GTL2003 chip, which works like a charm, is available as update below – this pcb works with original firmware.

Programmer has a three IDC 6pin sockets to provide support for three programming protocols: ISP, PDI, and TPI. They allows to programm all of available Atmega, Attiny, and Xmega chips. PCB just looks complicated, but it can be also homemade. Vias are not placed under chip or other elements so they can be made with a wire. Vias placed under the at90usb162 chip derives its other free pins to pads on the bottom side of pcb – so circuit can be used also as a test board for other codes using hardware USB. Code change is very simple, it is made trough built-in USB bootloader and free tool from Atmel – FLIP.

Under IDC sockets a voltage selection jumper is placed – you can select voltage which can be used to power your target chip. Short the 1 and 2 for 5V, or 2 and 3 for 3,3V. For voltage reduction, LDO MCP1825S-3302ED stabilizer is used – but you can use any pin-compatible one, like LF33. Removed jumper will disconnect voltage from the “translated” side, and you have to provide this voltage from target chip to allow programmer to work.

I won’t write about programming, everybody knows how it works. Programmer can be used from AvrStudio or AvrDude. Disadvantage is that, we must choose with which software we want to use it – but changing form one to another is just a matter of minutes :)

Launching:

mkii_slim_1After correct soldering, connect your programmer to USB port. You will see a notification that your PC found a new device called “AT90USB162 DFU”. Download and install the FLIP software from Atmel. Then, install DFU drivers from Atmel\Flip\usb\ folder. After correct install, start FLIP, click on the “chip” icon, and select at90usb162 from the list. Then, click on the 2nd “usb cable” icon, select USB, and OPEN in next window. FLIP should detect your chip with no problem – if it can’t (you get error message), it means that you did something wrong. You can reinstall the driver, connect to another usb port, or reboot your system.

If you chip is brand new (empty) then after connect it will automatically start in bootloader mode. If you want to upgrade firmware, then put the HWB jumper on, and short RST pins. Chip will start in bootloader mode. Jumper can be removed.

If we want to compile the code for our own, we will need only WinAvr in 2010-01-10 version. Select make clean and then make all – that’s it. But we can choose here the software under which we want to compile the firmware. If we want to use it with AvrDude, then open the makefile file and add following line:
CDEFS += -DLIBUSB_DRIVER_COMPAT


Next step is to send our firmware to chip. Click on the first “open book” icon and select our HEX file. Then hit the RUN button. We should have checked the “erase”, “program”, and “verify” checkboxes. Code will be written very fast. Now, just reconnect programmer to usb port – or short the RST pins, and you should get two LEDs lit.

After that, PC will detect new device LUFA AVRISP MkII CLONE – it’s time to install driver for this. If we want to use programmer with AvrStudio, install driver from Atmel\AVR Tools\usb\ folder – this folder is created when installing AvrStudio. But if we want to us it with AvrDude, then install the LIBUSB driver. Unpack files, run inf-wizard app, select our programmer from list, save created file, and click on install now or use windows installer. LED1 should light up – this means that programmer is ready to work – congratulations, that’s it.

In AvrStudio, click on the Con button, then select AVRISP mkII from list, and hit connect.
In AvrDude, change your programmer type in command line for:
-c avrisp2 -P usb or -c avrispmkII -P usb.

Update 2013-03-03:
In the AVRISP-MKII lufa project, more changes have been done, and the most important are:
Bug fix, which was blocking USB communication after unsuccessful target communication.
Added a function for fast switching between Jungo (Avr/Atmel Studio) and LibUSB (AvrDude) driver, in one FirmWare. Just short the reset pins (you can expand them as a switch on the casing) and device will present itself in the system with a different serial number. Two flashes of LED means that we have Jungo driver, and four, LibUSB driver. In both cases we need to install correct drivers. It is very useful function when using different development environment, previously we had to upload different firmwares to the device and use driver filter.
In addition, programmer remembers the last used mode, and from that mode it start after reconnecting, it also remembers last used SCK speed. Below is a package with compiled code with switching functionality (LUFA 130303). In order to compile the program yourself with the above switching function, you need to define (uncomment) line RESET_TOGGLES_LIBUSB_COMPAT in the AppConfig.h file.

See also: µProg – tiny, fast, portable AVR programmer with SD

Gallery:

Files:
DOWNLOAD – Eagle 5.10 files: PCB, SCH, alternative PDFs; compiled HEX files in two versions, full C source code – 110528 version, help files.



DOWNLOAD – Eagle 5.10 files: PCB, SCH, and alternative PDFs for 1.1 version; compiled HEX files in two versions – 111009 version, full C source code – 111009 version, help files.



DOWNLOAD – Eagle 5.10 files: PCB, SCH, and alternative PDFs for 1.1 version; compiled HEX file with toggle function and full C source code – 130303 version, help files.



Current firmware is always available at the LUFA project at the bottom of the site, project is placed in the Projects/AVRISP-MKII, folder, and it must be compiled before burn. Attachment on my site will not be updated when new LUFA version is released.

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

108 Comments

  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. 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.

    • 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. Co wpisać w BOARD TYPE kompilując wsad? NONE czy USBTINYMKII?

Leave a Reply

Your email address will not be published. Required fields are marked *

Please leave these two fields as-is: