Programátor pro procesory AVR

Miroslav Janás

Modul USB programátoru procesorů AVR s šestipinovým ISP rozhraním. Programátor je kompatibilní s „AVR studio 4“ (programátor  STK500 nebo AVRISP) a s „avrdude“ (programátor STK500v2). 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 5V z USB nebo 3.3V z vnitřního stablizátoru.

Obrázek programátoru

Acrobat PDF verze

Technické parametry

Parametr Hodnota Poznámka
Napájení 5V Napájeno z USB rozhraní
Napájení cílového zařízení 5V z USB
3.3V z vlastního stabilizátoru
Omezeno USB zdrojem
Maximálně cca 90mA
Spotřeba cca 10mA Bez cílového zařízení
Interface USB 1.1, USB 2.0 USB kabel A-B
Kompatibilita AVR Studio 4
AVRDUDE
STK500
STK500v2
Rozměry 65x25x20mm Výška nad nosnou deskou

Popis konstrukce

Úvodem

Modul byl navrhnut pro programování AVR procesorů přes USB rozhraní, pro nedostupnost  sériového a paralelního rozhraní na dnešních PC. Konstrukce vychází z dostupných inforamcí na internetových stránkách, zejména z EVERTOOL – combinet AVR programmer and debugger. Pro složitost nahrání firmware do modulu, byl vytvořen soubor stk500.hex, který se externím programátorem nahraje do modulu. Pokud jsou dobře nastaveny konfigurační pojistky je programátor připraven k programování.

Zapojení modulu

Základní procesor U1 ATmega8535 zajišťuje veškerou programovací činnost. S PC komunikuje prostřednitvím sériového rozhraní. O seriového rozhraní se stará IO U2, známý převodník USB-rs232 FT323RL.  Často se vyskytuje situace, programovat při nižším napětí, než 5V. Proto byl programátor osazen i stabilizátorm 3,3V LE33DE U3. Na rozhraní ISP byly přidány ochranné rezistory s hodnotou 100 ohmů a dále možnost vypnout napájení cílového zařízení přes přepínač SW2 (VTG enable). Jumper J7 (ISP  select)  se použije jen při prvním nahrání HEX souboru a pojistek do programátoru  (poloha 1-2 ISPmega8538). V poloze 2-3 normal AVRISP je modul připraven programovat. Zapojení obsahuje tlačítko reset, kterým se resetuje cílový procesor. (Neresetuje se programátor!!!) a je nutné toto tlačítko osadit na desce. Zelená  LED dioda D2 značí připravenost programátoru, červená LED dioda D1 oznamuje právě probíhající programování.

Zapojení procesorové části

Srdce programátoru – ATmega8535.

Zapojení USB rozhraní

USB interface s převodníkem USB-rs232 FT232RL. Standardní katalogové zapojení doplněno o stabilizátor U3 LE33D. Stabilizátor vytváří napětí 3,3V. Jumprem J3 se volí programovací napětí.

Mechanická konstrukce

Modul je navrhnut pro připevnění na standardní nosou desku (deska s provrtanými díramy 3,2mm  v ose x a y po 400 milsů) . V rozích jsou šroubky a sloupky s rozpětím 5x2cm (2000x800mils).

Osazení a oživení

Osazení

Modul je navrhnut na jednostranné desce a obsahuje dvě propojky. Jedna propojka je realizována prostřednistvím tlačítka reset.Tudíž se neosazuje, ale samo tlačítko tuto propojku realizuje.Tlačítko reset je nutné osadit. Druhá propojka se nachází u konektoru J7 (sel ISP).

Deska z pohledu strany součástek

Osazení desky ze strany součástek

Deska z pohledu strany spojů

Osazení desky ze strany spojů

Seznam použitých součástek

Počet Reference Hodnota Pouzdro
Odpory SMD
8 R1, R6, R7, R8, R9, R10, R11, R14 10k R0805
1 R2 68k R0805
1 R3 33k R0805
2 R4, R5 1k5 R0805
1 R13 4k7 R0805
4 R12, R15, R16, R17 100 R0805
Keramické kondenzátory SMD
10 C1, C4, C5, C6, C7, C8, C12, C13, C14, C15 100n C0805
2 C2, C3 22p C0805
1 C10 10n C0805
1 C16 2.2uF lze i elektrolyt C0805
Elektrolytické kondenzátory SMD
2 C9, C11 4.7uF/6.3V ELYTB
Indukčnosti SMD
1 L1 ferrite_bead R0805
Diody
1 D1 red LED3
1 D2 green LED3
1 D3 1N4007SMD MELF
Integrované obvody
1 U1 ATmega8535_TQ44 TQFP44
1 U2 FT232RL SSO28_210
1 U3 LE33D SO8_150
Krystaly
1 X1 3.6864MHz XTAL050
Pojistky SMD
1 FUSE 0.5A R1206
Mechanické součástky
1 J1 JUMP2X3 JUMP2X3
1 J2 JUMP2x3 JUMP2x3/B
1 J3 JUMP2 JUMP2
1 J4 USB_B_01 USB_B_01
1 J7 JUMP3 JUMP3
1 SW1 TARGET_RESET PUSH050x050
1 SW2 SW_P-B143 P-B143
Konstrukční součástky
2 Jumper propojka    
4 Sloupek M3x5mm    
4 Šroub M3x12 křížový s válcovou hlavou    
4 Podložka M3    
2 Konektor 6 pinů NDR-06 s piny    

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. Nicméně do pomocného procesoru se muselo stejně nahrát další firmaware, 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 a už se o nic nestaráme. Jen nemáme možnost automatické upgrade firmware. Pro upgrade je nutné zase použít externí programátor.

Postup nahrání pojistek a firmware pro avrdude je následující:

Přepneme JUMPER J7 (sel ISP) do polohy 1-2 ISPmega8535 a připojíme externí programátor do konektoru ISP(6pin). Pokud externí programátor potřebuje ke své činnosti napájení ze cílového zařízení, přepneme přepínač SW2 (VTG) do polohy on. Zvolíme programovací napětí pomocí JUMPERU J3 (sel POWER) na 5V nebo 3,3V, dle externího programátoru. Připojíme náš programátor na USB, tím se přivede napájení, a můžeme nahrát pojistky a soubor stk500.hex.

Pro pojistky:

avrdude -p atmega8535 -P %PORT% -c %PRG% -U lfuse:w:0xff:m -U hfuse:w:0xdb:m

Pro soubor stk500.hex

avrdude -p atmega8535 -P %PORT% -c %PRG%  -U flash:w:stk500.hex:a

kde PRG je typ externího programátoru a PORT je sériový nebo paralelní port externího programátoru.

Po naprogramování se JUMPER J7 (sel ISP) vrátí do polohy 2-3 ISP normal.

Programové vybavení

Pro uživatele WINDOWS XP je nutné ještě nainstalovat ovladače USB převodníku FTDI.

AVR Studio 4

Po spuštění aplikace vybereme na horní liště nástroje Tools – Program AVR – Auto connect. A můžeme už programovat. Pokud auto connect nic nenajde, zvolíme Tools – Program AVR –connect… a vybereme Platform: STK500 or AVRISP Port: COM kde se náš programátor nachází.

AVRDUDE

Zde stačí do příkazové řádky zadat tyto patametry

avrdude –p xxx –c stk500v2 –P comx – U flash:w:muj.hex:a

xxx … typ cílového procesoru
comx … com port kde je náš programátor

ostatní parametry viz příkaz avrdude –?, zde získáme nápovědu.