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:
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):
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):
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:
Natomiast gdy włączę trzecią zworkę SLOW_CLK otrzymuję:
W mkAVR Calculator dostaję podobny komunikat:
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.
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:
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):
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=0x5dcPodobnie 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):
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:
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ę:
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 0W mkAVR Calculator dostaję podobny komunikat:
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.
