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
Download

Programátor Biprog verze 4.2