(9 głosujących) Opisywany układ jest programatorem mikrokontrolerow AVR, wzorowanm na bardzo popularnym projekcie opracowanym przez http://www.fischl.de/usbasp/. Zaletą układu jest prostota (Tylko mikrokontroler ATMEGA8 i kilka dodatkowych elementow) i łatwość obsługi, a fakt że wspołpracuje on z komputerem przez port USB sprawia, że bez problemu można go używać na laptopie oraz komputerach z płytami głownymi pozbawionymi portu LPT (obecnie coraz trudniej o dobrą płytę z portem LPT). Transmisją sygnału przez USB zajmuje się mikrokontroler, więc nie jest wymagany żaden dodatkowy kontroler USB. Dodatkową ważną zaletą tego projektu jest szybkość programowania dochodząca do 5KB/s oraz możliwość jej zredukowania na potrzeby programowania mikrokontrolerow z zegarem <1.5MHz. Jedynym problemem jaki pojawi się na początku to konieczność zaprogramowania mikrokontrolera sterującego za pomocą dowolnego innego programatora. Najprościej jest to zrobić korzystając z opisu dostępnego tutaj. Do obsługi programatora najlepiej nadaje się program avrdude, gdyż działa on na wielu systemach operacyjnych. Testowałem go na Archlinux 64 , PLD Titanium, Windows XP i Vista.
Działanie:Schemat ideowy programatora przedstawiony jest na rysunku poniżej: Sercem układu jest mikrokontroler U1 (Atmega8) wraz z rezonatorem kwarcowym X1 (12MHz) i kondensatorami C1 (22pF) i C2 (22pF). Złącze RxD/TxD wraz z rezystorem R7 (1k) umożliwiają budowę interfejsu RS232 (w tej wersji nie jest wykorzystywany). Diody D3 i D4 wraz z rezystorami R5 (470R) i R6 (470R) stanowią kontrolkę zasilania i programowania. Rezystor R1 (10k) wymusza stan wysoki na pinie reset mikrokontrolera, gdy nie jest on wykorzystywany (po zaprogramowaniu układu U1). Z1 jest złączem USB typu B, służącym do komunikacji z komputerem i zasilania programatora oraz programowanego układu (gdy prąd nie przekracza 500mA). Kondensatory C3 (4,7uF) i C4 (100nF) filtrują napięcie zasilające a diody D1 (Zenera 3,6V) i D2 (Zenera 3,6V) dbają aby napięcia na liniach D+ i D- portu USB nie przekroczyły 3,6V. Rezystory R2 (2,2k) oraz R3 (68R) i R4 (68R) są konieczne dla poprawnego działania USB. Złącze Prog jest złączem programującym przez które w pierszej fazie programujemy układ U1 a później stanowi ono wyjście naszego programatora. Zworka S_Prog (Self Program) umożliwia uaktalnienie oprogramowania w układzie (zaprogramowanie U1). S_SCK (Slow SCK) zapewnia obniżenie częstotliwości zegara taktującego programowanie i możliwość zaprogramowania mikrokontrolerów działających na niskiej częstotliwości (<1,5MHz). Zworka S_Target (SUpply Target) podłącza zasilanie do programowanego układu. Budowa:Programator można zbudować w oparciu o płytkę drukowaną dostępną tutaj lub dowolną inną dostępną na stronie http://www.fischl.de/usbasp/. Rysunek w odbiciu lustrzanym znajduje się tutaj. Montaż rozpoczynamy od wlutowania jednej zworki znajdującej się pod układem scalonym U1. Kolejność pozostałych elementów jest dowolna ale polecam rozpocząć montaż od złącza USB. Pod mikrokontroler zalecam zastosowanie podstawki. Pomocą przy konstrukcji może okazać się dostępny tutaj schemat montażowy. Gdyby chtoś chciał wykonać wersję płytki ze złączem KANDA, poniżej znajdują się odpowiednie wyprowadzenia tego złącza: Wykaz Elementów:1x Listwa Goldpin 1x2 (RxD/TxD) 3x Listwa Goldpin 1x3 + zworka 1x Listwa Goldpin 1x8 1x Złącze USB typu B (do druku) 1x Kabel USB_A - USB_B (taki jak do drukarki) 1x 1k 2x 22pF 1x Rezonator Kwarcowy 12MHz Programowanie:Program do mikrokontrolera został napisany przez Thomasa Fischl'a i wszystkie jego wersje, począwszy od tych najwcześniejszych (wraz z kodami źródłowymi) można znaleźć na stronie autora. W moim projekcie zastosowałem wersję programu usbasp.2006-12-29.tar.gz dla mikrokontrolera ATMega8. Do mikrokontrolera należy załadować plik usbasp.atmega8.2006-12-29.hex znajdujący się w katalogu "/bin/firmware/". Z nowszą wersją oprogramowania miałem pewne problemy ale może to tylko przypadek :). Po zaprogramowaniu mikrokontrolera czas na ustawienie jego bitow konfiguracyjnych (Fuse Bitow). Ogolnie powinno to wyglądać tak: ("1" oznacza bit niezaprogramowany, tak jak w kartach katalogowych) Fuse high byte: 0xc9 (szesnastkowo) Fuse low byte: 0x9f (szesnastkowo) Rysunek poniżej przedstawia ustawienia fusebitów (Screen z programu BASCOM AVR): Ustawienia fusebitów w programie Burn-O-Mat przedstawione są poniżej: Obsługa:a) Linux1. Instalujemy program avrdude ze standardowego repozytorium 2. Podłączamy programator do portu USB (zworka S_Prog powinna być rozwarta) 3. Podstawowe komendy: Tylko odczyt sygnatury: (m8 to typ mikrokontrolera) avrdude -p m8 -c usbasp Odczyt programu z pamięci mikrokontrolera do pliku *.hex avrdude -p m8 -c usbasp -U flash:r:program.hex Zapis programu z pliku *.hex do pamięci mikrokontrolera avrdude -p m8 -c usbasp -U flash:w:program.hex b) Windows1. Włączamy programator do portu USB 2. Rozpocznie się instalacja sterownika dla USBasp. Wybieramy sterownik z folderu "/bin/win-driver/" (znajdziemygo po rozpakowaniu pliku usbasp.2006-12-29.tar.gz) 3. Ściągamy skompilowaną wersję programu avrdude (patrz załączniki) 4. Uruchamiamy konsolę "cmd" 5. Dalsze czynności tak jak dla systemu Linux od punktu 2 Pod Windowsem istnieje możliwość współpracy opisywanego programatora z programem BASCOM AVR. Aby to zrobić wykonujemy następujące czynności: "m8" musimy zamienić na odpowiedni typ mikrokontrolera, który chcemy programować (najczęściej jest to: t2313, m8, m16, m32 lub m162) Zdjęcia Projektu:
|
|||||||||||||||||||||||||||||||||||||||||
dziala...
Uklad dziala:) ale znow mam problem z programowaniem...;/ wpisuje w Bascomie tak jak ma byc a mimo to pojawia sie jakies okienko i szybko znika;/ nie wiem co jest nie tak;/
Fusebit
Nie wiem jakim cudem ale i układ programuje mikro-kontroler i zapisuje Fusebity. Jedynym problemem jest tak ze jak sie raz zmieni Fuse-Bity to pozniej nie mozna je zmienic...;/
Komunikat
taki komunikat otrzymuje:
avrdude.exe: error: programm enable: target doesn't answer. 1
avrdude.exe: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude.exe: Device signature = 0xffffff
avrdude.exe: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
avrdude.exe done. Thank you.
Możliwe że zablokowałeś Uc
Możliwe że zablokowałeś Uc
uC
nie ma takiej mozliwosci poniewaz na stk200/300 jak podlacze i programie bascom da sie modyfikowac nadal a na uspasp i burn-0-mat tylko 1 potem juz sie nie da....
Re: Usbasp
To jakieś tam okienko to avrdude. Dobrze że się pojawia bo to znaczy że avrdude się wywołuje. W czasie testów jest to jednak głupi pomysł. Uruchom z konsoli tak jak zalecałem. Komunikat, który Ci się pojawia świadczy o tym że usbasp działa tylko nie ma podłączenia do programowanego procka. A na jakie fusebity przestawiasz i jakiego programu używasz do fusów?
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Mialem ustawiony go na 8Mhz
Mialem ustawiony go na 8Mhz zewnętrzny przestawilem go na wewnętrzny CKSEL3..0="0001" i sie wtedy jakby zablokowal. Teraz zaczolem kombinowac ze zworkami i dziwne ale przy zwarciu zwroki S_Sck normalnie dziala ;) Czyzby fuse bity musze wgrywac przy tej zwroce?? wiem ze ta zworka jest ponizej 1,5Mhz ale jak ustawie na wewnetrzy 4Mhz i rozewrze zworke to nadal mam ten sam problem a przy zwratej wszystko normalnie ;) ...
Re: USBASP
Jaki mikrokontroler programujesz? nie ma on czasami flagi ckdiv8?
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Atmega 8
Atmege 8 programuje..
Re: M8
Jak masz M8 to faktycznie nie ma ckdiv ale to co ustawiłeś CKSEL=0001 daje ci 1MHz a nie 4MHz. Dla 1MHz jest CKSEL3..0="0001", dla 2MHz należy ustawić CKSEL3..0="0010", dla 4MHz ustawiamy CKSEL3..0="0011", natomiast dla 8MHz wymagana wartość to CKSEL3..0="0100".
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
ckdiv8
A ten ckdiv8 nie jest czasem w attiny ukladach ?? i to nie jest dzielnik przez 8??
i wtedy bede musial uzywać tej zworki??
Timer cd
dzięki wielkie, faktycznie kwestia softu :)
Re: CKviv
Tak CKdiv8 (dzielnik /8)jest w układach Tiny2313 ale nie tylko. Zworki używasz zawsze wtedy gdy taktowanie masz poniżej 1.5MHz. Więc jak masz kwarc załóżmy 16MHz i CKDIV ustawiony, to masz 2MHZ trafiające na procka
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Jaka powinna być wielkość
Jaka powinna być wielkość płytki?
Re: USBASP
Pewnie masz problem z wydrukiem.... odcinek 3cm ma mieć 3cm. W adobe reader ustaw brak dopasowania do strony, nie drukuj z foxit'a bo on się nie nadaje
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Tylko jak odcinek 3cm ma 3 cm
Tylko jak odcinek 3cm ma 3 cm to nie pasuje mi podstawka pod atmege8 na szerokość. Dlatego pytam jaka powinna być wielkość całej płytki.
Re; USBASP
Sprawdzę rozmiar w pliku bo przecież sam drukowałem z tego samego pdf'a co jest na stronie
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Aha i jak chce wydrukować i
Aha i jak chce wydrukować i zrobić termotransferem płytke to którą wybrać odbicie lustrzane czy zwykły plik płytka? Z góry dziękuję za tą i powyższą odpowiedź ;)
I który plik wybrać do
I który plik wybrać do termotransferu?
Zwykły plik podpisany PŁYTKA
Zwykły plik podpisany PŁYTKA
Re: Usbasp
Plik do wydruku jest dobry..... sprawdzałem przed chwilą. Odcinek 3cm ma 3,1cm ale to pewnie błąd pomiaru. Patrz do opcji wydruku, opcja skalowanie lub dopasowanie do strony musi być na brak lub 100% itp
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Problem z programatorem
Witam. Złożyłem ten programator i zaprogramowałem Atmege8 do niego przez LPT, ale nie działa mi.
Podłączam do programatora inną atmegę8, czystą, nową.
W avrdude wyskakuje mi coś takiego:
C:\avrdude>avrdude -p m8 -c usbasp
found 5 busses
avrdude: error: programm enable: target doesn't answer. 1
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
Nie może znaleźć podłączonej do programatora atmegi.
W czym może tkwić problem?
Problem rozwiązany zworkę
Problem rozwiązany zworkę zmieniłem na s_SCK i działa ;)
rezystory w projektach
czy te rezystory w projektach jak nie mają podanej żadnej wartości są na 1/4W czy na 1/8W?
Re: USBASP
Nie mają podanej mocy, wartości są..... mogą być 1/4W lub 1/8W. Ja prawie zawsze stosuję na 1/4W. Mocniejsze są podpisane na schemacie.
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Witam, Nie wie ktoś, czy
Witam,
Nie wie ktoś, czy podczas programowania przez usb przesyłane są też informacje o tym ile jeszcze zostało przesłanych danych?
Chciałbym sobie zrobić tak, żeby mi na diodach pokazywało taki "progress bar", taki pasek postępu. Np. na 8 albo 10 diodach... W kodzie bym pogrzebał, tylko czy tak się da w ogóle?
nie działa ten wynalazek
Niestety jestem zawiedziony i rozczarowany. Komputer nie rozpoznaje urządzenia, po podłączeniu do USB zaświeca się led sygnalizująca podłączenie do usb i tyle. Wyskakuje okienko z informacją ze system wykrył urządzenie ale go nie rozpoznaje. Taki sam efekt jest na laptopie z windows 7 64bit jak i na stacjonarnym windows xp.
Nie pomogła podmiana kwarca, ani zenerów z 3,6V na 3,3V.
Programuje bez problemu na STK ze złączem LPT ale nie mam teraz dostępu do komputera stacjonarnego i dlatego chciałem zrobić programator avr na usb.
Procek sprawny, programowałem 2 szt i przy każdym z nich taki sam efekt.
Widocznie sterowniki do tego oraz sam wsad do procka jest jakiś niedorobiony,bo gdyby było to dopracowane przez autora, to działałoby bezproblemowo.
Mówi się trudno. Poszukam coś normalnego albo kupie stary stacjonarny z lpt i problemy znikną. Chyba że za jakieś 20lat ktoś w końcu zrobi programator pod usb działający.
Programator USB
Dziwna sprawa, bo u mnie działa bez problemów i pod win 7 i xp. Kolega źle programuje atmege, albo fusebity źle ustawione.
Re: USBASP
A ustawił kolega fusebity???? To nie wina sterowników bo nawet windows jeszczo o nie nie poprosił. Winą jest błąd montażu albo źle zaprogramowany procek, albo zły kwarc. Zrobiłem już 10 tych programatorów na różnych płytkach i działa zawsze od pierwszego włączenia
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
michał
A wstaw zdjęcia płytki od strony ścieżek jak i elementów. Oraz zczytaj fusy jakie masz.
Pozdrawiam
Pytanie o Zenery
Witam, czy mogę pominąć montaż Zenerów? Nie posiadam ich a sklep dopiero w poniedziałek bedzie czynny. Resztę układu mam zbudowaną. Pozdrawiam
Już dałem rade, prowizorycznie wstawiłem zamiast Zenera 5x 4148 w przeciwnym kierunku.
Re: USBASP
Bez zenera nie pójdzie ale z diodami 1n4148 tez powinno zadziałać więc w sumie sprytnie rozwiązałeś problem
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
czy można użyć wtym projekcie
czy można użyć wtym projekcie kondensatorów 33pf zamiast 22pf
movan
Myślę, że możesz użyć 33pF.
Myślę, że możesz użyć 33pF. To jest ATMega8, z noty katalogowej wynika, że bardziej powinno być 22pF, ale ja wiele razy używałem przy ATMegach8 kondensatorów 33pF i wszystko śmigało.
Powinno pójść, ew. zawsze możesz przelutować na inne, więc spróbuj z 33pF.
Myślę, że możesz użyć 33pF.
Myślę, że możesz użyć 33pF. To jest ATMega8, z noty katalogowej wynika, że bardziej powinno być 22pF, ale ja wiele razy używałem przy ATMegach8 kondensatorów 33pF i wszystko śmigało.
Powinno pójść, ew. zawsze możesz przelutować na inne, więc spróbuj z 33pF.
jak zapisać fusebity
jak zapisać fusebity
movan
po podłączeniu programatora
po podłączeniu programatora nic sie nie dzieje
czy powinna świeciec kturas dioda
movan
Może zadam głupie pytanie ale
Może zadam głupie pytanie ale czy zaprogramowałeś Atmegę (w innym programatorze)?
Jak ustawić Fuse bitów masz opisane:
wyskakuje mi komunikat po
wyskakuje mi komunikat po zaprogramowaniu fuse end loc bits
movan
dioda czerwona sie świeci ale
dioda czerwona sie świeci ale nic sie niedzieje juz niewiem co robić
movan
@movan
Po podłączeniu programatora powinna się świecić, któraś dioda. Zależy jak wmontowałeś kolorami, jeśli tak jak autor, to powinna Ci się świecić czerwona dioda.
Czym programowałeś tą ATMegę? Poprzez port LPT?
Jeśli tak to jest do tego dobry program "ISP Programmer" polskiego autora.
Co to za komunikat "fuse end loc bits" nie przypadkiem "Fuse and lock bits" ? Gzie Ci wyskakuje taki komunikat i w jakim programie?
FuseBity programujesz w ten sposób, że po podłączaniu jakiegoś programatora (np. do LPT) w programie, który używasz wybierasz opcje FuseBits.
Tam masz dwa typy FuseBitów, które nas interesują: High Bits i Low Bits. Lock Bitów nie ruszaj bo sobie możesz na stałe "zepsuć" tą ATMegę8.
Tak ustal kontrolki, żeby HighBits miały wartość 0xc9, a LowBits miały 0x9f. Raczej w każdym programie do programowania powinna być wyświetlana taka wartość.
Jeśli dioda czerwona się świeci to już jest dobrze. Kiedy nic się nie dzieje? Zainstalowałeś sterowniku USBLib? Próbowałeś uruchomić ten program AVRDude?
Fuse and lock bits wyskakuje
Fuse and lock bits wyskakuje mi po zaprogramowaniu atmegi
movan
po ustawieniu fuse bits w
po ustawieniu fuse bits w bascomie co trzeba wcisnąc aby je zapisać
bo juz niemam siły do tego
movan
jescze jedno pytanie czy przy
jescze jedno pytanie czy przy programowaniu do atmegi musi byc podłączony kwarc
zgóry dziękuje za odpowiedzi i cierpliwość
movan
@movan
Dobra, dobra, ale "Fuse and lock bits" to jest błąd? Czy jak? Bo to nie wygląda na komunikat błędu?
Nie używam bascoma, ale z reguły powinien być jakiś przycisk (jeśli to środowisko graficzne) z napisem "program" albo "write" czy coś takiego.
Jakim programatorem to programujesz? Zwykłe kabelki przez LPT czy jakoś inaczej? I zaprogramowałeś już w ogóle kiedyś jakiś procesor czy może to jest pierwszy?
Generalnie to czy kwarc musi być podłączony czy nie, to nie zaleczy od programowania tylko właśnie od ustawienia FuseBitów.
Normalnie robi się to tak :
-Podłączasz programator (ew. kabelki) do kompa i procesora.
-Wgrywasz program do procesora.
-Przez program do programowania ustawiasz FuseBity.
-Odłączasz programator i powinno działać.
Otóż ATMEgaa, taka fabryczna, gdy ją kupisz, chodzi na wewnętrznym oscylatorze 1 MHz. To tego nie wymaga kwarcu. Jeśli w tej chwili podepniesz kwarc pod wejścia XTAL1 i XTAL2 to nic się nie dzieje, bo atmega jest ustawiona na 1MHz. Żeby ją przestawić na kwarc należy ustawić odpowiednie FuseBity, jak masz podane tutaj w opisie.
Dopiero po ich ustawieniu kwarc zostaje "podłączony" prawdziwie do ATMegi. I od tej pory jest niezbędny do jej działania, a nawet do tego, żeby ją zaprogramować czy przestawić FuseBity! Dlatego trzeba uważać jak się ustawia FuseBity, bo można sobie "zepsuć" atmegę.
Czyli kwarc podłączasz do procesora i po ustawieniu fusebitów on dopiero działa i wtedy jest niezbędny do czegokolwiek.
Najlepiej powiedz mi, po kolei, każdą czynność jaką wykonujesz to może znajdziemy błąd. Opisz dokładnie, co robisz i jakim sprzętem i oprogramowaniem.
I nie poddawaj się. Gdy raz już coś zrozumiesz to potem to już dla Ciebie łatwizna ;)
Witam teraz po podłączeniu
Witam teraz po podłączeniu programatora wyskakuje mi komunikat nie rozpoznaje urządzenia usb
movan
Witam ponownie jak powinny
Witam ponownie jak powinny być ustawione fusebity w isp progu
movan
@movan
FuseBity w programie ISP Programmer? Tak jak masz w opisie na tej stronie.
Po prawej stronie, zarówno przy High Bits jak i przy Low Bits powinna być liczba w postać HEX (np. 0xFF). Tak ustaw FuseBity jak tutaj na stronie, a liczba dla HighBits powinna być 0xc9 , a dla LowBits 0x9f.
Jeśli nie rozpoznano urządzenia to widocznie nie działa, albo go nie zainstalowałeś. Po ściągnięciu paczki z programem do procesora, przekopiowałeś plik z biblioteką DLL (LibUsb.dll) i sterownik tego programatora? Jest to tam wszystko.
Re: USBASP
Jeśli programator sam nie poprosi o sterowniki to nic nie wolno instalować bo to prosta droga do tego aby coś skopać.... pisałem już wielokrotnie. Jeśli wyskakuje komunikat że nie rozpoznano urządzenia to jest wina błędu sprzętowego. Nie rozpoznano urządzenia jako urządzenia USB. Więc albo zenerki są źle wlutowane, albo wartość rezystorów nie ta. Może być zły kwarc, źle zaprogramowany procek albo źle ustawione fusebity.
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Witam, czy można
Witam, czy można zaprogramować ten programator innym sposobem niz przez prosty programator na LPT? Ponieważ nie posiadam LPT w moim komputerze.