Historie vzniku programátoru AT-master

Záložky:   Rozhodnutí - Slepice nebo vejce ? - 1. změna - Realizace - 2. změna

I) Rozhodnutí
Koncem června roku 2003 jsem zjistil, že už se neobejdu bez programátoru 40-pinových procesorů Atmel
(v dalším textu budu říkat 40-pinovým procesorům "velké" a 20-pinovým "malé") a nějaký dospělý
programátor si musím pořídit (zatím jsem měl jen programátor malých Atmelů).


Požadavky, které měl programátor splňovat, byly následující:
1) programátor musí umět programovat bez redukce čipy jak velké, tak malé,
2) všechen potřebný SW musí být dostupný bezplatně,
3) programátor musí být k PC připojen pomocí sériového portu (tj. musí být "inteligentní";
časování nesmí být závislé na hardware PC),
4) programátor musí jít snadno amatérsky vyrobit (nesmí používat oboustranné plošné spoje).

Nejdříve jsem samozřejmě hledal na internetu, ale žádná konstrukce nesplňovala všechny moje požadavky.
Proto jsem se rozhodl pro konstrukci vlastní. Velkým omezením pro mne však je, že neumím vytvářet
programy pro PC. Proto jsem se rozhodl za základ mého zapojení použít konstrukce Easy Downloader 1.1
a Easy Downloader 2.0 od Wichita Sirichote. Z informací, publikovaných na jeho stránkách, se totiž dal
odvodit komunikační protokol, používaný mezi PC a programátorem. Díky tomu jsem si mohl postavit vlastní
hardware (nazval jsem ho AT-master) a k němu použít hotový obslužný SW (ezdl4.exe).


II) Co bylo dříve - slepice, nebo vejce ?
Na nepájivém kontaktním poli jsem "zadrátoval" svůj AT-master. Ale co dál? Neměl jsem čím
naprogramovat master procesor, který by ho řídil. Představte si malou domácí elektronickou "laboratoř",
umístěnou v obýváku. K dispozici jsem měl pouze svůj programátor TSP-IC a programátor malých Atmelů.
Dnes už vím (viz IIb), jak jsem mohl postupovat jednoduše, ale ve chvíli, kdy jsem byl před tento problém
postaven, jsem zvolil zbytečně neschůdné a složité řešení:

IIa) Jak jsem to neměl dělat, ale dělal
Na jiném kontaktním poli jsem zadrátoval druhý - provizorní AT-master, kde jako master fungoval malý
Atmel. Pomocí funkčního programátoru malých Atmelů jsem nejprve odladil firmware pro
programování (zatím také pouze) malých Atmelů. Jakmile mi provizorní HW fungoval pro malé Atmely,
doplnil jsem zapojení o čítače pro adresování AT89C51 a firmware jsem příslušně upravil. Celkově jsem
po relativně dosti hodinách ladění dospěl do stadia, kdy takto zapojený provizorní AT-master dokázal
naprogramovat AT89C51. Nyní jsem tedy měl funkční (i když provizorní) programátor velkých Atmelů
(= slepici). Pomocí něj jsem konečně mohl programovat procesor do skutečného AT-mastera
(= vejce, z kterého také měla být slepice).

IIb) Jak jsem to měl dělat, ale nedělal
Kdybych již tehdy věděl to, co vím dnes, byl bych ve stejném stadiu jako při postupu podle bodu IIa
mnohokrát rychleji: Postup je velmi jednoduchý. Místo AT89C51 je třeba použít AT89S8252. Ten je sice
o něco dražší, ale zato má jednu velice důležitou vlastnost. Je ho možno naprogramovat nejen v režimu
paralelním, ale také v režimu sériovém (ISP). Stačilo tedy použít TSP-IC, udělat si jednoduchou redukci
a "vejce" by bylo za několik minut (!) hotové.
Na stránce TSP-IC je fotografie, znázorňující připojení AT89S8252 k TSP-IC.

III) Změna
Nyní jsem tedy měl jednak čím programovat, jednak použitelné části firmware a tak už za relativně
krátkou dobu jsem "dokončil" vývoj a chtěl se pustit do návrhu plošného spoje a konečné realizace.
V tu chvíli však (naštěstí) nastal zlom. V katalogu GM electronic jsem totiž zjistil, že procesory AT89C55
jsou nahrazeny novějšími AT89C55WD s jiným programovacím algoritmem. Stáhl jsem si příslušný
datasheet a zjistil jsem, že se stávajícím AT-masterem by procesory AT89C55WD programovat nešly.
Důvody byly tři:
- nedostatek ovládacích pinů na master procesoru,
- nemožnost přepínat napájecí napětí z 5V na 6,5 V (a také ho vypínat) a
- nemožnost generovat krátký (200 až 500 ns) programovací impuls.
Usoudil jsem, že konstruovat programátor pouze na procesory, které už se nevyrábějí nebo brzy
přestanou vyrábět, je nesmysl. Bylo jasné, že AT-master musí umět programovat i AT89C55WD.
Přemýšlel jsem tedy, jak co nejjednodušeji zapojení upravit. Ze všech možných řešení jsem nakonec
zvolil doplnění přístroje mikroprocesorem AT90S1200. Ten má dva úkoly. Jednak přebírá funkci
brány P1 masteru, tj. ovládá celou bránu P1 programovaného procesoru (platí jen pro velké procesory),
jednak generuje požadované krátké impulsy. Po uvolnění brány P1 masteru tu najednou byl dostatek
volných ovládacích pinů. Tři jsou vyhrazeny na řízení AVR procesoru AT90S1200, další potom
pro navýšení počtu ovládacích signálů pro nový programovací algoritmus a pro ovládání napájecího napětí
slave procesoru.
Poznámka:
právě teď 25. 9. 2003 (když připravuji tyto www stránky) jsem zjistil, že existuje také
Easy Downloader 3.0, který Wichit Sirichote navrhl pro 89C55WD. Na rozdíl ode mne si autor
ale nedělal žádné násilí s generováním krátkých (200-500ns) impulsů. Tento údaj považuje pouze
za minimální délku impulsu, i když z datasheetu výrobce to vůbec nevyplývá !!!
Snad někoho moje konstrukce zaujme i tak ...


IV) Realizace
V předchozím odstavci jsem uvedl, že jsem hledal co nejjednodušší úpravu a rozhodl se pro AT90S1200.
Slovo nejjednodušší se zde však vztahuje výhradně k HW - kromě běžných součástek pro přepínání
a vypínání napájecího napětí přibyl do zapojení vlastně pouze jediný integrovaný obvod. O co jednodušší
je HW, o to složitější je SW. Pro mne toto řešení totiž znamenalo úplně od píky začít s procesory typu AVR.
Do té doby jsem pouze věděl, že existují. Nastudoval jsem tedy instrukční soubor, na internetu vyhledal
příklady jednoduchých aplikací a začal s prvními experimenty. Naštěstí požadavky na SW pro AT90S1200,
použitý v programátoru AT-master, byly poměrně primitivní. Relativně brzy jsem tedy mohl přistoupit
k odladění spolupráce AT90S1200 s AT89C51. Nelze tvrdit, že to šlo hladce, ale asi v polovině srpna 2003
bylo možné pokročit ještě dál - začít přepisovat všechny rutiny, které bylo třeba po doplnění AT90S1200
do AT-mastera upravit. Jakmile se AT-master, sbastlený na nepájivém kontaktním poli, zdál být funkční
(úpravy hodnot některých součástek během vývoje byly nutné), navrhl a zhotovil jsem plošné spoje obou
pater a postavil jsem první prototyp.


V) Druhá změna
Protože prototyp fungoval dobře, začal jsem se připravovat na publikování výsledného schema, plošných
spojů a SW, ale hned na začátku jsem tuto práci přerušil. Napadlo mne totiž, jak s téměř nulovým navýšením
nákladů výrazně zvýšit užitnou hodnotu AT­mastera. Můj nápad spočíval v tom, že AT-mastera vybavím
možností upgradovat jeho firmware pomocí ISP. Tato myšlenka znamenala sice jen nevelkou změnu
v zapojení (doplnění o dva jumpery a jiné využití některých pinů master procesoru), ale zato značnou úpravu
plošných spojů. Přesto jsem do toho šel a úpravu realizoval. Výsledek mého snažení vidíte na těchto stránkách.

Úvodní stránka
Hlavní stránka AT-mastera
Ruční řízení AT-mastera
Komunikační protokol AT-mastera
Programátor TSP-IC
Jakékoliv ohlasy a otázky pište prosím na adresu: lubos.ruckl@quick.cz
Aktualizováno: 14. 10. 2003