Polský programátor z GME a Atmel Studio

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 00:00
Bydliště: Praha

#16 Příspěvek od FHonza »

Nehledal bych chybu v Atmel Studiu, bude mezi programátorem a programovaným MCU. Programátor nedokáže komunikovat s MCU. Buď je rychlost MCU a programátoru významně rozdílná, nebo MCU vůbec neběží. Nejsou náhodou nastavené pojistky na MCU tak, že je potřeba externí krystal ?
Uživatelský avatar
Mara88
Příspěvky: 38
Registrován: 30 zář 2016, 00:00
Bydliště: Brno

#17 Příspěvek od Mara88 »

takže mám zkusit na pb6 a 7 připojit krystal? jinak mám toto zapojení připojené natvrdo na usbasp
Přílohy
AVR9.png
(34.2 KiB) Staženo 132 x
Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 00:00
Bydliště: Praha

#18 Příspěvek od FHonza »

Připoj krystal, nezapomeň na 2x 22pF k němu. Ještě bych na Reset dal pull-up odpor cca 10k.

Byl ten procesor nový ? Z výroby by měl být nastaven na interní oscilátor s předděličkou.
Uživatelský avatar
Mara88
Příspěvky: 38
Registrován: 30 zář 2016, 00:00
Bydliště: Brno

#19 Příspěvek od Mara88 »

Ano je nový, dá se nějak poznat, jestli je funkční? Ten krystal může být jakýkoliv?
Uživatelský avatar
mtajovsky
Příspěvky: 3728
Registrován: 19 zář 2007, 00:00
Bydliště: Praha

#20 Příspěvek od mtajovsky »

Defaultní programovací frekvence USBasp je 375 kHz. Protože maximální programovací frekvence čipu je 1/4 hodin a procesory se defaultně dodávají s nastaveným vnitřním oscilátorem 8MHz a se zapnutým děličem hodin 8 (nastaveno CLOCKDIV8), bude maximální frekvence pak jen 250 kHz.

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.
Uživatelský avatar
Mara88
Příspěvky: 38
Registrován: 30 zář 2016, 00:00
Bydliště: Brno

#21 Příspěvek od Mara88 »

tento přepínač -B<usec> najdu kde? Prosím polopatě:-D
Uživatelský avatar
mtajovsky
Příspěvky: 3728
Registrován: 19 zář 2007, 00:00
Bydliště: Praha

#22 Příspěvek od mtajovsky »

"přepínač" není žádný fyzický elektrický přepínač. Zde je to hantýrka pro parametr v příkazovém řádku nebo v datech zasílaného povelu. Když si spustíte například avrdude, tak dostanete nápovědu:
>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.)
Uživatelský avatar
Mara88
Příspěvky: 38
Registrován: 30 zář 2016, 00:00
Bydliště: Brno

#23 Příspěvek od Mara88 »

Tak připojil jsem pull up odpor, krystal 24mhz a kondíky a pořád stejné...
mtajovsky, jak se prosím dostanu do toho nastavení? pokud jej otevřu tak se po 1s ta černá obrazovka zavře a v příkazovém řádku se k tomu také nemohu dopracovat
Uživatelský avatar
mtajovsky
Příspěvky: 3728
Registrován: 19 zář 2007, 00:00
Bydliště: Praha

#24 Příspěvek od mtajovsky »

Nastavení se přece dělá v okně "External Tools". V poli "Command" se vloží cesta k avrdude a v poli "Arguments" pak příkazová řádka, obsahující mimo jiné i volbu -B12 (například).

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
Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 00:00
Bydliště: Praha

#25 Příspěvek od FHonza »

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ší.

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.
Uživatelský avatar
Mara88
Příspěvky: 38
Registrován: 30 zář 2016, 00:00
Bydliště: Brno

#26 Příspěvek od Mara88 »

já se tomu nebráním, opravdu:-)
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
Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 00:00
Bydliště: Praha

#27 Příspěvek od FHonza »

Koukám na to schéma a "slow SCK" je u Tebe JP3. Takže zkus zapnout JP3 a ne JP1 (to zapnout, aby byl procesor napájen z programátoru).

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)
Uživatelský avatar
mtajovsky
Příspěvky: 3728
Registrován: 19 zář 2007, 00:00
Bydliště: Praha

#28 Příspěvek od mtajovsky »

Díval jsem se do zdrojáků avrdude. Hláška:

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
Uživatelský avatar
Mara88
Příspěvky: 38
Registrován: 30 zář 2016, 00:00
Bydliště: Brno

#29 Příspěvek od Mara88 »

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é...
Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 00:00
Bydliště: Praha

#30 Příspěvek od FHonza »

AVRdude i s grafickou nadstavbou. Stačí někam rozbalit, netřeba instalovat. Funkční ve Win 7, Win 10 x86 i x64, vyzkoušeno. Předpokládám, že samotný driver pro USBasp máš nainstalovaný.

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 158 x
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“