Programator AVR USBasp v2.0 Lcsoft i Linux

Programator USBasp stał się godnym i naturalnym następcą STK200 podłączanym do portu LPT. Ten nowszy, choć nieco bardziej skomplikowany w budowie, jest znacznie szybszy i funkcjonalniejszy, głównie za sprawą możliwości podłączenia do portu USB i funkcją zasilania programowanego układu. Samodzielne złożenie tego programatora nie jest trudne i taki układ na pewno pojawi się na stronie. Dziś zajmiemy się bardzo tanim gotowcem, idealnym dla początkujących – USBasp V2.0 Lcsoft Studio w cenie około 15zł na allegro i jeszcze taniej na chińskich portalach.

Co to jest USBasp Lcsoft?

Odpowiadając krótko na powyższe pytanie – chiński klon programatora USBasp opracowanego przez Thomasa Fischla. Urządzenie jest praktycznie zgodne elektrycznie z pierwowzorem. Porównując PCB ze schematem oryginału można zauważyć brak kondensatora elektrolitycznego C1 o pojemności 4,7μF, ale został dodany półprzewodnikowy bezpiecznik o oznaczeniu F1. W nieco inny, korzystniejszy sposób, rozwiązano zasilanie, dostępne na 2 pinie złącza KANDA. W oryginale było to +5V z USB lub jego brak, chiński odpowiednik posiada 3 opcje – 5V, brak (po zdjęciu zwory) lub 3,3V. Zrezygnowano z wlutowania goldpinów JP2 – zwora Self programming i JP3 – Slow SCK. USBasp Lcsoft posiada nieco zmodyfikowane oprogramowanie i Chińczycy założyli, że JP3 jest zbędne, a JP2 nie będzie wykorzystywane. Programator posiada kompaktowe wymiary, laminat jest węższy niż złącze KANDA:

JP w chińskim USBasp

Jeśli u kogoś pojawiło się pytanie – czy warto kupić? W chińskich sklepach cena wynosi około 2$ z darmową wysyłką do Polski, więc odpowiedź jest chyba jasna ;).

Pierwsze podłączenie programatora

W linuksie wystarczy podłączyć programator do portu USB i gotowe, nie trzeba instalować żadnych sterowników, wszystko jest w kernelu. Wpisując w terminalu

powinniśmy otrzymać wynik podobny do poniższego

Wykrywanie lsusb w linuksie

 

Czyli Vendor ID to 16C0 i Product ID to 05DC. Podłączmy teraz za pomocą kabelka IDC10 (2×5 PIN) mikrokontroler AVR i za pomocą avrdude spróbujmy odczytać podstawowe informacje:

Parametr -c to typ programatora, -p model mikrokontrolera AVR, tutaj jest to atmega8. Więcej o avrdude i innych narzędziach znajdziesz tutaj: Instalacja narzędzi dla AVR i IDE Eclipse w Linux Mint. Wynikiem działania jest…

Brak uprawnień usbasp w linuksie

No właśnie, operacja niedozwolona dla zwykłego użytkownika. Możemy to sprawdzić wydając polecenie:

Wydając wcześniej komendę lsusb widziałem, że jest to urządzenie nr 018 na magistrali 001, wynik był zgodny z oczekiwaniem:

Standardowe uprawnienia w Linux

Pewnym rozwiązaniem (nieeleganckim) jest uruchamianie avrdude z uprawnieniami roota. Ładniej jednak nadać uprawnienia do komunikacji z programatorem użytkownikowi, na początek dodajemy regułę:

Czyli w odpowiednim miejscu tworzymy plik xx-usbasp.rules (xx – jakaś niewykorzystana liczba) i wpisujemy w nim:

W terminalu wygląda to tak:

USBasp - reguła

Po zapisaniu pliku, wydajemy komendę:

I jeszcze raz sprawdzamy uprawnienia:

Właściwe uprawnienia do usbasp

Już jest OK :). Ponawiamy próbę odczytu naszej atmegi8:

Warning sck period w usbasp

Na dzień dobry ostrzeżenie – avrdude nie może ustawić taktowania na linii SCK magistrali ISP i sugeruje zrobić update firmware. Dalej wszystko jest OK, odczytana została poprawna sygnatura i fusebity. Z tym warningiem da się żyć, tzn. programować, ale da się też podnieść firmware w naszym tanim, chińskim programatorze, do wyższej wersji i zapomnieć o ostrzeżeniu.

Aktualizacja firmware w USBasp V2.0 Lcsoft Studio

Do aktualizacji oprogramowania programatora USBasp będzie potrzebny… programator mikrokontrolerów AVR. Może to być choćby taki najprostszy, składający się z wtyczki DB25 i kabelka + zasilacz stabilizowany 5V, można też wykorzystać drugi programator USBasp.

Warto zacząć od pobrania nowej wersji firmware’u, najlepiej ze strony domowej autora projektu: www.fischl.de/usbasp/ w części download wybieramy najnowszą wersję paczki:

Firmware usbasp ze strony domowej

Po rozpakowaniu archiwum, przechodzimy do folderu bin/firmware i kopiujemy plik dla odpowiedniego mikrokontrolera (np. usbasp.atmega8.2011-05-28.hex) w dogodne miejsce. W programatorze, który będziemy aktualizować, zwieramy punkty lutownicze JP2 – idealna do tego celu będzie odizolowana miedziana żyła skrętki komputerowej. Powstaje nam taki potworek:

Aktualizacja oprogramowania w USBasp

Programatory wyposażone w złącze KANDA łączymy kablem IDC10 jeden-do-jednego. Programowany programator nie może być wpięty w port USB, a zworka wyboru zasilania musi być ustawiona na 5V. Na początek odczytajmy fusebity z chińskiego usbasp:

Lcsoft Studio USBasp fusebity

No i mamy wyniki szesnastkowo: HighFuse: D9 i LowFuse: 9F. W pliku Readme.txt znajdującym się w ściągniętej paczce, dla atmegi8 są podane nieco inne wartości: hfuse: C9 i lfuse: EF. Różnice w zaprogramowanych poszczególnych bitach zostawiam dla dociekliwych. Na pewno warto ustawić wartości wskazane przez autora projektu, ale najpierw wgrajmy nowy soft:

Nowy firmware dla USBasp

Wgrało się, weryfikacja przebiegła pomyślnie. To teraz fusebity, po wpisaniu warto sprawdzić dwa razy przed wciśnięciem [Enter], bo pomyłka może zamienić programator w przycisk do papieru:

Wgrywanie fusebitów do usbasp

No i udało się :).

Od teraz, wykonując operacje odczytu/zapisu na mikrokontrolerach AVR, musimy programowo ustawić taktowanie linii SCK. W avrdude realizowane jest to za pomocą parametru -B X, gdzie X to liczba. Im wolniejsze taktowanie mikrokontrolera, tym większa liczba. Dla zegara 8MHz i więcej możemy pominąć -B, ale dla 1MHz trzeba wpisać -B 3, czyli:

Spowoduje poprawne odczytanie sygnatury atmegi8 taktowanej zegarem 1MHz, czyli takiej świeżej, z półki sklepowej.

Wpis “Programator AVR USBasp v2.0 Lcsoft i Linux” komentowano 9 razy

  1. jak uzyskać uprawnienie do edycji pliku w gnu nano? bo właśnie z ich powodu nie chce mi ich edytować (mam programator o tych samych id)(wiem prawdopodobnie jest to głupie pytanie, ale moja wiedza oscyluje bardzo blisko zera)

      • wielkie dzięki, działa, mam ten programator od niemal roku i tyle kombinowałem w windowsie, a dziś, akurat chciałem sobie odświeżyć i zobaczyć co tu się dzieje, i widzę ten temat „…i linux” bo od miesiąca jestem na ubuntu, teraz może nauczę się c na mikrokontrolery, dostałem wtedy nawet książkę, wielkie dzięki

      • W sumie racja, wyszło na reklamę. Nie specjalnie, no ale… Skoro jest dobre narzędzie, które potrafi zrobić za użytkownika wiele rzeczy, to dlaczego by o nim nie poinformować? Ok, wiem, dostanie mi się… 😉
        Potrzebowałbym beta-testerów do tego programu, bo sam nie wyłapię wszystkich bugów.
        A Pan, Panie Wojtku, to w jaki sposób programuje swoje AVRki? CLI AVRDude czy jakąś fajną nakładką graficzką na niego?

  2. Tak, korzysta z AVRDude.
    Aktualnie dodaje kilka „drobiazgów” do niego, np. baza danych o prockach (ilość RAM, FLASH, EEPROM, Fuse i LockBity).
    Muszę ogarnąć mądrze Fuse, bo to dla mnie temat nieco zakręcony, żeby nie narobić nikomu problemów przy programowaniu. Czy zechciałby Pan rzucić okiem na program jak wydam pierwszą publiczną wersję i napisać opinie?

Dodaj komentarz