Polský programátor z GME a Atmel Studio
Moderátor: Moderátoři
Programovací frekvenci USBasp je možno snížit pomocí přepínače -B<usec>, kde usec je počet mikrosekund periody programovacího taktu. Obvykle se používá -B5 nebo spolehlivěji -B12 a dokonce -B60.
Předpokládá se, že firmware USBasp je novějšího typu, které umí zpracovat volbu -B. Vzpomínaná hláška:
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
znamená, že to firmware neumí a je potřeba jeho update.
Pokud je procesor nastaven na vyšší frekvenci hodin, pak programování proběhne i při defaultním nastavení USBasp. Varování o nemožnosti přenastavit takt USBasp se pak může ignorovat pokud to programovací prostředí dovolí a operaci úspěšně dokončit (Khazama). Atmel Studio ani Arduino to nedovoluje.
>avrdude
Usage: avrdude [options]
Options:
-p <partno> Required. Specify AVR device.
-b <baudrate> Override RS-232 baud rate.
-B <bitclock> Specify JTAG/STK500v2 bit clock period (us).
-C <config-file> Specify location of configuration file.
-c <programmer> Specify programmer type.
-D Disable auto erase for flash memory
-i <delay> ISP Clock Delay [in microseconds]
-P <port> Specify connection port.
-F Override invalid signature check.
-e Perform a chip erase.
-O Perform RC oscillator calibration (see AVR053).
-U <memtype>:r|w|v:<filename>[:format]
Memory operation specification.
Multiple -U options are allowed, each request
is performed in the order specified.
-n Do not write anything to the device.
-V Do not verify.
-u Disable safemode, default when running from a s
-s Silent safemode operation, will not ask you if
fuses should be changed back.
-t Enter terminal mode.
-E <exitspec>[,<exitspec>] List programmer exit specifications.
-x <extended_param> Pass <extended_param> to programmer.
-y Count # erase cycles in EEPROM.
-Y <number> Initialize erase cycle # in EEPROM.
-v Verbose output. -v -v for more.
-q Quell progress output. -q -q for less.
-l logfile Use logfile rather than stderr for diagnostics.
-? Display this usage.
Je tam vidět i parametr -B. AtmelStudio a i jiná prostředí posílají směrem na USBasp příkaz, který nastavuje takt programování. Respektive vyvolají utilitu avrdude a předají jí příkazovou řádku obsahující parametr -B. avrdude pak odešle mimo jiné na USBasp i povel k nastavení taktu. Jestliže máte v USBasp starší firmware, tak tento starší FW povel pro nastavení taktu programování neumí. Proto vrátí chybový kód a avrdude na svém standardním výstupu vypíše inkriminovanou hlášku o nemožnosti nastavit takt. Atmel Studio tuto hlášku zachytí a zobrazí v okně pro výstup výsledků operace. A tím to, bohužel, zhaslo.
Odpomoc je, jak už jsem psal, update firmware vašeho USBasp. Nový firmware zpracuje i povel pro nastavení taktu a operace proběhne OK.
Některá prostředí, jako Khazama AVR Programmer sice také příkaz pro nastavení taktu pošlou, ale po vrácení chyby mohou pokračovat v akci, pokud operátor odklikne ignorování této chyby. Programovací takt zůstává na defaultních 375 kHz. Pokud v tomto případě byla hodinová frekvence procesoru již dříve nastavena na nějakém jiném programátoru na vyšší frekvenci, například byla vypnuta dělička 8-mi hodin procesoru, tak dojde k dokončení akce (i třeba přes několikrát opakované ignorování chyby.)
Ale bez update firmware vašeho USBasp se nepohnete z místa, už se s tím smiřte.
http://shannonstrutz.com/uncategorized/ ... l-studio-6
Další věc, která mě ještě napadla. Některé programátory mají JP3, kterým se zapíná napájení procesoru z programátoru. Takže napájení na programovaném procesoru případně zkontroluj
Kdyby nic nepomohlo, tak připoj analyzátor/osciloskop alespoň na SCK a podívej se, jestli tam vůbec něco je.
Jinak pro ATMegu8 je max. hodnota krystalu 16MHz.
Command: E:\AVRDUDE\avrdude.exe
Arguments: -p m32 -c usbasp -P usb -U flash:w:"$(ProjectDir)Debug\$(TargetName).hex":i
ted se dívám, že to je argument pro atmega32, tam ale žádná volba B není, mám teda použít argument pro atmega16
-c usbasp -p atmega16 -B12 -U flash:w:”$(ProjectDir)Debug\$(ItemFileName).hex”:i
nebo nějakej jinej?
jinak dal jsem schéma programátoru, jo JP3 mám, večer zkusím:-)
- Přílohy
-
AC-PG-USBASP_03_LRG.jpg- (98.63 KiB) Staženo 149 x
Shrnutí Tvého programátoru:
JP1: řídí zda je programovaný procesor napájen z programátoru (v originále JP3)
JP2: možnost upgradovat firmware
JP3: snižuje frekvenci SCK když je "zapnut" ˇ(v originále JP1)
warning: cannot set sck period. please check for usbasp firmware update.
se generuje v rutině
usbasp.c@usbasp_spi_set_sck_period():
Kód: Vybrat vše
int nbytes = usbasp_transmit(pgm, 1, USBASP_FUNC_SETISPSCK, cmd, res, sizeof(res));
if ((nbytes != 1) | (res[0] != 0)) {
avrdude_message(MSG_INFO, "%s: warning: cannot set sck period. please check for usbasp firmware update.\n", progname);
return -1;
}
řádek 912 - v poslední (trunk) větvi
Pokud se hláška objeví i při absenci parametru -B, tak avrdude zřejmě v tomto případě nastavuje nějakou defaultní hodnotu. Vynechání parametru -B nás potom nezachrání. Nebo je taky možnost, že Atmel Studio ten parametr samo doplní. Vyzkoušet samotné avrdude, jak doporučil FHonza.
Viz http://svn.savannah.nongnu.org/viewvc/?root=avrdude
FHonza píše:Doporučoval bych to zkoušet mimo Atmel Studio, k AVRdude existuje grafická nadstavba (můžu Ti to někam nahrát). A pro začátek třeba zkoušet přečíst nastavení FUSE. Podívej se, jestli opravdu jumper JP1 na Tvém programátoru je tentýž jako na schématu na který jsem sem vkládal odkaz. Mám v programátoru firmware, který nepodporuje parametr B, ale přepnutím se vždy problém vyřeší.
můžu teda poprosit o tu grafickou nástavbu? přes www.uschovna.cz či nějak jinak?nevím jak je to velké...
Určitě ale zkontroluj ty JP1 a JP3. JP3 propojen, JP1 nesmí být volný (označení dle Tvého programátoru, ne dle původního).
- Přílohy
-
avrdude-5.11-Patch7610-win32.zip- (191.25 KiB) Staženo 159 x