ATprogISPUSB0A Programátor pro procesory AVR Miroslav Janás, Milan Horkel Modul USB programátoru procesorů AVR s šestipinovým ISP rozhraním. Programátor patří do rodiny programátorů STK00. Programátor obsahuje tlačítko RESET pro resetování cílového procesoru a přepínač VTG pro napájení cílového zařízení napětím V přímo z USB nebo.v z vnitřního stabilizátoru.. Technické parametry Parametr Hodnota Poznámka Napájení V Napájeno z USB rozhraní Napájení cílového zařízení V z USB.V z vlastního stabilizátoru Omezeno USB portem Maximálně cca 90mA/90mA ) Spotřeba cca 0mA Bez cílového zařízení Interface USB., USB.0 USB kabel A-B Kompatibilita AVR Studio AVRDUDE STK00 STK00v Rozměry xx0mm Výška nad nosnou deskou ) Proud je omezen na cca 90mA pokud je osazen menší stabilizátor a nebo pokud je použit nenapájený USB HUB ATprogISPUSB0A.doc / 009-0- / mija/miho / http://www.mlab.cz / 8
ATprogISPUSB0A. Popis konstrukce.. Úvodem Protože nové počítače a zejména notebooky již nemají oblíbený LPT port ke kterému se připojují různé jednoduché programátory procesorů, naklonovali jsme z dostupných pramenů tento programátor, který se připojuje přes všudypřítomnou USB sběrnici. Konstrukce vychází zejména z EVERTOOL combined AVR programmer and debugger. Aby byla konstrukce jednodušší, nahrává se firmware přes ISP konektor z jiného programátoru. Podrobnosti viz kapitola oživení dále v textu... Zapojení modulu Modul je připojen k USB sběrnici prostřednictvím převodníku USR-RS s obvodem FTDI TFR. Tento převodník je běžně rozšířený s podporovaný ve všech používaných operačních systémech. Pokud ve vaší instalaci OS není driver přítomen, bude jej třeba nainstalovat. Pojistka F omezuje proud na cca 0.7A protože některé počítače nemají napájecí proud z USB portů omezen. Pojistka je samoopravná. Dioda D chrání programátor před zničením, pokud je špatně zapojený USB kabel nebo port. F L RXE07E_SMD BLMP00SPT 0.7A L080 USB_ J USB_B_0 M M USBDM USBDP USB INTERFACE C 00n USBDM USBDP C.uF/.V/C080 USB_ R k7 R 0k C 00n A C C 00n D N007SMD C 00n 0 9 7 8 7 U FTRL USBDM USBDP RESET# OSCI OSCO IO VOUT TEST 7 8 A USB RXD TXD RTS# CTS# DTR# DSR# DCD# RI# CBUS0 CBUS CBUS CBUS CBUS NC NC 9 0 8 TX_AVR RX_AVR Napájecí napětí pro programátor se bere z USB portu. Z USB konektoru běžného počítače lze odebírat proud až 00mA. Z portu z nenapájeného USB rozbočovače (a z malých PDA počítačů) lze odebírat jen 00mA. Vlastní spotřeba programátoru je cca 0mA a zbytek lze použít pro napájení cílové aplikace. Aby bylo možné napájet cílovou aplikaci i napětím.v je programátor vybaven stabilizátorem U. Menší obvod U_ poskytne cílové aplikaci cca 90mA, větší obvod U_ pak až 90mA. Osazuje se jen jeden z nich! Propojkou J se volí napětí.v (stav rozpojeno) nebo V (stav spojeno). ATprogISPUSB0A.doc / 009-0- / mija/miho / http://www.mlab.cz / 8
ATprogISPUSB0A USB_ J JUMP select on V off.v C 00n U_ 8 IN OUT INH 7 LECD SO8 max 00mA C7.uF/.V/C080 J JUMPX max V USB_ U_ IN OUT OUT ADJ LT7-. SOT max 800mA Use only one: LE (less power) LT7 (more power) POWER SUPPLY Srdcem programátoru je procesor U ATmega8. Použití právě tohoto procesoru je dáno tím, že do programátoru musí pasovat firmware pro programátor STK00. Procesor komunikuje sériově přes USB-RS převodník U. Odpory 00Ω v sérii s ISP signály jsou ochranné, aby nebylo tak snadné zničit programátor nebo cílovou aplikaci, zejména při nevhodném napájení. IRESET C8 00n R 0k C 00n C9 00n X.8MHz A B C p C0 00n C p C 00n MOSI MISO SCK RX_AVR TX_AVR R 0k C 00n R 00 R 00 R7 00 7 8 9 0 7 U ATmega8L-8AU PCB Footprint = TQFP PB/MOSI PB/MISO PB7/SCK RESET# XTAL XTAL PD0/RXD PD/TXD PD/INT0 PD/INT PD/OCB PD/OCA PD/ICP PD7/OC SS#/PB AIN/OC0/PB AIN0/INT/PB T/PB T0/XCK/PB0 0 9 8 7 0 9 8 7 8 9 0 PC0/SCL PC/SDA PC PC ADC0/PA0 ADC/PA ADC/PA ADC/PA ADC/PA ADC/PA ADC/PA ADC7/PA7 AREF A TOSC/PC7 TOSC/PC PC PC R8 0k R9 0k R0 0k R 0k R 0k ERESET R 8k R k A C R k D green A C R k D red Přepínač (propojka) J přepíná ISP signály buď do režimu normální funkce (poloha -) kdy programátor funguje jako programátor nebo do režimu programování firmwaru vlastního programátoru (poloha -). V tomto režimu se ISP konektor J použije jako vstupní pro připojení externího programátoru. Je třeba si uvědomit, že V na USB nemusí znamenat V v cílové aplikaci protože se zde projeví úbytky na kabelech, pojistkách a tolerance napájecího zdroje PC. Napájení cílové aplikace se zapíná přepínačem SW. ATprogISPUSB0A.doc / 009-0- / mija/miho / http://www.mlab.cz / 8
ATprogISPUSB0A ISP select - ISPmega8 - normal ISPAVR J JUMP SW P-B Target Power Enable - ON - OFF MOSI C.uF/.V/C080 J JUMPx VTG MISO MOSI SCK RST# ERESET R7 MISO 00 SCK ISP CONNECTOR SW P-B70A IRESET Target Reset Used for Target System and for Programmer itself Tlačítko SW slouží pro resetování cílové aplikace, ale neresetuje samotný programátor. Je nutné ho osadit, protože současně funguje jako drátová propojka na plošném spoji. Zelená LED dioda D značí připravenost programátoru, červená LED dioda D oznamuje právě probíhající programování... Mechanická konstrukce Modul je navržen jako standardní modul do stavebnice s upevňovacími sloupky v rozích. ATprogISPUSB0A.doc / 009-0- / mija/miho / http://www.mlab.cz / 8
ATprogISPUSB0A. Osazení a oživení.. Osazení Modul je navržen na jednostranné desce a obsahuje dvě propojky. Jedna propojka je realizována prostřednictvím tlačítka RESET. Pokud se tlačítko neosadí, je třeba osadit propojku. Druhá propojka se nachází u konektoru J. Katody LED diod jsou označeny v potisku a jsou směrem k procesoru. Deska při pohledu ze strany součástek Deska při pohledu ze strany spojů ATprogISPUSB0A.doc / 009-0- / mija/miho / http://www.mlab.cz / 8
ATprogISPUSB0A Seznam použitých součástek Počet Reference Název Pouzdro Odpory R, R, R7, R7 00 R080 R, R k R080 R k7 R080 8 R, R, R, R8, R9, R0, R, R 0k R080 R k R080 R 8k R080 Keramické kondenzátory C, C p C080 C, C, C, C, C, C8, C9, C0, C, C, C 00n C080 C, C7, C.uF/.V/C080 C080 Indukčnosti L BLMP00SPT R080 Pojistky F RXE07E_SMD F8 Diody D N007SMD MELF D green LED D red LED Integrované obvody U FTRL SSO8_0 U ATmega8L-8AU TQFP U_ LECD SO8_0 U_ LT7-. SOT Krystaly X.8MHz XTAL00 Mechanické součástky SW P-B70A PUSH00x0 0 SW P-B P-B J USB_B_0 USB_B_0 J JUMP JUMP J JUMP JUMP J, J JUMPX JUMPX Konstrukční součástky Jumper propojka Šroub Mx Podložka M Sloupek Mxmm DIMX0 Konektor x piny na kabel NDR-0 Piny do konektoru NDR-T Plošný spoj ATprogISPUSB0A ATprogISPUSB0A.doc / 009-0- / mija/miho / http://www.mlab.cz / 8
ATprogISPUSB0A.. Oživení Pokud je deska dobře osazená, zbývá jen do procesoru nahrát firmware. Aby se zjednodušila konstrukce, byl vynechán pomocný procesor, který firmware nahrával do programátoru. Do tohoto pomocného procesoru se musel stejně nahrát další firmware, který pak už komunikoval s aplikaci AVR studio. Do našeho programátoru tedy nahrajeme jen patřičný HEX soubor s pojistkami pomocí externího programátoru. Nemáme tedy možnost automatického upgrade firmware. Pro upgrade je nutné zase použít externí programátor jako při prvotním programování firmwaru. Jednoduchý externí programátor (pro LPT port) je uveden v návodu v sekci Modules/AVR na webu http://www.mlab.cz. J je USB konektor pro připojení k počítači PC J slouží pro volbu napájecího napětí programátoru a cílové aplikace J je konektor napájení programátoru (.V nebo V) J přepíná režim normální funkce nebo režim programování programátoru J je ISP programovací konektor SW je RESET pro cílovou aplikaci SW zapíná napájecí napětí pro cílovou aplikaci pokud nemá aplikace vlastní zdroj... Nahrání procesoru v programátoru Budeme potřebovat soubor stk00.hex s firmwarem. Ten naleznete v sekci HW tohoto projektu (na webu http://www.mlab.cz). Dále budete potřebovat nějaký fungující programátor pro procesory ATMEL. Aby popis byl konkrétní, popíšeme použití jednoduchého programátoru picoweb spolu s aplikací avrdude. Do procesoru je třeba nahrát i správné hodnoty konfiguračních přepínačů lfuse a hfuse. Přepneme propojku J (ISP SELECTION) do polohy - a připojíme externí programátor k ISP konektoru J. Pokud použitý externí programátor potřebuje ke své činnosti napájení z cílového zařízení, zapneme napájení přepínačem SW (TARGET POWER) přepnutím do polohy ON a zvolíme programovací napětí pomocí propojky J (SELECT) na V nebo,v podle toho, co ATprogISPUSB0A.doc / 009-0- / mija/miho / http://www.mlab.cz 7 / 8
ATprogISPUSB0A vyžaduje externí programátor. Obvyklá hodnota je V. Připojíme oživovaný programátor k USB portu počítače, tím se přivede napájení a druhým programátorem pak můžeme nahrát do procesoru firmware a konfigurační slova. Pro nahrání je připraven dávkový soubor flash.bat, který si budete muset přizpůsobit podle vaší konfigurace. Linuxoví uživatelé mají připravený shell script flash.sh, který si přizpůsobí podle svého. Dělá to samé. avrdude -p atmega8 -P lpt -c picoweb -v -U lfuse:w:0xff:m -U hfuse:w:0xdb:m avrdude -p atmega8 -P lpt -c picoweb -U flash:w:stk00.hex:a Po naprogramování se propojka J vrátí do pracovní polohy - (režim normal).. Programové vybavení Pro uživatele Windows XP je nutné ještě nainstalovat ovladače USB převodníku FTDI. Aktuální drivery jsou na webu výrobce na adrese http://www.ftdichip.com. Hledáme drivery pro obvod FTDIR pro Windows XP. Je jedno, zda zvolíme driver VCP nebo DXX protože driver je ve skutečnosti jen jeden společný pro obě API. Programátor se v systému jeví jako nový COM port. Windows XP číslují použité COM porty pořád dál a po nějaké době začne přidělovat velká čísla (třeba COM). AVR Studio umí použít jen port COM až COM9. V případě potřeby je možné systému vnutit pro dané zařízení libovolné číslo COM portu. Dělá se to ve správci zařízení v pokročilých volbách (je nutné být pro tuto chvíli administrátorem)... Použití programátoru v programu AVR Studio Po spuštění AVR studia vybereme na horní liště nástroje Tools / Program AVR / Auto Connect. A můžeme programovat. Pokud Auto Connect nic nenajde, zvolíme Tools / Program AVR / Connect a vybereme Platform: STK00 or AVRISP a případně nastavíme ve volbě Port: správný COM port, na kterém je náš programátor. Který COM port byl přiřazen USB programátoru můžeme poznat pomocí programu Příslušenství / Komunikace / Hyper Terminal, který zobrazuje přítomné COM porty i pro USB zařízení. Také je to vidět ve správci zařízení v sekci sériových portů... Použití s programem AVRDUDE a AVRDUDEGUI Při použití AVRDUDE zadáváme v příkazové řádce parametry programátoru a portu dle příkladu: avrdude p xxx c stk00v P comx U flash:w:muj.hex:a -p xxx určuje typ cílového procesoru -c xxx určuje druh programátoru, tento programátor je kompatibilní s stk00v -P comx určuje komunikační com port, kde je náš programátor muj.hex soubor, který se programuje Ostatní parametry viz příkaz avrdude?, který vypíše nápovědu. Při použití nadstavby AVRDUDEGUI opět volíme programátor typu stk00v a vybíráme správný COM port. ATprogISPUSB0A.doc / 009-0- / mija/miho / http://www.mlab.cz 8 / 8