logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Programator USBasp dla procesorów z rodziny AVR

Shanleaf 15 Kwi 2007 15:05 171093 371
  • Programator USBasp dla procesorów z rodziny AVR
    Przedstawiam moją drugą poważniejszą konstrukcję. Jest nią programator mikrokontrolerów AVR, firmy Atmel. Jest to, według mnie, dosyć ciekawa konstrukcja, ponieważ, przy małej ilości elementów, oraz prostej obsłudze, oferuje wygodę magistrali USB (hot plug, wydajność prądowa do 500mA, oraz zgodność, z prawie każdym komputerem od '99 roku : ] ), oraz obsługę dosyć szerokiej gamy mikrokontrolerów AVR.

    1. Schemat i płytka drukowana:

    Schemat który wykorzystałem pochodzi ze strony: http://www.fischl.de/usbasp/

    Pobrałem stamtąd również projekt płytki, który potem przerobiłem wg. własnych potrzeb. Modyfikacje polegały na:
    - dostosowaniu rozmiarów płytki, do posiadanej przeze mnie obudowy
    - dodaniu dwóch diod zenera (3,6V), które służą ustaleniu odpowiedniego poziomu napięć sygnałów USB.

    PCB, standardowo wydrukowane drukarką laserową, na papierze kredowym, następnie wytrawione w B327.

    2. Elementy:

    Z elementów wyszczególnionych w schemacie, najtrudniej było dostać, oraz zaprogramować Atmegę 8, gdyz do tej pory nie posiadałem żadnego programatora uC. Zostałem więc zmuszony do wykonania programatora BSD (bezpośrednie połączenie pinów LPT, z nogami scalaka), który posłużył mi, nie tylko do zaprogramowania ósemki, ale również do nauki obsługi AVRDUDE : ]. Problemem na początku, wydawało się również zaciśnięcie złączy na taśmie sygnałowej, ale po znalezieniu odpowiedniego młotka, wszystko poszło gładko : ).

    3. Uruchomienie:

    Komputer, po podłączeniu układu, momentalnie poprosił o sterowniki, a następnie (po podaniu ścieżki), bez problemu zainstalował USBasp.

    PS: Stosowałem wartości elementów, z oryginalnego schematu, wartości, w programie eagle sa trochę inne, ale też powinny działać.

    Oferuję pomoc, wszystkim, którzy będą chcieli zbudować ten wspaniały programator : ].

    Na życzenie mogę również zamieścić pliki programu Eagle.

    Pora na zdjęcia : ]

    Schemat:
    Programator USBasp dla procesorów z rodziny AVR

    Obraz ścieżek:
    Programator USBasp dla procesorów z rodziny AVR

    Płytka pod koniec trawienia:
    Programator USBasp dla procesorów z rodziny AVR

    Po wyjęciu z roztworu:
    Programator USBasp dla procesorów z rodziny AVR

    Po wyczyszczeniu z tonera:
    Programator USBasp dla procesorów z rodziny AVR

    Po zmontowaniu (układ podłączonu):
    Programator USBasp dla procesorów z rodziny AVR

    Widok ścieżek (jeden kondensator przylutowany od spodu, gdyż nie zauważyłem jednej dziurki przy wierceniu : P):
    Programator USBasp dla procesorów z rodziny AVR

    W obudowie:
    Programator USBasp dla procesorów z rodziny AVR

    Programator USBasp dla procesorów z rodziny AVR

    Programator USBasp dla procesorów z rodziny AVR

    Fajne? Ranking DIY
    O autorze
    Shanleaf
    Poziom 17  
    Offline 
    Shanleaf napisał 298 postów o ocenie 6, pomógł 20 razy. Mieszka w mieście Łódź. Jest z nami od 2006 roku.
  • #2 3789063
    ciapciok
    Poziom 20  
    Posty: 503
    Pomógł: 3
    Ocena: 109
    Ja też zbudowałem ten programator, tylko jeszcze nie zaprogramowałem atmegi. Czy w tym pliku HEX na stronie autora, są już zawarte informacje o bitach, czy trzeba je samemu ustawić ?

    Pozdrawiam
  • #3 3789082
    Shanleaf
    Poziom 17  
    Posty: 298
    Pomógł: 20
    Ocena: 6
    Fuse-y (chyba o to chodzi) ustawia się według pliku makefile:

    # TARGET=atmega8 HFUSE=0xc9 LFUSE=0xef
    # TARGET=atmega48 HFUSE=0xdd LFUSE=0xff
  • #4 3789208
    ghost666
    Tłumacz Redaktor
    Posty: 11961
    Pomógł: 157
    Ocena: 10267
    Ciekawie sie prezentuje... myśle że powinnienem sobie coś takiego sprawić :).

    Z jakim programem to współpracuje?
  • #5 3789262
    ciapciok
    Poziom 20  
    Posty: 503
    Pomógł: 3
    Ocena: 109
    Cytat:
    # TARGET=atmega8 HFUSE=0xc9 LFUSE=0xef
    # TARGET=atmega48 HFUSE=0xdd LFUSE=0xff


    Możesz podać ich nazwy ? Chcę programować innym programem, w którym zaznacza się odpowiednie pola, a nie wpisuje się wartości w HEXach.

    Pozdrawiam
  • #6 3789271
    janek1815
    Poziom 38  
    Posty: 4513
    Pomógł: 372
    Ocena: 1061
    wspolpracuje to z Bascomem?
  • #7 3789305
    Shanleaf
    Poziom 17  
    Posty: 298
    Pomógł: 20
    Ocena: 6
    programator świetnie współpracuje z programem AVRDUDE, (występuje jako osobny program, lub część pakietu WINAVR), który obsługiwany jest z konsoli, istnieje co prawda nakładka graficzna, ale wg. mnie lepiej jednak posłużyć się okienkiem dosowym. Co do bascoma: można wygenerować plik *.hex a potem zaprogramować nim mikrokontroler przez AVRDUDE. Fusy w heksach, możesz za pomocą np. windowsowego kalkulatora zamienić na kod dwójkowy (zera i jedynki) a następnie porównać, z notą katalogową.
  • #8 3789470
    sylwunia35
    Poziom 18  
    Posty: 331
    Pomógł: 16
    Ocena: 146
    Witam
    Mam pytanie o zworke J3 co ona tam robi i co się ustawia za pomocą tej zworki? Daj wsad do procka żebym nie musiał bardzo szukać i wybierać tam są ze 4 pliki. Popracuj nad lutowaniem (mniej cyny a więcej topnika).
  • #9 3789579
    Shanleaf
    Poziom 17  
    Posty: 298
    Pomógł: 20
    Ocena: 6
    Zworka J3 umożliwia programowanie układów, taktowanych niskimi częstotliwościami. poniżej 1,5MHz chyba
  • #11 3789749
    lechoo
    Poziom 39  
    Posty: 5161
    Pomógł: 377
    Ocena: 546
    @Shanleaf
    Uwaga praktyczna - następnym razem zamieszczaj zdjęcia w mniejszej rozdzielczości. Te obecne są ponadto mocno zaszumione (użyłeś zbyt dużej czułości ISO w aparacie), po przeskalowaniu prezentowałyby się dużo lepiej.
  • #12 3789767
    c++
    Poziom 22  
    Posty: 698
    Pomógł: 29
    Ocena: 9
    Czy można prosi o wzór ścieżek gotowych do termo transferu?? wiem ze idę na łatwiznę.
    Obudowy użyłeś uni.??
    Czym robiłeś otwory pod gniazda?
  • #13 3789827
    kaytec
    Poziom 20  
    Posty: 470
    Pomógł: 6
    Ocena: 311
    Witam. Układ świetnie wykonany 5/6 bo sam go nie wymyśliłeś :)
    Ponawiam pytanie snnaap'a czy można tym zaprogramować starsze układy serii '51 np.at89c2051 ? Pozdrawiam
  • #14 3789841
    Shanleaf
    Poziom 17  
    Posty: 298
    Pomógł: 20
    Ocena: 6
    Co do '51 to nie mam pojęcia :( Otwory wywiercone, a następnie wypiłowane pilnikami. Obudowa to jakaś uniwersalna z elektronika. Zamieszczam schemat, oraz wzór ścieżek.
    Załączniki:
    • usbasp.rar (58.45 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #15 3789952
    janek1815
    Poziom 38  
    Posty: 4513
    Pomógł: 372
    Ocena: 1061
    kaytec napisał:
    Ponawiam pytanie snnaap'a czy można tym zaprogramować starsze układy serii '51 np.at89c2051 ? Pozdrawiam


    1. 89c2051 nie są to starsze układy tylko maja odmienna architekturę.
    2. to jest programator do programowania w systemie - ISP
    3. 89c2051 niestety nie można zaprogramować ISP tylko w trybie równoległym a wiec ten programator się do tego nie nadaje.
  • #17 3790093
    Fantomen
    Poziom 20  
    Posty: 482
    Pomógł: 3
    Ocena: 19
    Z tego co pisza na stronie:
    Software
    AVRDUDE supports USBasp since version 5.2! Get AVRDUDE.

    Czyli AVRDUDE i to powyzej wersji 5.2!
  • #18 3790251
    Mateusz120986
    Poziom 22  
    Posty: 647
    Pomógł: 5
    Ocena: 38
    ale przykladowo AT89s52 ma ISP wiec mozna bedzie go zaprogramowac tym programatorem czy nie ?

    Shanleaf czy mogl bys zamiescic na forum skompilowanego avrdude 5.3 czy tez jakiegos innego z ktorego korzystasz bo mam problem z kompilacją
  • #19 3790280
    krzys-iek
    Poziom 20  
    Posty: 668
    Pomógł: 9
    Ocena: 83
    fatalnie wiercisz, termostransferu nie masz do konca w malym palcu bo sciezki nie sa o prostych krawedziach ;)

    wiertlo tepe i chyba wiercisz gramofonem, nie centryczne otwory, przeciez eagle +drill aid ULP zalatwia sprawe, wiertlo ostre samo wskakuje w dziurke i wiercisz prawie jak CNC :) oczywiscie statyw wymagany
  • #20 3790332
    Shanleaf
    Poziom 17  
    Posty: 298
    Pomógł: 20
    Ocena: 6
    Skompilowany AVRDUDE wchodzi w skład pakietu WinAVR, ale mogę również tutaj go zamieścić, razem z interfejsem graficznym. Z tym wierceniem rzeczywiście nie do końca ciekawie. Posiadam jedynie wiertarko-wkrętarkę akumulatorową, a na statyw za bardzo miejsca nie mam. Proszę również, o jakieś porady n/t termotransferu.

    Plik avrdude.rar zawiera skompilowany program, wraz z plikiem konfiguracyjnym, oraz sterownik dla W XP, pozwalający na pełne wykorzystanie portu LPT.

    Drugi plik, jest to graficzna nakładka na AVRDUDE, wymagająca zainstalowanego AVRDUDE oraz JAVA

    http://avr8-burn-o-mat.aaabbb.de/AVR8_Burn-O-Mat.zip

    Moderowany przez androot:

    Usunąłem załącznik (za 3pkt), bo można go ściągnąć poprzez powyższy link

    Załączniki:
    • avrdude.rar (77.18 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #21 3790570
    Pth
    Poziom 26  
    Posty: 1080
    Pomógł: 9
    Ocena: 39
    Witam. Projekt podoba mi się bardzo! Widząc, że mam akurat w domu potrzebne elementy od razu zabrałem się do lutowania. wszystko złożyłem tylko nie wiem jak poradzić sobie z tym avrdude.
    Mam kabel LPT-ISP i Bascoma -> czy z tego da się zaprogramować odpowiednio fusebity i wgrać hex'a?!
  • #22 3790619
    Shanleaf
    Poziom 17  
    Posty: 298
    Pomógł: 20
    Ocena: 6
    Zacznij od włożenia zworki na JP2, upewnij się również, że odpowiednie piny Twojego programatora, są połączone, z odpowiednimi pinami układu.
    Musisz uruchomić konsolę (start->uruchom...->command.com), przechodzisz do katalogu z plikami AVRDUDE, i w konsoli wpisujesz najpierw install_giveio.bat (co zainstaluje Ci sterownik do portu LPT. następnie, aby zaprogramować układ przy użyciu AVRDUDE, wpisujesz
    avrdude -p m8 (lub m48, zależnie od procesora, który posiadasz) -c bsd (tą komendą definiujesz użyty programator, wnioskując z Twojej wypowiedzi, wydaje mi się, że masz właśnie BSD) -P lpt1 -U (operacja na pamięci) flash:w:plik.hex (wgrywasz plik dostarczony, przez autora, zależnie od posiadanego procesora).

    Aby zaprogramować fusy, wpisz
    avrdude -p m8 -c bsd -P lpt1 -t
    wchodzisz w ten sposób do terminala programu. Następnie piszesz
    w hfuse 0 0xff
    (wartość hex, podana trochę wyżej w tym wątku, również zależna od typu procesora :])

    Podsumowując:

     avrdude -p m8 -c bsd -P lpt1 -U flash:w:plik.hex
    avrdude -p m8 -c bsd -P lpt1 -t
    w hfuse 0 0xff
    w lfuse 0 0xff


    Tylko broń Boże nie wpisuj tych "ff" do fusów, to tylko przykładowe wartości.[/code]

    Opis komend:
    -p wybór procesora
    -P wybór portu
    -t wejście do terminala
    -U operacja na pamięci (zapis, odczyt, weryfikacja)
    -F zignorowanie błędnej sygnatury procesora
    -c wybór programatora
    -e wyczyszczenie procesora
    -n zakaz zapisu, czegokolwiek do pamięci uC
    -V bez weryfikacji
  • #23 3790735
    Pth
    Poziom 26  
    Posty: 1080
    Pomógł: 9
    Ocena: 39
    procesor który mam to : atmega8
    kabel to : sample electronics programmer


    Czy z kwarcdem 4MHz tez bedzie wszytko dobzre działać czy musi być koniecznie 12MHz? teraz dopiero zauważyłem, że atmege którą mam ma napis "ATMEGA8L-8PI" czyli jak 8PI to znaczy że max freq. to 8 MHz wiec niebardzo moge zastosować kwarc 12 MHZ (choć mam takie w domu)...
  • #24 3790784
    Shanleaf
    Poziom 17  
    Posty: 298
    Pomógł: 20
    Ocena: 6
    Miałem ten sam problem, ale po uzyskaniu porady na forum, kupiłem jednak Atmege bez "L" i kwarc 12MHz. Co do Twojego kabla, to wydaje mi się, że możesz spróbować zamiast BSD, wpisać bascom, gdyż to może być właśnie ten programator. A jeśli nie, to będziesz musiał zaprogramować uC, z Bascoma (nie mam doświadczenia z tym programem)
  • #25 3790932
    Pth
    Poziom 26  
    Posty: 1080
    Pomógł: 9
    Ocena: 39
    No niby zaprogramowałem to avrdude'm, ustawiłem fusebity (też avr-dude'm) ale po podłączeniu usb pisze, że "urządzenie usb ma awarię" - czyli standardowa komenda kiedy nie rozpoznaje jakiegoś urządzenia USB . . .

    A czy te dwie zenerki w obwodzie D+ i D- są potrzebne?
  • #26 3791116
    Shanleaf
    Poziom 17  
    Posty: 298
    Pomógł: 20
    Ocena: 6
    Tak, ponieważ USB, chociaż dostarcza zasilanie 5V, to ma inne poziomy sygnałów. 0V-0,3V dla stanu niskiego i 2,8V-3,6V dla wysokiego (dane w Wikipedii)
  • #27 3791388
    lechoo
    Poziom 39  
    Posty: 5161
    Pomógł: 377
    Ocena: 546
    Te diody Zenera (5V6) nie ograniczają poziomów logicznych, są użyte jedynie profilaktycznie. Teoretycznie zapobiegają mikrokontroler przed przepięciami na liniach danych w chwili podłączania programatora do portu USB komputera. Bez nich programator oczywiście też działa poprawnie.
  • #28 3791812
    Pth
    Poziom 26  
    Posty: 1080
    Pomógł: 9
    Ocena: 39
    Udało mi się znaleźć prosty graficzny interface do avrdude. W pliku załączyłem Program AVR-DUDE razem z trybem graficznym. Myślę, ze przyda się wszystkim początkującym, a przede wszystkim tym którzy chcą zaprogramować programator AVRasp!
    Załączniki:
    • avr-dude + graphic interface.exe (697.45 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #29 3792107
    Shanleaf
    Poziom 17  
    Posty: 298
    Pomógł: 20
    Ocena: 6
    Lechoo, to nie są diody 5V6, tylko 3V6, i właśnie przez brak tych diod, ten programator czasem działa, a czasem nie. Kolega Mad Bekon miał właśnie taki problem.
  • #30 3792163
    marenc
    Poziom 24  
    Posty: 881
    Pomógł: 37
    Ocena: 5
    Wścipski jestem, ale obudowa zamknięta, a LED'y w środku ... jaki to ma sens? :P

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy budowy i użytkowania programatora USBasp do mikrokontrolerów z rodziny AVR firmy Atmel, opartego na projekcie ze strony www.fischl.de/usbasp. Programator charakteryzuje się prostą konstrukcją, zasilaniem z portu USB (do 500mA) oraz obsługą szerokiej gamy mikrokontrolerów AVR poprzez interfejs ISP. Wprowadzono modyfikacje płytki PCB, m.in. dostosowanie rozmiarów i dodanie diod Zenera 3,6V na liniach USB do stabilizacji poziomów sygnałów. Dyskutowano o konieczności ustawiania fuse bitów (fuse-y) zgodnie z plikiem makefile oraz oprogramowaniu do programowania, głównie AVRDUDE (wersja od 5.2 wzwyż), które działa z USBasp i jest dostępne także z nakładkami graficznymi (np. AVR8 Burn-O-Mat, avrdude-gui). Poruszono kwestie kompatybilności z różnymi mikrokontrolerami, podkreślając, że programator obsługuje AVR, ale nie układy z rodziny 8051 (np. AT89C2051) ze względu na inną architekturę i brak obsługi trybu ISP. Omówiono problemy z wykrywaniem urządzenia USB, które często wynikają z nieprawidłowego taktowania mikrokontrolera (np. konieczność stosowania kwarcu 12 MHz dla ATmega8 bez oznaczenia "L"), błędów w lutowaniu, braku lub niewłaściwego podłączenia diod Zenera, a także konieczności użycia zworki JP3 (SLOW SCK) przy programowaniu układów z niską częstotliwością taktowania. Wskazano, że programator zasilany jest z portu USB, ale programowany układ może wymagać własnego zasilania lub zasilania z programatora po włączeniu zworki J1. Użytkownicy dzielili się doświadczeniami dotyczącymi problemów z instalacją sterowników (libusb0.dll), konfiguracją AVRDUDE, oraz sposobem podłączania programowanego mikrokontrolera (standardowe połączenia MOSI, MISO, SCK, RESET). Wskazano, że programowanie wymaga obecności kwarcu na układzie docelowym. Dyskutowano także o alternatywnych programach do programowania, takich jak Ponyprog, Bascom-AVR (współpraca przez AVRDUDE), oraz o problemach z odczytem i zapisem pamięci flash przy dużych plikach (powyżej 64KB) w ATmega128. Wątek zawierał także porady dotyczące wykonania PCB metodą termotransferu, wiercenia otworów, oraz modyfikacji projektu na wersję SMD. Podsumowując, USBasp jest tanią i efektywną alternatywą dla programatorów LPT, jednak wymaga poprawnej konfiguracji fuse bitów, odpowiedniego taktowania mikrokontrolera, właściwego lutowania i instalacji sterowników, aby działać bezproblemowo.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA