Programátor Biprog verze 4.2 Zbyněk Lisý
Úvod V amatérském radiu PE 6/2010 jsem narazil na článek o palubním počítači do automobilu PP-KWP1281, zaujal mě natolik, že jsem se rozhodl si něco podobného vytvořit. Avšak narazil jsem na problém, nemám žádný ISP (In System Programmer) programátor. Pro tyto účely jsem na internetu našel perfektní zapojení programátoru Biprog. Jak autor aplikačního software(Luboš Ruckl) uvádí, jedná se o programátor jež využívá dvou aplikačních poznámek Atmelu AVR910 a AVR068, odtud je název programátoru. Ovšem všechna uvedená zapojení předpokládají napájení z programované aplikace, ale na pokusná zapojení je lepší využít napájení přímo z Biprogu a zbytečně nevytvářet napájecí zdroje. Moji verzi programátoru je možné napájet jak z programované aplikace, tak i obráceně.
Základní údaje Napájení Maximální odběr ze zdroje Způsoby komunikace s procesorem
AC/DC 8V - 12V nebo ISP konektor 35mA AVR910 a AVR068
Rozhraní HMI (Human Machine Interface) Rozměry kompletního programátoru
RS 232 Tx/Rx 6x LED 1x tlačítko 81x72x32
Vlastnosti • • • • • •
Bezproblémové připojení k redukcím USB-RS232, díky nábojové pumpě MAX232 Podpora všech procesorů firmy ATMEL s rozhraním ISP Upgrade firmware díky boot loaderu Poslední použitá frekvence SCK a polarita RESETu uložená v EEPROM Možnost napájet programovanou aplikaci přímo programátorem Indikační LED, udávající přesný stav programátoru
Obr. 1 Rozmístění indikačních LED
Popis funkce Programátor je ovládán softwarově. Stav, v jakém se zrovna programátor nachází, zobrazuje 6 svítivých diod (Obr.1). Význam stavových LED: LED 1 – čekání na příkaz (bliká) LED 2 – polarita RESETU nastavena na procesor s jádrem 51 LED 3 – polarita RESETU nastavena na procesor s jádrem AVR LED 4 – probíhá programování LED 5 – žádná činnost programátoru LED 6 – režim boot loaderu Pro upgrade firmware Biprogu je potřeba nasadit jumper na konektoru JP2 do pozice 1-2. Poloha 2-3 slouží pro běžný provoz a tím distribuci resetovacího signálu programovanému procesoru, dále pak programátor přepnout do režimu boot loaderu stiskem tlačítka TL1 a poté zapnutí napájecího napětí.Rozsvítí se LED1,LED6 a LED4 a LED5 budou přeblikávat což signalizuje čekání na příchozí komunikaci na sériovém kanálu. V tomto okamžiku je možné přes AVRProg nahrát aktuálnější firmware.AVRProg je součástí vývojového prostředí AVR Studio, to je možné zdarma stáhnout (nutná registrace) na stránkách Atmelu.
Popis zapojení Schéma zapojení (Obr. 2) vychází z aplikačních poznámek Atmelu s tím, že je doplněno o napájecí obvody a DC/DC převodník MAX232, kvůli zachování různých napěťových úrovní pro pěti-voltovou logiku a normu RS 232. O správné napájecí napětí se stará stabilizátor IC2, jehož výstup je přes diodu D1 přiváděn ke všem obvodům. Dioda zde slouží jako ochrana stabilizátoru při napájení programátoru z programované aplikace.Tato dioda však zároveň sráží napětí na hodnotu 4.3V. Tento pokles ovšem nemá vliv na správnou funkci programátoru. Tuto špatnou vlastnost je možné vyřešit zapojením rezistoru nebo diody mezi vývod 2 obvodu IC2 a GND (naznačeno na Obr. 2).
Obr. 2 Schéma zapojení
Všechny signály SPI kanálu potřebné k programování procesoru jsou vyvedeny na konektor SV4. K propojení s počítačem slouží konektor X1, jedná se o samici. Z toho už plyne zapojení propojovacího kabelu.Jedná se o přímý kabel bez překřížení -> samice-samec. A nebo při použití redukce USB-RS232 lze tento převodník zapojit přímo do programátoru.
Základní pojmy k procesorům pro začátečníky Zde jsem vybral několik pojmů souvisejících s procesory AVR, jenž by nemuseli být začínajícím programátorům úplně zřejmé. Hodinový signál – je dán hodnotou frekvence připojeného krystalu a nebo externího oscilátoru. Určuje rychlost zpracování programu v procesoru. Každá instrukce procesoru zabere určité množství kmitů oscilátoru, záleží na složitosti instrukce. Boot Loader –poskytuje mechanizmus pro zavedení nebo čtení programového kódu přímo procesorem. Dále, jako v našem případě, dovoluje budovat flexibilní aplikace, jenž se aktualizují sami. Flash procesoru se rozdělí na dvě části, aplikační sekce (zde se nachází aktivní kód procesoru) a sekce boot leaderu. SPI – sériový download, jedná se o vyspělou metodu programování procesorů přímo v aplikaci.Toho způsobu Biprog využívá. Jedná se o velké zjednodušení programování oproti paralelnímu (např.89C51), protože není nutné při každé změně programu, obzvlášť při ladění, neustále vyjímat procesor z patice aplikace a vkládat do programátoru. Signatura – jsou to bajty, které zapsal přímo výrobce a určují typ procesoru. Díky tomu programátor rozezná, o jaký se jedná procesor. Fuse bits – propojky, udávající vlastnosti procesoru.Např. nastavení zdroje hodinového signálu pro procesor, hlídání poklesu napájecího napětí, povolení/zákaz SPI atd. Lock bits – jedná se o jakési zamčení různých částí paměti. Aby se ochránila část kódu, používá se většinou při použití s boot loaderem. Dále pak lze zamknout úplné čtení nebo verifikaci procesoru, ochrana neoprávněného čtení dat.
Popis programu Program Biprogu se skládá ze dvou částí, boot loaderu a aplikačního programu. Autorem boot loaderu je pan Herbert Dingfelder, je navržen pro procesory ATmega8 s krystalem o hodnotě 7,3728MHz, tato hodnota je důležitá protože určuje časování komunikace sériové linky s procesorem a to na hodnotu 115200 bit/s. Autorem aplikačního programu je pan Luboš Ruckl. Tento program se právě stará o komunikaci s programovaným procesorem a počítačem a zároveň ovládá signalizační LED. Autor na svých internetových stránkách aktualizuje software, pro použití Biprogu s novými typy procesorů.
Výroba DPS a osazení K návrhu DPS jsem využil klasických vývodových součástek, kvůli poměrně prostorné krabičce. Všímavý čtenář jistě postřehnul,že na vyfotografovaném programátoru jsou LED2/3 a LED4/5 prohozeny, ale na osazovacím plánku je již vše v pořádku. Deska plošných spojů je jednostranná, zapojení je na Obr.3 a osazení součástkami na Obr.4.
Obr. 3 Spoje
Obr. 4 Součástky
Obr. 5 Vyleptaná deska
Obr. 6 Osazená deska
Desku je nejlepší vyrobit foto-cestou. Nastříkání kuprextitu foto-citlivou vrstvou, nasvítit, vyleptat a osadit součástkami. Výroba je bez problémů, snad jen dát si pozor na polaritu kondenzátorů a LED diod. Stabilizátor jsem našrouboval přímo k destičce přes distanci, tím vznikne vzduchová mezera mezi obvodem a kuprextitem, kvůli případnému zahřívání při větším odběru proudu.
Mechanické provedení Programátor je umístěn v kovové krabičce, kterou jsem vlastnil již z jiné aplikace. Ovšem tuto krabičku není problém vyrobit,jelikož neobnáší ani jediný svár.
Obr. 7 Původní krabička Přední panel, obsahující vizuální a ovládací prvky, je připájen kolmo k základní desce programátoru. Na Obr.8 je znázorněn způsob připájení propojovacích kolíků. Je zřejmé, že se jedná o jednořadé kolíkové lišty 2x přímá a 1x 90º, která je připíjena ze strany spojů k desce panel.
Obr. 8 Propojení panelu
Obr. 9 Přední panel
Výroba krabičky Krabička je vyrobena z plechu o tloušťce 0,8mm,ale je možné použit i jiné tloušťky, je však nutno upravit velikosti, tak aby oba kusy do sebe pěkně zapadly.Plánek na Obr. 10 znázorňuje kóty a místa ohybu. Plná černá pole znázorňují místo výřezu. Krabička je na vrchním dílu opatřena větracími otvory, kvůli efektnímu vzhledu.
Obr. 10 kóty krabičky V krabičce je nutno vyříznout obdélníkový otvor na přední panel. Do zadní části umístit konektor sériové linky a napájecí konektor. Celou krabičku je pak nastříkána černou barvou. Jako masku předního panelu lze použít odleptaný kuprextit, vyvrtat do něj otvory na Ledky 3.1mm a tlačítko 3.7mm a otvor na propojovací konektor, potom celou masku natřít stříbřenkou s obsahem hliníku. U vytváření otvorů je třeba dodržet přesnosti, každá i sebemenší nepřesnost je vidět. Přesné rozmístění otvorů lze docílit tím, že vytiskneme osazovací plánek, přiložíme ho k masce a vyznačíme si otvory důlčíkem nebo rýsovací jehlou. Kompletní programátor je na Obr. 10.
Obr. 11 Přední strana programátoru
Obr. 12 Zadní strana otevřeného programátoru
Oživení Postup oživení rozdělíme do několika základních kroků. 1. Nahrání boot loaderu do nového procesoru 2. Spojení se s procesorem pomocí AVRProg 3. Zavedení aplikačního programu 4. Zavedení dat do EEPROM procesoru 5. Kontrola funkce programátoru 1. Tento krok je asi nejkomplikovanější pro bastlíře, kteří nevlastní jiný programátor, ten je potřeba k prvotnímu naprogramování boot loaderu do procesoru. Tedy pokud nemáte možnost prvotního naprogramování a neváhejte mě kontaktovat a já Vám naprogramovaný procesor zašlu. Stáhněte si soubor „BootloaderDL5NEG-Biprog.hex“ z internetu na adrese: http://web.quick.cz/ruckl/biprog/components/BootloaderDL5NEG-biprog.hex. Ve zdrojovém souboru „BootloaderDL5NEG-biprog.asm“ je detailně popsáno jakým způsobem nastavit Fuse bits a Lock bits. Na výše uvedené adrese je uvedeno nastavení pro různé programátory (např. Ponny prog). Já jsem ovšem použil programátor SuperPro, který prodává firma GM. Na obrázcích je vidět nastavení.
Obr. 13 a Obr. 14 Nastavení Fuse bits 2. Pokud download a verifikace proběhne v pořádku, vložíme procesor do patice našeho programátoru. V počítači si připravíme ikonu AVRProg tak, aby bylo možné program co nejrychleji spustit. Stiskneme tlačítko na Biprogu a zapneme napájení, tím se spustí boot loader procesoru a čeká na příchozí komunikaci s PC. Tlačítko můžeme uvolnit a rychle spustit AVRProg. Pokud program nahlásí chybu viz. Obr. 15, může to znamenat hned několik možných závad. Buď chyba hardwaru – překontrolujeme zapojení, hlavně pak zda máme správně signály Tx/Rx, to lze ověřit například díky programu RSDEBUG.exe, ve kterém lze zatrhnout políčko Tx a tím by se na 2.pinu procesoru mělo měnit napětí. Obr. 15 Chyba
A nebo se může jednat o softwarovou chybu. Nejprve zkontrolujeme ve správci zařízení nastavení rychlosti komunikace a čísla připojeného COM portu.Rychlost musí být minimálně 115200 bit/s a číslo portu musí být v rozsahu COM1-COM4, je to z důvodu, že AVRProg testuje pouze tyto porty. Dále může být závada na straně procesoru a to hlavně v nastavení Fuse bits týkajících se vnitřního oscilátoru procesoru. 3. Po navázání komunikace programátoru s AVRProg, se otevře okno pro zavedení soborů ve formátu HEX. Postup zavedení je zřejmý z Obr. 16. Jako první zavedeme soubor biprog1_4.hex do paměti Flash
Obr. 16 Nahrání aplikační vrstvy a paměti EEPROM 4. A poté soubor biprog1_4-0A.eep do paměti EEPROM. 5. Nyní přemneme resetovaní jumper do pozice běžného provozu. Tlačítko na Biprogu slouží pouze k přepnutí do režimu Boot Leaderu po zapnutí napájení. Na programátoru, bliká LED 1 (čekání na příkaz) a svítí LED 5 (bez činnosti) a jedna z LED 2/3(úroveň resetovacího signálu). V této chvíli je programátor zcela připraven k použití.
Závěr Myslím, že u precizní práce, při výrobě, nebudou s programátorem absolutně žádné problémy. Podle mého názoru se jedná o jeden z nejkvalitnějších programátorů v nekomerční sféře. Veškeré utility, soubory a nákresy potřebné k výrobě, jsou ve složce software. Součástky na programátor vyjdou zhruba na 200kč.
Použitá literatura [1] http://web.quick.cz/ruckl/biprog/biprog.html [2] www.atmel.com/atmel/acrobat/doc2486.pdf [3] www.gme.cz [4] http://www.8bitu.cz/clanek/obvod-max232/ [5]Matoušek, D.: Práce s mikrokontroléry ATMEL AVR
Seznam součástek R1, R2, R3, R4, R5 R6, R12 R7, R8, R9, R10, R11 C1, C5, C6, C7, C9 C2, C3 C4, C12, C11 C10 D1 B1 Q2 IC1 IC2 IC5 X1 SV4 JP1, JP2 TL1
100 Ω 47k Ω 1,5k Ω 10 μF/10V 27 pF 100 nF 220μF/16V 1N4007 B250C1500 7,3728MHz MAX232 7805 ATMEGA8-16PU (nebo 8PU) CAN 9 Z G MLW10G S1G36 2,54mm P-TACTN68