Jak dostat program do jednochipu.

Jelikož jsem se setkal s dotazem, jak vlastně program dostat do jednochipu, reaguji na to tímto článkem. Dále zde popisuji fintu nejen pro programátor popsaný na jiném místě těchto stránek.

Co budeme potřebovat ?

Budeme potřebovat program, který do jednochipu chceme vložit, jednochip do kterého program vložíme a programátor, kterým vložíme program do jednochipu (počítač je dnes samozřejmostí). Jaký jednochip použijeme, jaký je to program a jakým typem programátoru vložíme program do jednochipu je z tohoto pohledu vlastně jedno. Vždy jde o stejný proces, jen se liší použitým způsobem.

Jak to udělat ?

Nejprve si připravíme programátor. Jestli jsme si ho postavili či koupili hotový je zde zase nepodstatné. To znamená připojíme programátor k počítači (většina programátorů se používá s počítačem) v nezapnutém stavu. Všechno zapneme a spustíme program pro ovládání programátoru. Pokud program používáme poprvé, pak možná bude nutné nastavit si v něm port, přes který programátor komunikuje s počítačem. Nyní si otevřeme tímto softwarem program. Program musí být přeložen, zvykem se stalo do formátu Intel Hex, tedy s koncovkou HEX. V tomto formátu bývají uvedeny i výpisy v různých časopisech a to z důvodu, že obsahují kontrolní součty a tudíž se chyba v dobrém softwaru pro programátor projeví hned při pokusu o otevření tohoto souboru. Nyní potřebujeme do programátoru vložit vypalovaný (programovaný) jednochip. Vložení do patice programátoru bychom měli vždy provádět až když je programátor napájen, počítač zapnut a je spuštěn ovládací program k programátoru se správně nastaveným portem pro komunikaci s programátorem a nastaven typ programovaného chipu. Je tomu tak u všech solidních programátorů. Je to z důvodu, že programátor se může nacházet po připojení napájení v různém stavu a ovládací program uvede programovací patici do klidového stavu, tedy do stavu bez napětí. Některé hodně jednoduché konstrukce programátorů nemají vypínání napájecího napětí programovaného chipu a tak je patice pod napětím vlastně stále. Osobně si myslím, že takové konstrukce nestojí za nic a je lépe se jim vyhnout. Opakuji, patice musí být při vkládání programovaného jednochipu absolutně celá vypnuta, nebo celá ve stejné úrovni. Pokud jste programátor zakoupili hotový, nebo jej sestrojili dle nějakého návodu, pak je dobré se držet návodu. Pokud jsme tedy jednochip vložili do patice, jsme připraveni s ním provádět nějakou akci. Budeme jej tedy číst, zapisovat nebo u některých typů mazat. Většina jednochipů je v provedení OTP, tedy se dají vypálit jen jednou a tak je třeba si vždy dobře rozmyslet, co vlastně chceme dělat. Programovaný chip nikdy nevkládejte do patice dříve, než je Vám jasné co budete dělat. Velice rozšířené jsou i jednochipy s FLASH popřípadě EEPROM pamětí, které se dají mazat elektricky, tedy programátorem. Některé typy s EPROM lze mazat jen UV zářením. Co se týče různého software je ovládání většinou dost podobné. Buď si požadovanou funkci zvolíte z menu, nebo nějakým tlačítkem a nebo jsou jen ve tvaru příkazového řádku. K jednoduchým typům programů pracujícím pod okny není většinou potřeba ani návod, mají přímo tlačítka na obrazovce, jako např. WRITE, READ, ERASE, VERIFY apod. Na co je třeba ještě pamatovat, jsou konfigurační bity, které do značné míry ovlivňují chování jednochipu. Jejich volbou nastavujeme například ochranu chipu proti čtení, typ oscilátoru apod. Je třeba věnovat pozornost nastavení těchto parametrů před vypalováním - ne všechny typy umí nebo mohou si vzít jejich nastavení z HEX souboru a HEX soubory velice často tyto parametry ani neobsahují. U některých jednochipů se tyto cfg bity ani neváží ke konkrétnímu paměťovému místu (programují se jinak), tedy není ani dost dobře možné je do HEX souboru umístit. Pak otevřením námi zvoleného HEX souboru, nastavením konfiguračních bitů a stiskem správného tlačítka se vlastně provede celý proces programování (nebo verifikace, čtení či mazání).

Software a hardware pro PIC.

Na těchto stránkách můžete také najít programátor PIC. Není nijak závratně dokonalý a také není nijak složitý. Jeho výhoda je v kompatibilitě s "TAIT Serial Programmer". U uvedeného programátoru je i software pro programování PIC12C5xx. Psal jsem jej v době, kdy jsem ještě neznal program IC-PROG. Je to moc hezký program podporující velké množství typů PIC firmy Microchip. Pokud si jej stáhnete a vyrobíte si zde uvedený programátor, stačí po spuštění IC-PROG stisknout F3 a nastavit "TAIT Serial Programmer". Všechny vstupy i výstupy pracují tak, že není třeba v checkboxech zaškrtávat inverzi ničeho v boxu "Communication" - tedy ponechat vše nazaškrtnuto. Zvolit správný port je samozřejmostí. Tato kombinace programátoru a programu pracuje velice dobře. Pokud Vás teď napadlo, že mám vyvedenu jen patici pro DIP8, pak následuje mé řešení.

Malá finta se ZIF paticí.

Zakoupil jsem univerzální patici TEXTOOL40UNI (ZIF), dají se do ní vkládat obvody v DIP pouzdrech různých velikostí, a konektor se 40-ti piny, který se v PC používá pro připojení disků k IDE na základní desce, tedy MLW40G. Tento konektor jsem propojil 40-ti dráty tak, aby při pohledu do patice a do konektoru vývody odpovídaly svou pozicí jedna ku jedné, tedy pohled do konektoru je stejný jako pohled do patice. Tento celek jsem zavřel do obyčejné plastové krabičky, která jej chrání proti potrhání onoho drátování, vlastně jsem dráty pájel až v krabičce, na kterou jsem patici a konektor nejprve upevnil. Z programátoru jsem vyvedl ohebnými dráty potřebné signály na jednopinové KONPC-SPK-1, tedy na konektory které se používají pro připojení jednotlivých pinů LED a tlačítek z krabice PC do základní desky. Mimo Vss, Vpp, Vdd, PGC (GP1), PGD (GP0) a GND jsem ještě vyvedl drát připojený přes 10k odpor na GND a to z důvodu, že například u PIC16C877 je dobré při programování připojit přes 10k odpor k zemi pin PGM (RB3 u PIC16C877) a to z důvodu programování pomocí 13V i ve stavu naprogramování PIC do stavu LVP (programování nízkým napětím). Navíc jsem si vyvedl i stálých +5V, což sice není pro účely programování důležité, ale třeba se někdy bude hodit. No a teď už jen stačí si vzít do ruky PDF soubor z www.microchip.com ke konkrétnímu PICu a přikonektorovat dráty vyvedené z programátoru do 40pin konektoru propojeného s paticí. Když máte patici a konektor vhodně umístěny vedle sebe a dráty vyvedeny různými barvami, pak je takové připojení na správné piny opravdu jen věcí pohledu do PDF a trochy pečlivosti při správném počítání pinů, popř. rozumných značek na drátech a konektoru k patici. KONPC-SPK-1 do konektoru MLW40G (stejný jako u IDE na zákl. desce PC) krásně pasují. Navíc uvážíme-li, že tento přípravek využijí především amatéři, zjistíme nespornou výhodu možnosti využití jedné ZIF patice pro více různých programátorů, protože její cena není opravdu zanedbatelná (pro amatéra nebo studenta rozhodně). Za jedno posezení programuji více různých typů velice zřídka a tak mi nečiní prakticky žádný problém si programátor pro příslušný typ vždy přepíchat. Někteří lidé se dokonce zabývají trvale i jen jedním typem a pak toto řešení nevadí vůbec a dává možnosti do budoucna. Pokud programujete opravdu jen jeden nebo několik typů, pak lze doporučit i přestřižení 40ti žilového kabelu původně určeného pro IDE v PC, připájení správných žil do programátoru a zasouvání celého konektoru najednou. Z programátoru pak může takových konektorů trčet několik, každý polepený nálepkou s typem. Pokud se Vám zdá rozumnější řešení všechno na ZIF zadrátovat několikráte a pak PICy vkládat do určitých pozic patice, nic proti. Já si raději pohraju vždy na začátku s pár dráty a PIC pak vkládám vždy na spodní okraj patice, než pak celou dobu dávat pozor, abych PIC zasunul správně o X vývodů do ZIF posunutě. Ale to už je jen věc vkusu. Jistě takovéto připojení patice není úplně to nejlepší řešení, ale vyhovuje, je plně funkční a ponechává nám možnost využívat jednu ZIF patici pro více programátorů. Nejvíce jej ocení unavený člověk, který vkládá PIC do patice poněkolikáté a protože si ji přikonektoroval ještě neunavený, teď vkládá PIC bez přemýšlení na spodní (nebo kdo chce horní) okraj ZIF. Uvažoval jsem i o přepínání signálů na patici elektronicky, ale pak bych musel napsat celý software pro přepínání a díky složitosti by si to asi nikdo nepostavil, tedy jsem od tohoto šíleného nápadu upustil.

Autorův e-mail: jiri@bezstarosti.cz