Programator AVR usbasp

Programator mikrokontrolerów AVR – „usbasp”. Znajduje zastosowanie w laptopach, gdzie nie mamy złącza LPT. Oparty o ATmega8 w obudowie TQFP, najpierw konwertuje dane z USB na RS232, a następnie przesyła do uC w standardzie ISP. Tutaj można zobaczyć stronę autora projektu na której znajdziemy sporo zaprojektowanych płytek, zarówno z elementami przewlekanymi jak i SMD. Urządzenie buduje na podstawie schematu i programu zamieszczonego na tej stronie, projektując jednak własną płytkę, z elementami SMD.

Koszt takiego programatora to groszowa sprawa, kilka rezystorów, kwarc, atmega8, wtyczka usb. Każdemu kto ma problemy z programatorem LPT, polecam wykonanie takiego układu…

Zwykły programator „sample electronics” często robił mi błędy – nieraz tragiczne w skutkach. Przy odrobinie „szczęścia” potrafił namieszać lockbitach lub fusebitach. O ile w pierwszym przypadku wystarczy wykasowac pamięć, to w drugim może nie być już tak łatwo naprawić uC.

Zalety:
Prędkość programowania sięga do 5kB/s!
Zworka SCK – wolniejsze programowanie układów z zegarem poniżej 1,5MHz
Zworka SUPPLY – dostarczenie zasilania +5V do programowanego układu
Zworka SELF – aktualizacja własnego programu
Działa na różnych platformach, Linux, Mac, Windows
Gniazdo programowania ISP kompatybilne ze standardem KANDA
Małe wymiary
Nie potrzeba żadnych trudnodostępnych części czy sterowników

Pierwsze zaprogramowanie

Oczywiście na początku musimy wrzucić program w naszą atmegę, żeby wiedziała co ma robić :). Do tego celu użyjemy innego programatora, np. najprosztszego LPT, którego budowa jest prosta jak budowa cepa. Do naszych linii SCK, MISO, MOSI, RESET przyłączamy te same linie programatora. Wkładamy zworkę „self programing”:

Jeżeli korzystamy z zewnętrznego zasilania, łączymy też masy programatorów. Jeśli chcemy skorzystać z zasilania USB nie łączymy mas, ponieważ masę mamy już z USB (gdybyśmy połączyli, powstanie pętla masy i problemy z zaprogramowaniem gwarantowane).

Teraz wystarczy zwyczajnie zaprogramować atmegę załączonym wsadem (plik *.HEX) dowolnym programem, i zweryfikować poprawność kodu w mikroprocesorze. Jeśli kod się różni, oczywistym jest że trzeba czynnośc powtórzyć :). Ostatni krok to przestawienie ustawień fusebitów. Musimy wybrać „zewnętrzny kwarc z kondensatorami 10-16MHz”

Instalacja sterowników

Jeśli jesteśmy pewni że poprawnie wykonaliśmy powyższe czynności, wyjmujemy zworkę „self programing”, i podłączamy urządzenie do portu USB w komputerze. W urządzeniu powinna zaświecić się LED kontrolna, a komputer powinien wykryć nowe urządzenie „usbasp”, i poprosić o sterownik:

Wybieramy, że chcemy zainstalować sterownik z określonej lokalizacji:

A następnie wskazujemy folder który zawiera pobrane pliki sterownika usbasp.inf libusb0.sys libusb0.dll:

Dostajemy komunikat że urządzenie zostało zainstalowane i jest gotowe do pracy, a w menedżerze urządzeń znajdziemy „usbasp”:

Jak korzystać?

Nasz usbasp obsługiwany jest przez AVRDUDE od v5.2. Avrdude to program rozpowszechniany na licencji open source, jego kod źródłowy w różnych wersjach można pobrać stąd. Do uruchomienia na windows, musimy skompilować sobie avrdude z tych źródeł, lub pójść na łatwiznę ;) i pobrać już skompilowaną wersję  z linku na dole strony (wyciągnąłem z paczki WinAVR). Wrzucamy zawartość gdzieś na dysk, i klikamy na install_giveio.bat żeby zainstalować dodatkowy sterownik LPT. To tyle, możemy uruchomić już avrdude.

Teraz czeka nas nauka komend avrdude. Lub też możemy znowu pójść na łatwiznę ;) i użyć graficznej nakładki avr8 burn-o-mat. Najlepiej skopiować ją do tego samego katalogu co avrdude. Nakładka opiera się o java 1.5 która musi być zainstalowana na naszym komputerze. Opdalamy nakłądkę przez plik start.bat, wchodzimy w opcje, wskazujemy ścieżki do plików avrdude.exe i avrdude.conf, wybieramy z listy programator usbasp, zatwierdzamy. Obsługa jest intuicyjna, wskazujemy miejsce do pliku, klikamy write, read, lub werify w zależności od tego co chcemy zrobić. Wielką zaletą tej nakładki jest dobrze przedstawione ustawianie fusebitów i opcji zegara – możliwość popełnienia błędu ograniczona do minimum :)

Na koniec podam jeszcze oznaczenia wszystkich pinów mojego programatora (pinout ISP zgodny z tym na stronie autora projektu)

U mnie w ATmega32(16MHz), programator zapisuje i weryfikuje ponad 23kB kodu w około 21 sekund (dowód-screen). Dla programatora LPT sam zapis tego kodu zajmował ponad 30 sekund, a następnie weryfikacja drugie tyle! Nie wspominając już o tym że w co drugim zapisie robił błędy. W dodatku nie był odporny na zakłócenia… w moim projekcie odtwarzacza CD na liniach ISP ATmegi32 jest podpięty wyświetlacz LCD. Programując przez LPT, musiałem odłączać zasilanie od wyświetlacza, bo nie można było nawet odczytać sygnatury. Dodatkowo, po zaprogramowaniu, musiałem odłączać wtyczke programatora bo na wyświetlaczu pokazywały się krzaki. Programator usbasp rozwiązuje obydwa te problemy.

Miłej zabawy

Zobacz też: Programator USBTiny-MkII SLIM

Pobierz wszystkie pliki:
sterownik PC, *.sch i *.brd EAGLE 4.16r2, *.pdf PCB
usbasp

Pobierz AVRDUDE 5.5:
avrdude 5.5

0.00 avg. rating (0% score) - 0 votes

4 komentarze

  1. hi please update usbasp deiver for win8.1

  2. A co mogę poradzić jeśli nie posiadam ŻADNEGO komputera wyposażonego w porty COM czy LPT? Wszystkie, które mam, mają jedynie porty USB. Jak w takim przypadku zaprogramować mikrokontroler, skoro jest on używany w samym programatorze? Odwieczny problem jajka i kury… :/

    Czy istnieją jakieś PROSTE sposoby na zaprogramowanie mikrokontrolera bez pomocy zewnętrznego komputera? (swego rodzaju „bootstrapping”)
    Bo ja wiem… może jakieś ręczne ustawianie kolejnych adresów i ich zawartości poprzez podawanie odpowiednich napięć na odpowiednie nóżki za pomocą jakichś przełączniczków? (np. dipswitchy)

    • Nie da się. Potrzebny jest drugi programator.

      Po drugie, USBasp to już dziadek, polecam wykonać coś lepszego, np sprawdzony i ceniony klon mk-ii. Np ten http://mdiy.pl/programator-usbtiny-mkii-slim/ . Nie wymaga wcześniejszego programowania a koszt wykonania jest tylko troszkę wyższy, bo dochodzi tylko jeden scalak – ale za to ile możliwości.

  3. Czy mogę użyć kwarca 16.000 MHz?

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ą: