Záložky: Úvod - Vlastnosti programátoru - Popis hardware - Popis software - Čítač - ToDo - Download
Pohled na osazenou desku:
Pohled ze strany spojů:
Biprog v krabičce:
Úvod
Na webu je možné najít bezpočet různých stránek s konstrukcí ISP programátoru pro mikropočítače AVR firmy
Atmel. Některé programátory jsou vytvořeny na základě aplikační poznámky AVR910 a využívají tedy zejména
program AVRprog. Jiné naopak využívají pro své řízení STK500 plugin AVR Studia a jejich firmware je napsán
na základě aplikační poznámky AVR068.
Je zřejmé, že HW je v obou případech téměř shodný. To mě přivedlo k nápadu udělat další variantu hardware
a k němu napsat software, který by byl schopen pracovat s oběma ovládacími programy. Záměr se podařilo naplnit
a výsledkem mého snažení je zde popsaný programátor biprog.
Vlastnosti programátoru
Automatická změna režimu (AVRISP/AVR910) podle ovládacího programu
Možnost upgrade firmware pomocí bootloaderu
Poslední použitá polarita signálu RESET je uložena v paměti EEPROM a platí i po zapnutí
Poslední použitá frekvence SCK je uložena v paměti EEPROM a platí i po zapnutí
Podpora všech ISP mikroprocesorů Atmel včetně AT89S51, AT89S52 a AT89S8252
Jednostranná, snadno amatérsky zhotovitelná, deska plošných spojů
Nevyužité porty ATmega8 jsou vyvedeny na konektor a umožňují i jiné využití hardware
Popis hardware
Programátor je zabudován do krabičky KG22M a tím jsou dány i rozměry 72 x 50 x 22 mm. Tuto krabičku je možné
zakoupit například v prodejnách GES. Dobře ji poznáte podle této nálepky:
Destička není v krabičce nijak upevněna. Drží v ní pouze za vystupující konektory. Snad je to zřejmé z fotografie.
Za základ konstrukce jsem zvolil svůj oblíbený mikropočítač ATmega8. Bylo to zejména z důvodů možnosti implementace
bootloaderu, velikosti paměti a velikosti pouzdra. Zapojení se nijak zvlášť neliší od podobných a nevyžaduje tedy
podrobnější popis. Za zmínku stojí snad jen konektor JP3, jumpery JP1 a JP2, tlačítko SW1 a svítivé diody.
Na konektor JP3 jsou vyvedeny nevyužité porty mikropočítače. To umožňuje využít tento hardware i pro jiné účely,
než je programátor. Jako příklad mohu uvést např. čítač do 3,5MHz se zobrazením na monitoru PC.
Tlačítko SW1 je v současné verzi SW ještě nevyužité. V budoucí verzi by mělo sloužit na rychlou ruční změnu frekvence
SCK. Úplně bez významu však tlačítko není ani teď. Pokud je stisknuté v okamžiku zapnutí napájecího napětí, aktivuje
se bootloader a umožňuje upgrade nebo úplnou výměnu SW. Vstoupit do režimu "Upgrade" jde však i bez tlačítka - viz
Popis software - část AVRISP.
Jumper JP1 má základní polohu 2-3. V poloze 1-2 slouží pro počáteční instalaci bootloaderu a později případně pro
jeho upgrade. Jumper JP2 je v současné době nevyužitý.
Využití svítivých diod:
LED1 - programátor je zapnutý a není v programovacím režimu ani v režimu bootloaderu
LED2 - polarita signálu RESET je nastavena pro procesory s jádrem 51
LED3 - polarita signálu RESET je nastavena pro procesory AVR
LED4 - programátor je zapnutý a je v programovacím režimu nebo v režimu bootloaderu
LED5 - bliká při čekání na příkaz
LED6 - svítí při aktivovaném bootloaderu. Je možné osadit dvoubarevnou LED a v budoucnu využít i jinak
Deska zdroje a patic (Socket Board)
Překvapilo mě, že nikde jsem na webu nenašel jako HW doplněk ISP programátoru desku se zdrojem a paticemi
pro různá pouzdra procesorů. Předpokládám, že většina bastlířů ani jiný než ISP programátor nemá a přitom velmi často
potřebuje programovat i jinak než "In System". Pak je přece nějaký podobný doplněk nutností !
Nicméně nikde jsem to neviděl a tak jsem si jednu takovou destičku udělal. Jejímu popisu je věnovaná
samostatná stránka.
Popis software (firmware)
Veškerý software je psán v assembleru AVR.
Část AVRprog
Část, spolupracující s programem AVRprog, je převzata z konstrukce Programmer für AVR-Prog und avrdude.
Byly pouze respektovány rozdíly mezi AT90S2313 a ATmega8. Dále byly provedeny některé změny s cílem ušetřit registry
a zcela přepracována hlavní smyčka. Tady jsem zase opisoval z programu, který jsem našel na Stránce Ondřeje Pužmana.
Na rozdíl od části AVRISP zde není implementováno uložení polarity signálu RESET do paměti EEPROM. Program je
kompatibilní i s AVRDUDE (AVR910, AVR911, AVR109, butterfly).
Frekvence signálu SCK přímo zde měnit nejde, ale používá se tatáž frekvence, která byla naposledy nastavena při použití
AVRISP.
Část AVRISP
Tato část je zcela původní. Byla napsána na základě aplikační poznámky AVR068. Jako ovládací program se používá
plugin STK500 AVR Studia anebo AVRDUDE (avrispv2, stk500v2). Pro upgrade firmware je možné využít i "tlačítko"
Upgrade na kartě Board. Vyžaduje to však malou úpravu v adresáři STK500. Nejdříve je třeba přejmenovat původní
aplikaci s názvem "Upgrade.exe" na nějaké jiné jméno. Potom je třeba do tohoto adresáře překopírovat program
"AVRProg.exe" a přejmenovat ho na "Upgrade.exe". Při stisknutí "tlačítka" Upgrade se potom automaticky ukončí plugin
STK500, spustí se AVRProg a v biprogu se aktivuje bootloader.
Volba frekvence ISP
Na kartě "Board" je možné vybrat si jednu ze šesti možných frekvencí. Nabízené možnosti skutečně odpovídají reálným
hodnotám. První tři jsou realizovány hardwarově pomocí SPI rozhraní, ostatní jsou realizovány softwarově. Význam
poslední možnosti (603 Hz) je zřejmě nulový, protože ovládací program v PC vždy skončí uplynutím timeoutu.
Zkoušel jsem tuto rychlost i s originálním firmware Atmelu (samozřejmě v jiném hardware, než biprog) a choval se stejně.
Uvažuji o možnosti místo nevyužitých 603 Hz implementovat např. frekvenci 1,8432 MHz. Trochu mi vadí, že skutečnost
by neodpovídala nabídce. Jakou frekvenci mi doporučíte zvolit pro náhradu nepoužitelných 603 Hz?
Podpora AT89S8252
Na rozdíl od továrního software STK500 (AVRISP) biprog podporuje i procesor AT89S8252. K tomu je třeba
do adresáře "Partdescriptionfiles" překopírovat soubor AT89S8252.xml, který najdete v sekci Download.
Ještě je třeba zdůraznit některá fakta, platící pro AT89S8252:
- Čtení signatury je pouze simulované.
- Čtení Lock bitů je pouze simulované.
- Zápis Lock bitů je skutečný.
- S jiným firmware (než biprog) to fungovat nebude !
Příklad jiné aplikace
Jak bylo uvedeno už v části Vlastnosti programátoru, HW biprogu je možné použít i pro zcela jinou aplikaci. Jako
příklad jsem udělal demonstrační firmware, který umožňuje využívat PC jako jednoduchý měřič frekvence (čítač)
do asi 3,5MHz. Měřený signál je třeba přivést na vstup T0 (port PD4, pin 6) proti GND.
Jako ovládací program je v tomto případě použita aplikace CITAC.exe pana Davida Matouška.
Protože na rozdíl od originálního HW pana Matouška (najdete ho v KE 2/2003) je zde i předdělička 256 realizována
softwarově, klesla maximální možná měřená frekvence ze 16MHz na asi 3,5 MHz (přibližně polovina frekvence krystalu).
Také firmware pro čítač si můžete v případě zájmu stáhnout o kousek níže v sekci Download. Na obrázku můžete vidět,
jak tento čítač změřil frekvenci krystalu 3,6864 MHz (která ovšem byla pomocí děličky ATtiny12 vydělena osmi).
Některé z mnoha dalších možností využití HW biprog: