Elektroda.pl
Elektroda.pl
X
Serwerowe OpowieściSerwerowe Opowieści
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[ATmega8][USBasp] Programator USBasp widoczność

01 Gru 2011 01:42 7216 12
  • Poziom 9  
    Witam,

    Wczoraj złożyłem programator do uC AVR zgodnie ze schematem i opisem ze strony:
    http://diy-elektronika.pl/wp-content/uploads/2009/08/Schemat_USBasp_diy-elektronika1.png
    http://diy-elektronika.pl/202-usbasp-programator-avr-na-usb
    Doskonale zdawałem sobie sprawę że złożenie będzie łatwiejszą częścią całego przedsięwzięcia i poradzenie sobie z dalszymi problemami pochłonie kilka wieczorów.

    Próbowałem wielu porad zawartych w różnych tematach na tej i innych stronach(włącznie z wymianą diod Zenera z 3,6V na 3,3V), jednak problemy nadal dają o sobie znać.

    Na początek małe wyjaśnienie - jeśli chodzi o zgodność tego co mam na płytce z tym co widnieje na schemacie, jestem prawie pewien że jest to złożone poprawnie, więc szukam błędów po stronie raczej software'owej. Wszystko po zlutowaniu sprawdzane było miernikiem, na kontroler programowany podawane jest napięcie, na wejście resetujące również.

    Mój system operacyjny to Windows 7 Professional 32bit. Testowałem również na Windows XP(oba komputery to laptopy).

    ATmega8 obsługująca port USB została zaprogramowana wersją wsadu 2009-02-28, odpowiednie fusebity zostały ustawione według instrukcji.

    Przejdźmy do sedna. Po Podłączeniu do komputera urządzenie od razu jest poprawnie wykrywane przez system jako USBasp. Wszelkie sterowniki instalują się również poprawnie(zarówno 'normalnie' jak i przez LibUSB). Jako dowód dodaję screena z ID urządzenia z menadżera urządzeń. Jest no całkowicie zgodne dla tego typu programatora:
    [ATmega8][USBasp] Programator USBasp widoczność

    Zajmijmy się teraz AVRDUDE(używam nakładki graficznej AVR Burn-O-Mat). Działa tutaj bardzo różnie. Gdy próbuje wrzucić jakiś program .hex do pamięci flash urządzenia używając sterowników zainstalowanych za pomocą LibUSB otrzymuję mniej więcej następujący błąd(próbowałem z opcjami -D, -E i -F i bez nich):
    Code:
    C:\Users\Adrian\Desktop\Programator_USBasp_-_sterowniki_programy_www.diy-elektronika.pl\Programator USBasp - sterowniki, programy\Avrdude 5.5\avrdude.exe -C C:\Users\Adrian\Desktop\Programator_USBasp_-_sterowniki_programy_www.diy-elektronika.pl\Programator USBasp - sterowniki, programy\Avrdude 5.5\avrdude.conf -p m8 -P usb -c usbasp  -U flash:w:C:\Users\Adrian\Desktop\usbasp.2011-05-28\usbasp.2011-05-28\bin\firmware\usbasp.atmega8.2011-05-28.hex:a 
    
    avrdude.exe: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc

    Podobnie jest z najnowszą dostępną wersją sterownika.

    Jednak w przypadku zainstalowania starszych sterowników wygląda to inaczej. Zdjae się że programator programator pracuje(po podaniu wsadu i kliknięciu Write dioda sygnalizująca proces programowania świeci się), po około minucie takiej 'pracy otrzymuje komunikat):
    Code:
    C:\Users\Adrian\Desktop\Programator_USBasp_-_sterowniki_programy_www.diy-elektronika.pl\Programator USBasp - sterowniki, programy\Avrdude 5.5\avrdude.exe -C C:\Users\Adrian\Desktop\Programator_USBasp_-_sterowniki_programy_www.diy-elektronika.pl\Programator USBasp - sterowniki, programy\Avrdude 5.5\avrdude.conf -p m8 -P usb -c usbasp -F -U flash:w:C:\Users\Adrian\Desktop\usbasp.2011-05-28\usbasp.2011-05-28\bin\firmware\usbasp.atmega8.2011-05-28.hex:a 
    

    avrdude.exe: error: programm enable: target doesn't answer. 1
    avrdude.exe: initialization failed, rc=-1
    avrdude.exe: AVR device initialized and ready to accept instructions

    Reading | ################################################## | 100% 0.02s

    avrdude.exe: Device signature = 0x000000
    avrdude.exe: Yikes!  Invalid device signature.
    avrdude.exe: Expected signature for ATMEGA8 is 1E 93 07
    avrdude.exe: NOTE: FLASH memory has been specified, an erase cycle will be performed
                 To disable this feature, specify the -D option.
    avrdude.exe: erasing chip
    avrdude.exe: error: programm enable: target doesn't answer. 1
    avrdude.exe: reading input file "C:\Users\Adrian\Desktop\usbasp.2011-05-28\usbasp.2011-05-28\bin\firmware\usbasp.atmega8.2011-05-28.hex"
    avrdude.exe: input file C:\Users\Adrian\Desktop\usbasp.2011-05-28\usbasp.2011-05-28\bin\firmware\usbasp.atmega8.2011-05-28.hex auto detected as Intel Hex
    avrdude.exe: writing flash (4700 bytes):

    Writing | ################################################## | 100% 35.72s

    avrdude.exe: 4700 bytes of flash written
    avrdude.exe: verifying flash memory against C:\Users\Adrian\Desktop\usbasp.2011-05-28\usbasp.2011-05-28\bin\firmware\usbasp.atmega8.2011-05-28.hex:
    avrdude.exe: load data flash data from input file C:\Users\Adrian\Desktop\usbasp.2011-05-28\usbasp.2011-05-28\bin\firmware\usbasp.atmega8.2011-05-28.hex:
    avrdude.exe: input file C:\Users\Adrian\Desktop\usbasp.2011-05-28\usbasp.2011-05-28\bin\firmware\usbasp.atmega8.2011-05-28.hex auto detected as Intel Hex
    avrdude.exe: input file C:\Users\Adrian\Desktop\usbasp.2011-05-28\usbasp.2011-05-28\bin\firmware\usbasp.atmega8.2011-05-28.hex contains 4700 bytes
    avrdude.exe: reading on-chip flash data:

    Reading | ################################################## | 100% 26.22s

    avrdude.exe: verifying ...
    avrdude.exe: verification error, first mismatch at byte 0x0000
                 0x3b != 0x00
    avrdude.exe: verification error; content mismatch

    avrdude.exe done.  Thank you.


    i okenko "Error reading flash".
    W tym przypadku działa również odczytywanie i edycja bitów kontrolnych(pokazuje się okienko że operacja zakończona pomyślnie), jednak w rzeczywistości nic się nie dzieje.
    Co ciekawe, tak samo programator się zachowuje po odłączeniu układu który chcę programować.

    Tak jest w przypadku włączenia opcji -F. Po usunięciu tego argumentu otrzymuje tylko po chwili pracy:
    Code:
    C:\Users\Adrian\Desktop\Programator_USBasp_-_sterowniki_programy_www.diy-elektronika.pl\Programator USBasp - sterowniki, programy\Avrdude 5.5\avrdude.exe -C C:\Users\Adrian\Desktop\Programator_USBasp_-_sterowniki_programy_www.diy-elektronika.pl\Programator USBasp - sterowniki, programy\Avrdude 5.5\avrdude.conf -p m8 -P usb -c usbasp  -U flash:w:C:\Users\Adrian\Desktop\usbasp.2011-05-28\usbasp.2011-05-28\bin\firmware\usbasp.atmega8.2011-05-28.hex:a 
    

    avrdude.exe: error: programm enable: target doesn't answer. 1
    avrdude.exe: initialization failed, rc=-1
                 Double check connections and try again, or use -F to override
                 this check.


    avrdude.exe done.  Thank you.

    Natomiast gdy włączę trzecią zworkę SLOW_CLK otrzymuję:
    Code:
    C:\Users\Adrian\Desktop\Programator_USBasp_-_sterowniki_programy_www.diy-elektronika.pl\Programator USBasp - sterowniki, programy\Avrdude 5.5\avrdude.exe -C C:\Users\Adrian\Desktop\Programator_USBasp_-_sterowniki_programy_www.diy-elektronika.pl\Programator USBasp - sterowniki, programy\Avrdude 5.5\avrdude.conf -p m8 -P usb -c usbasp -F -U flash:w:C:\Users\Adrian\Desktop\usbasp.2011-05-28\usbasp.2011-05-28\bin\firmware\usbasp.atmega8.2011-05-28.hex:a 
    

    avrdude.exe: error: programm enable: target doesn't answer. 0
    avrdude.exe: initialization failed, rc=-1
    avrdude.exe: AVR device initialized and ready to accept instructions

    Reading | avrdude.exe: error: wrong responds size
    avrdude.exe: error: wrong responds size
    ################avrdude.exe: error: wrong responds size
    ################################## | 100% 0.01s

    avrdude.exe: Device signature = 0x010000
    avrdude.exe: Expected signature for ATMEGA8 is 1E 93 07
    avrdude.exe: NOTE: FLASH memory has been specified, an erase cycle will be performed
                 To disable this feature, specify the -D option.
    avrdude.exe: error: wrong responds size
    avrdude.exe: error: wrong responds size
    avrdude.exe: error: wrong responds size
    avrdude.exe: error: wrong responds size
    avrdude.exe: current erase-rewrite cycle count is 16843009 (if being tracked)
    avrdude.exe: erasing chip
    avrdude.exe: error: wrong responds size
    avrdude.exe: error: programm enable: target doesn't answer. 0
    avrdude.exe: reading input file "C:\Users\Adrian\Desktop\usbasp.2011-05-28\usbasp.2011-05-28\bin\firmware\usbasp.atmega8.2011-05-28.hex"
    avrdude.exe: input file C:\Users\Adrian\Desktop\usbasp.2011-05-28\usbasp.2011-05-28\bin\firmware\usbasp.atmega8.2011-05-28.hex auto detected as Intel Hex
    avrdude.exe: writing flash (4700 bytes):

    Writing | avrdude.exe: error: wrong count at writing 0


    W mkAVR Calculator dostaję podobny komunikat:
    Code:
    found 4 busses
    

    avrdude.exe: error: programm enable: target doesn't answer. 1
    avrdude.exe: AVR device initialized and ready to accept instructions

    Reading | ################################################## | 100% 0.02s

    avrdude.exe: Device signature = 0x000000
    avrdude.exe: Yikes!  Invalid device signature.
    avrdude.exe: Expected signature for ATMEGA8 is 1E 93 07
    avrdude.exe: reading signature memory:

    Reading | ################################################## | 100% 0.02s

    avrdude.exe: writing output file "C:\Users\Adrian\Documents\mkAVRCalculator\sig_tmp.hex"

    avrdude.exe: safemode: Fuses OK

    avrdude.exe done.  Thank you.



    Dodatkowo często zdarza się że po nieudanej próbie "zaprogramowania" programator tak jakby się zawiesza i nie można z nim wykonać żadnej operacji, należy wyciągnąć i włożyć ponownie wtyczkę aby próbować z innymi ustawieniami.

    Jako ciekawostkę podam że próbowałem również z nowszą wersją wsadu do ATmegi odpowiedzialnej za obsługę programatora, jednak wtedy system rozpoznawał mój USBasp jako nieznane urządzenie. Niestety układ w którym był nowszy wsad uległ uszkodzeniu podczas wyjmowania z podstawki i nie mam możliwości przetestować go ponownie.

    Proszę o rady jeśli ktoś z was przeżywał już przygodę z USBasp.
  • Serwerowe OpowieściSerwerowe Opowieści
  • Poziom 8  
    Wrzuć avrdude do głównego katalogu (np.na dysku D) i sprawdź z linii komend.

    Nie wykrywa Ci nawet sygnatury procesora a bez tego nie ma co mówić o programowaniu.

    cmd
    Code:

    d: 'przechodzisz na dysk D
    cd avrdude 'przechodzisz do katalogu avrdude na dysku D:\avrdude

    D:\avrdude> avrdude -p m8 -c usbasp

    I tu pojawi ci się sygnatura inna niż 0x00000 jeśli wszystko jest ok. Oczywiście na początku prubuj na założonej zworce SLOW.


    Atmega w programatorze nie może być wersją L ! Musi być taktowana kwarcem 12MHz. Przy próbie odczytu sygnatury powinna na chwile zaświecić się czerwona dioda.

    U mnie działa JESZCZE STARSZY wsad bo wersja: usbasp.atmega8.2006-12-29.hex

    Podobno z nowszymi są problemy. I nie zapomnij że wszystkie masy muszą być ze sobą połączone.
  • Poziom 42  
    A ja polecę ci do przetestowania jeszcze przede wszystkim program: MkAvrCalculator oraz zainstalowanie sterowników wg tego sposobu:

    http://mirekk36.blogspot.com/2011/05/wszystko-o-usbasp.html

    (TYLKO czy zainstalowałeś sobie AVRDUDE z programu MkAvrCalculator ? - zakładka "Ustawienia" a tam ramka "avrdude" i klawisz "instaluj" - to bardzo ważne. Nie będziesz wtedy musiał korzystać ze zworki SLOW_SCK.

    Jeśli po tych zabiegach nie ruszy to znaczy, że na pewno masz albo:

    1. problem sprzętowy (połączenia) w programatorze
    2. problem ze złym wsadem do programatora

    dlatego proponuję ci wgrać wsad do procka w programatorze tylko i wyłącznie ze strony autora - czyli

    http://www.fischl.de/usbasp/

    i tam pobrać wersję tą koniecznie: usbasp.2009-02-28.tar.gz (260 kB)

    a nie najnowszą.

    Jeśli i to nie pomoże to na bank pozostaje ci problem już tylko sprzętowy i koniec - nie ma nawet o czym innym myśleć ;)

    a ponieważ to
  • Serwerowe OpowieściSerwerowe Opowieści
  • Poziom 9  
    Dziękuję za udzielone rady.

    Jeśli chodzi o sam adapter to jest to zrobione trochę prowizorycznie - po prostu odpowiednie kabelki z taśmy od złącza kanda są przylutowane do podstawki - robiłem to późnym wieczorem i już nie chciało mi się robić nic lepszego.

    Czy wszystkie masy muszą być podłączone do nóżki nr 8 programowanego układu czy wystarczy jedna? Bo mam przylutowaną tylko jedną...

    Cytat:
    Atmega w programatorze nie może być wersją L ! Musi być taktowana kwarcem 12MHz.

    Jeśli mowa o ATmedze, która odpowiada za komunikacje z komputerem, to tak jak na schemacie jest podłączony kwarc 12MHz. W adapterze nie ma go, bo chyba nie jest potrzeby(?)

    Cytat:
    Przy próbie odczytu sygnatury powinna na chwile zaświecić się czerwona dioda.

    Mniej więcej tak jest, ale na razie nie ma to dużego znaczenia.

    Cytat:
    A ja polecę ci do przetestowania jeszcze przede wszystkim program: MkAvrCalculator oraz zainstalowanie sterowników wg tego sposobu:

    http://mirekk36.blogspot.com/2011/05/wszystko-o-usbasp.html

    (TYLKO czy zainstalowałeś sobie AVRDUDE z programu MkAvrCalculator ? - zakładka "Ustawienia" a tam ramka "avrdude" i klawisz "instaluj" - to bardzo ważne. Nie będziesz wtedy musiał korzystać ze zworki SLOW_SCK.

    Instalowałem sterowniki również według Twojego poradnika, jednak w tym wypadku tak jak pisałem - AVRDUDE nie wykrywa programatora. W MkAvrCalculator instalowałem AVRDUDE dokładnie tak jak napisałeś.
    Wsad do ATmegi mam dokładnie ten - ze strony fischl.de wersja 2009.02.28

    Jak wrócę do domu to połączę wszystkie masy do adaptera oraz sprawdzę rady @zabardzo. Jeśli to nie zadziała zacznę się chyba skłaniać do szukania problemu na płytce(czyt. lutowanie wszystkiego od nowa na wytrawionej według wzoru płytce - na razie siedzi na uniwersalnej).[/quote]
  • Poziom 42  
    Ależ spokojnie ATmega w programatorze może być wersją L - w ogóle się tym nie przejmuj.

    po drugie - daj sobie spokój z tymi jakimiś adapterami bo cię to tylko w błąd wprowadza. Kto dzisiaj przy możliwości programowania procków bezpośrednio w układzie bawi się w adaptery. Toż to uwstecznienie

    Na złączu KANDA wystarczy GND że będzie podłączone tylko do nogi nr 10 i też będzie dobrze

    Zamiast więc bawić się adapterem podłącz bezpośrednio linie ISP do procka oraz zasilanie oczywiście - najlepiej to z programatora i wtedy sprawdzaj


    a jeśli masz komunikat:

    avrdude.exe: error: programm enable: target doesn't answer. 1

    to by oznaczało, że USBASP jest już poprawnie widoczny w systemie a jedyne co źle robisz to tylko i WYŁĄCZNIE źle podłączasz linie ISP od programatora do procka.

    Dlatego ostatnia porada i jak się do niej zastosujesz to ruszy ci na 100%

    wywal koci adapter w kąt i weź pojedyncze kabelki - i podłącz linię MOSI do nogi MOSI programowanego procka, tak samo linię MISO do nogi MISO procka, potem linię SCK do nogi SCK procka, potem linię RESET do nogi RESET procka. A na końcu podłącz zasilanie procka. Tylko pamiętaj że procek ma dwa piny GND i dwa piny VCC chociaż drugi nazywa się AVCC

    wszystko będzie dobrze
  • Poziom 9  
    Podsumowując - VCC i masę mam podać na piny 7 i 8 oraz 20 i 22 programowanej ATmegi? Na razie VCC i masa podane są tylko na 7 i 8.
  • Moderator Mikrokontrolery Projektowanie
    12adrian12 napisał:
    Podsumowując - VCC i masę mam podać na piny 7 i 8 oraz 20 i 22 programowanej ATmegi? Na razie VCC i masa podane są tylko na 7 i 8.

    Tak jak napisał Mirekk36 oraz producent w datasheet - należy podłączać wszystkie:
    http://mikrokontrolery.blogspot.com/2011/04/minimalne-podlaczanie-pinow.html
  • Poziom 42  
    12adrian12 napisał:
    Podsumowując - VCC i masę mam podać na piny 7 i 8 oraz 20 i 22 programowanej ATmegi? Na razie VCC i masa podane są tylko na 7 i 8.


    Ja naprawdę nie wiem, skąd wy panowie bierzecie te informacje i oszczędności w podłączaniu zasilania do mikrokontrolerów. To jak już tak oszczędzać - to może w ogóle nie podłączać VCC i GND bo po co? i oczekiwać że procek zadziała poprawnie.

    Polecam doczytać się a nocie PDF każdego mikrokontrolera po co jest noga AVCC i co ona zasila - i że nie tylko przetwornik ADC..... A o masie już nie wspomnę.

    Więc na razie jak kolega będzie pomijał te piny zasilania (chociaż - na schemacie pokazujesz że masz podłączone) - to na razie nie spodziewaj się prawidłowych efektów działania niesteyty.
  • Poziom 9  
    Udało mi się rozwiązać problem z programatorem. Winne było gniazdo KANDA. Podłączyłem także 2 wiszące piny programowanego układu.
    AVRDUDE poprawnie odczytał sygnaturę ATmegi, powodzeniem zakończyło się także wgrywanie do niej wsadu. Jako plik testowy wykorzystałem sterownik ze strony fischl.de.
    Jednak gdy zmieniłem fusebity sytuacja wróciła do punktu wyjścia - znowu otrzymuję log podobny do pierwszego w moim pierwszym poście w tym temacie.
    Układ został jednak zaprogramowany poprawnie - jeśli zamienię ATmegi miejscami programator jest wykrywany.

    W czym tym razem może tkwić problem?
  • Poziom 9  
    Zmieniłem
    HFUSE na C9
    LFUSE na EF
    następnie kliknąłem apply i write fuses.