ISP programátor

(vloženo 2.4.2008)

aktualizace článku 12.10.2010 - přidán popis nového SW ISP programmer, který podporuje více typů procesorů

 

   Protože doba klasických programátorů je dávno pryč a mikroprocesory, podporující ISP programování jsou stále dostupnější, rozhodl jsem se podle jednoduchého návodu z Internetu pro stavbu tohoto přípravku. ISP znamená In System Programming, tedy programování přímo v aplikaci - není nutné mikroprocesor vyjímat a vkládat do patice programátoru. Programátor se pouze propojí s cílovou aplikací, kde je již osazen programovaný procesor.

    Připojuje se na LPT port a ovládá se jednoduchým softwarem. V podstatě se nejedná o programátor, ale pouze o oddělovač sběrnice, který zabraňuje poškození samotného LPT portu vlivem zkratu nebo přepětí. Principiálně by tedy bylo možné naprogramovat procesor přímo z LPT. Programátor je schopen programovat všechny obvody a paměti podporující ISP, já jej využívám zejména pro ATMEL 89S51 (totéž jako 89C51 ale s ISP).

Schéma zapojení ISP programátoru

Popis zapojení:

    Původní schéma programátoru pochází z konstrukce na serveru www.hw.cz, kde jsou uvedeny i všechny obvody, které programátor podporuje. Zapojení je velmi jednoduché, obsahuje pouze oddělovač sběrnice 74244 (použít lze libovolně 74LS244, 74HC244, 74HCT244 a další). Jako vstupní konektor jsem použil Canon 25pin. (samici), protože jsem jej měl k dispozici. Kabel na propojení s PC jsem proto musel udělat křížený. Lepší je samozřejmě použít 25pin. samce a s PC programátor propojovat pouze prodlužovačkou. Pozor ale na špatně očíslovaný konektor ve schématu. Pin 14 je totiž pod pinem 13 (spodní řada je nakreslena zrcadlově). Na desce plošných spojů je vše správně.

    V původním návodu jako ovládací software používají PonyProg 2000, v závěru je však uvedena poznámka, že právě tento však procesory 89S51 nepodporuje. S použitím programu ISP Flash Programmer je prý programování možné, avšak není úspěšné napoprvé. Důvodem údajně měl být příliš dlouhý kablík z programátoru do desky s procesorem (max. délka 15cm.).

    Po sestavení jsem však zjistil, že programátor funguje zcela náhodně, někdy vůbec.. bez ohledu na délku kablíku. Pravý důvod jsem nalezl důkladnějším rozebráním schématu (zde uvedené schéma je již překreslené). V původním schématu je totiž rezistor R1 s odporem 100k zapojen proti GND, což je při použití "jednapadesátky" nesmysl. Každý port dokáže spínat pouze úroveň GND a kladná úroveň (log.1) je nastavena vnitřním zdvihacím rezistorem. Ten má však poměrně vysoký odpor (výstupní proud může být ve stovkách uA). Pokud zapojíme na port rezistor 100k proti GND, toto napětí se sníží těsně k vyhodnocovací hranici. Proto někdy programátor fungoval, někdy ne (hlásil chybu ověření dat - zapsal do paměti a zjistil, že zapsaná data nesedí). Pro čtení z paměti se totiž používá port MISO, po úpravě je použit rezistor 10k proti Ucc. S touto úpravou jsem vyzkoušel kablík libovolné délky bez nejmenších problémů. Deska plošných spojů však nebyla překreslena, R1 na ní není osazen, ale je v provedení SMD na straně spojů.

    Programátor se připojuje k DPS přes zlacené kolíky, na kterých musí mít procesor vyvedených 6 pinů (MISO, MOSI, CLK, RST, GND a +U). Samotný programátor je tedy napájen z DPS s mikroprocesorem. Protože používá i RST (reset), je třeba desku tomuto přizpůsobit a umožnit programátoru resetovat procesor.

  

ISP Flash Programmer:

 

    Ovládání programu ISP Programmer 3.0a je jednoduché a intuitivní. V horní části vybereme typ programovaného obvodu, můžeme nastavit Lock bity, kterými se uzamkne paměť pro čtení. Pak do ní lze zapisovat, smazat, ale nelze přečíst nahraná data. To je vhodné, pokud bude procesor osazen např. v zákaznické aplikaci a chceme zamezit zkopírování programu. Lock bity se nahrají tlačítkem Write LBs. Tlačítkem Read načteme celý obsah paměti, zobrazíme jej tlačítkem Disp Buffer. Write je zápis programu do paměti, Signature ověří komunikaci s programátorem a zároveň vyresetuje procesor. Lze tedy použít jako reset. Reload file znovu načte soubor, který chceme programovat. Tlačíkem Verify můžeme otestovat paměť - zapíše se do ní vzrůstající posloupnost čísel a ověří se zda souhlasí zapsaná a načtená data.

 

ISP Programmer:

 

    Mnohem univerzálnějším programovacím sw je ISP Programmer. Zatímco výše uvedený sw dokáže programovat pouze pár obvodů, tento má možnosti mnohem širší. Narazil jsem na něj při požadavku na naprogramování procesoru 89S2051, tedy sériově programovatelné 2051.

    Nejprve jeho nastavení - klikneme na ikonu Setup

 

 

    V Setupu vybereme programátor. Je dokonce možné ručně si přiřadit signály RESET, MOSI, MISO, SCK na bity portu LPT, avšak po výběru STK200/300 Evaluation Board je software správně nastaven na náš programátor. Potvrdíme OK a vrátíme se na hlavní panel. Zde vybereme ze široké škály obvod, který budeme programovat. Kliknutím na Read Signature načteme typ "hlavičku" daného obvodu a tím vlastně ověříme, že programátor s obvodem komunikuje. Dále postupujeme intuitivně podle požadované akce - Erase vymaže paměť obvodu, Pgm Flash zapíše do obvodu požadovaný program, cestu k němu jsme zadali na řádku "File For Programming Flash". Po naprogramování obvod vyresetujeme ikonou Restart a nastavíme Reset OFF.

Konstrukce:

    Desku programátoru jsem upravil pro vestavění do krabičky U-KM19. U ní je pouze vypilován otvor v čelní stěně a otvor pro plochý kabel vzadu.

 

Ke stažení:

 

== tato stránka se nachází na adrese www.djpeak.cz ==