Aktualizace 23.2.2000
Autor uvolnil zdrojové kódy programu.
Je to nejednodušší verze programátoru, konstruovaná s ohledem na jednoduchost konstrukce a snadnou dostupnost jednotlivých součástek. Programátor je připojitelný rovnou na paralelní port. Software je napsaný v PASCALu, nová verze s použitím TV. Mělo by to fungovat bez větších problémů na první zapojení Obě verze SW podporují tzv. DEBUG mód, jenž by měl výrazně zjednodušit případné oživování. Odzkoušel jsem to na LPT on board z 6x86 VX boardu. S časovacími rutinami jsme si dali opravdu hodně práce, takže to musí fungovat bez jakýchkoli problémů na snad všech počítačích.
Tento programátor je součástí systém LAB-51. Je sice zcela samostatný, ale byl vyvinut jako jeho část....
Zde je článek, který byl vytištěn a elektroinzertu 11,12/96 a připravujeme opětovný výtisk v některém z periodik
Firma ATMEL známá svými FLASH a EEPROM pamětmi přišla v roce 1995 na trh s obdobou procesoru řady 8051. AT89C51 - Což je obdoba Klasické 87C51, obsahující místo klasické paměti typu EPROM paměť typu FLASH. V tomto článku chci představit svůj programátor obdobných obvodů v 20-ti vývodovém pouzdře AT89C2051.
Cílem bylo postavit jednoduchý programátor, který si bude moci každý postavit doma a bude mu fungovat bez větších potíží na první zapojení.
Popis obvodu AT89C2051:
- - Kompatibilita s Intel 8051
- - 2 kB interní programové FLASH (1000 zápisových cyklů)
- - Rozsah napětí od 2.7 do 6 V
- - Plně statické operace
- - oscilátor 0 Hz až 24 MHz
- - Dvouúrovňová ochrana dat
- - 128 bytů vnitřní paměti RAM
- - 15 programovatelných I/O pinů
- - Dva 16. bitové čítače/časovače
- - Analogový komparátor
- - 5 zdrojů přerušení
- - Programovatelný UART - (RS232)
- - 2 úsporné režimy napájení
Jedinou podstatnou inovací oproti standardním procesorům řady 51 je analogový komparátor na pinech P1.0 a P1.1. Jeho výstup je softwarově přístupný na bitu P3.6.
Systém ochrany dat je velmi důkladně propracovaný. U typu AT89C51 je dokonce znemožněno připojit vnější paměť s programem, kterým by bylo možno přenést obsah vnitřní paměti FLASH a tak podobně.
Jedinou nevýhodou tohoto obvodu je malá a nerozšiřitelná paměť programu i dat. Je určen pro jednoduché aplikace, kde není příliš prostoru a mnoho vodičů. Je pouze škoda, že k jeho funkci mu nestačí pouze RC článek pro generování hodinové frekvence, a že ho výrobce nedistribuje také v OTP verzi. Tím by se z něho stal plnohodnotný konkurent k známým RISCovým jednočipovým procesorům firmy Microchip - 16C84/16C54. Poslední dobou se stírají cenové rozdíly (16C54 lze koupit za 50 Kč a 89C2051 za 90 Kč) a díky tomu je čím dál tím oblíbenější.
Dle našich měření se průměrná spotřeba pohybuje kolem 12 mA, nejnižšího příkonu lze dosáhnout kolem hodinového kmitočtu cca 2 MHz, kdy se spotřeba pohybuje kolem 6 mA na samotný procesor (případně + 2mA na miniaturní 7805). Pro nižší frekvence se už spotřeba snižuje naprosto zanedbatelně.
Pokud by jste měli zájem o bližší specifikace, zde je možný download originálního anglicky psaného DATASHEETu v .PDF souboru. Nebo pro bližší informace WWW.ATMEL.COM.
Programovací algoritmus by bylo možno popsat v bodech asi takto :
- 1) Zapnutí napájení pro ATMELa 5 V mezi piny GND a Vcc, piny RST a GND připojit na GND a počkat nejméně 10 milisekund
- 2) Nastavení RST na log. 1 Nastavení PROG (P3.2) na log. 1
- 3) Připojení na piny P3.3, P3.4, P3.5 a P3.7 nastavení typu pogramovacího módu.
- 4) Připojení kód pro instrukci na adrese 000H na port P1
- 5) Nastavení na RST +12V
- 6) Puls do log. 0 na PROG (P3.2) po dobu 1.2 ms
- 7) RST na log. 1 a pro případnou verifikaci na bity P3.3, P3.4, P3.5 a P3.7 nastavit sekvenci pro verifikaci. Data jsou na P1.
- 8) Inkrementování čítače adresy pulsem na XTAL1, připojení dat další instrukce na P1
- 9) Opakování kroky 5 až 8 dokud nepřekročíš 2 kB, nebo nenaprogramuješ celý soubor
- 10) Vypínací sekvence: XTAL1 na log. 0 RST na log. 0 Odpoj napájení obvodu
Během programování není vhodné čekat danou dobu 1.2 ms, výhodnější je číst místo toho kontrolní pin P3.1 RDY/BSY. Jenom tak je možno zajistit naprogramování skutečně všech obvodů.
Velikost jednotlivých impulsů
Časový diagram pro programování a verifikaci
Funkce programátoru :
Na obvod atmel jsou přes oddělovací latche (obvody 574) připojeny nastavovací úrovně a data. Čtení dat a verifikaci zajištuje obvod 74157 - čtyřnásobný multiplexer, umožnující číst 8 - mi bitové slovo přes 4 vstupní bity paraelního portu. Přepínání, zda pracuji s horním nebo spodním niblem dat, se ovládá bitem 6Q na pinu 14 systémového latche 574. Za povšimnutí dále stojí využití svítivých diod, jednak pro snížení napětí, tak pro identifikaci probíhajícího děje. Tranzistory KF517 spínají programovací napětí pro paměť FLASH uvnitř procesoru, dioda D1 odděluje obě napětí a chrání tranzistor pro spínání 5V. V případě používání externího napájecího zdroje s napětím +5 a +12 V je zbytečné, ba nežádoucí, osazování obou stabilizátorů 7812 a 7805, protože připojením napětí na výstup zbytečně odebírají proud. Plošný spoj je navržen na toto zapojení, ale jak se lze dočíst na konci článku, v některých případech je lepší použít jiné zapojení pro spínání napětí...
Poznámka :
Napájení 7805 a 7812 musí být blokováno na vstupu i na výstupu kondenzátorem 100nF. Tyoto vzhledem k použitému napájení nejsou ve schématu ani na desce umístěny, ale pokud budete mít s napájeníém problém, napře umístěte na vstup i výstup stabilizátorů 100 nF kondenzátory.
Konstrukce programátoru:
Programátor je osazený na dvoustrané desce plošného spoje.
Pro funkci není nezbytně nutné, aby byl tento spoj prokovený, Na desce je pouze několik míst, která je nutno ručně prokovit např. kouskem drátu. - Propojka těsně pod Zenerovou diodou, prokov pod konektorem, prokov mezi obvody 74574 a 74157, 2x pro připojení pinu 15 z 74157. Osobně doporučuji použití neprokoveného plošného spoje pouze těm zručnějším, protože zaletování neprokoveného spoje není jednoduché.
Pro obvod ATMEL 89C2051 doporučuji použít precizní patici, nebo v zájmu snadného vyjímání obvodu je možno použít nouzovou verzi, osadit klasickou patici a do ní vložit ještě jenou, aby nebyla ta zaletovaná příliš mechanicky namáhaná..
V zapojení jsou použity dvě obyčejné LED diody, červená signalizuje zápis, zelená zapnutí napájení pro ATMELa.
Napájení je zajištěno buďto přes externí vstup +5 a +12 V, nebo z alespoň +16V. V případě první varianty, není vhodné osazovat oda stabilizátory, neboť při připojení stabilizovaného napětí na jejich výstup, spotřebovávají asi 50 mA, které mění na tepelný výkon. Proto je při osazování dobré uvážit, jakou variantu napájení budeme častěji používat.
V první verzi schématu byl ještě použit obvod 74573, ale praxe ukázala, že jeho použití není vzhledem ke koncovému zapojení paraelního portu (viz. článek o LPT) je výrazně vhodnější použít oba buffery reagující pouze na hranu a nikoli na úroveň. Výhodnější je tedy použít 2x 8-bitový klopný obvod "D" 74574.
Osazovací plánky a výkresy plošného spoje, jsou v měřítku 10 / 2,5 přiloženy (pro 300 dpi)
Originální velikost je v souboru, připraveném na konci pro download.
Strana součástek :
.
Strana spojů :
Osazovací plán
Rozpiska součástek :
Označení ve schématu | Hodnota |
7812, 7805 | Stabilizátor napětí |
Cannno 25 | Samec - provedení do plošného spoje |
D1 | Libovolná Si dioda - napč. Ka 261 |
INV_T0 | Jakýkoli Si tranzistor, např. KC 237...... |
IO1, IO2 | 74574 - jakékoli provedení |
IO3 | 74157 - V případě použití HCT verze nutno doplnit odpory 10 k na P1.0 a P1.1 |
LED1 | červená LED 5mm |
LED1 | zelená LED 5mm |
PWR_T1, PWR_T2 | Jakýkoli Si tranzistor, např. KC 237...... |
R1 | 1k |
R2 | 2k2 |
R3 | 1k |
R4 | 2k2 |
R5 | 390 |
R6 | 470 |
R7 | 470 |
R8 | 2k2 |
R9 | 2k2 |
T3 , T4 | PNP - např. KF 517 |
ZENER6.8 | Zenerka 6V8 - Imax minimální = max. 10mA |
Napájení | 5x pájecí špička |
Důležité upozornění : Vzhledem k neidentifikovatelným stavům na LPT po předchozích aplikacích je nezbytně nutné, aby jste napájení pro programátor zapínali vždy až po spuštění ovládacího programu. V konstrukci jsme se snažili tento vliv maximálně omezit, ale nikdy se to nemůže v zájmu jednoduchosti podařit stoprocentně. Např. rezidentní programy pro tisk mohou totiž uvést LPT před startem programu do téměř libovolného stavu.
literatura: [DATASHEET ATMEL AT89c2051]
Několik lidí nezávisle na sobě reagovalo, že při ladění si všimli, že část spínající napájení není udělána zrovna "košér". Díky nezdolnosti Atmelu to přesto funguje, ale jejich názor sem přikládám, protože mají naprostou pravdu. Je tam rozebráno co a jak a autorovi děkuji. : atm_doc1.txt
Download všeho potřebného
Starou verzi softwaru včetně zdrojáků, komunikačních rutin si můžete stáhnou tady: Atmel programátor (Varuji vás, editace zdrojového kódu v .PAS souborech je na vaše vlastní nebezpečí, tato verze vznikla za jednu dlouhou noc...)
Výrobní dokumentace - atmel_2051.zip - je samorozbalovací archiv, obsahující veškerou dokumentaci, včetně .GIFů plošňáku a .BRD a .SCH souborů pro EAGLE 2.6 a vyšší.
Nová verze používající Turbovision - update únor 2000
Novou verzi SW, napsaného v TurboVision, si v plné verzi s helpem a s úplně dodělanými grafickými detaily a podporou rychlých procesorů můžete nyní stáhnout tady: progatm_.exe. Tuto verzi po mých úpěnlivých prosbách spáchal Tomáš Edison Dresler, za což mu tímto převelice děkuji.
Zdrojové kódy Vzhledem k tomu, že se již vyskytlo několik problémů s novým programovým vybavením, které se nám bohužel nepodařily na naší HW základně reprodukovat, rozhodl se autor zveřejnit zdrojové texty programátoru. Tím umožňuje veřejnosti vyladit SW tak, aby pracoval "na míru" a spolehlivě.
Chtěli bychom vás poprosit, abyste případné úpravy vedoucí ke zvýšení spolehlivosti programu zaslali kvůli archivaci autorovi software. Předem děkujeme.
Zdrojové kódy jsou vydány jako freeware, se všemi právy a povinnostmi z tohoto statutu pro uživatele plynoucími.
Zdrojové texty jsou optimalizovány pro Borland Pascal 7.0 a jednotku CRT upravenou pro rychlé procesory.
Zdrojové texty české verze Programátoru ATMELů
Zdrojové texty anglické verze Programátoru ATMELů
Komentáře
Schéma opravy
Konštrukcia ma celkom zaujala, ale aj s najväčšou fantáziou si neviem predstaviť opravu v schéme napájania súbor atm_doc.txt od p. Roberta Svarca.
SW pro programátor
Jestli tedy není lepší koupit si knihu pana Matouška (vyšla celá edice o Atmelech),
kde je uvedena konstrukce programátoru ATprog včetně kvalitního software.
http://shop.ben.cz/Produkty.aspx?lang=cz&aut=MATOD1
tj. např.
Práce s mikrokontroléry ATMEL AT89C2051
Pochvala
Programátor jsem postavil podle plánku a funguje perfektně. Úprava napájení almelu nebyla třeba.