Jste zde

Emulační adaptér x51 - Úprava konstrukce z AR 3/99

Uvedený příspěvek popisuje problém konstrukce ISP redukce, uveřejněné v Amatérském rádiu 3/99 a

představuje možné řešení problému.

Když jsem uviděl v AR (Amatérském Rádiu) 3/99 konstrukci „Emulační adaptér i51“ ihned se mi zalíbila. Adaptér je vhodný pro výuku a vývoj na jednočipových počítačích řady 51 v pouzdře DIL40. Lze s ním totiž naprogramovat ISP procesor přímo v zapojení bez nutnosti vyjímat IO. Cenově je zařízení velmi přístupné. 

Bohužel jsem však netušil , co mě čeká a na základě nabídky v AR jsem si objednal plošné spoje u firmy J.M. – stavebnice. Následovalo dlouhé čekání. Ani po několika urgencích jsem nedostal žádnou odpověď. Tu jsem nedostal dodnes a velké celostránkové inzeráty firmy JM z Amatérského radia zmizely ( ? ) [platí dodnes - červenec 2000]. Nakonec jsem plošné spoje i ovládací program získal přímo od autora konstrukce, podepisovaného jako Kosťa
 

Schéma původní ISP redukce z 3/99

Vzhledem k jednoduchosti zapojení jsem se domníval, že s ním nebudou žádné problémy. Již po prvních zkouškách se ukázalo, že zapojení nefunguje tak, jak má. Ba dokonce, že je  bohužel zcela nepoužitelné. Zjistil jsem, že program se do procesoru nahraje pouze poprvé a dále procesor přestane komunikovat.  Konzultoval jsem závadu s autorem a ten mi sdělil, že se s tímto problémem nesetkal a jemu že zařízení funguje. Ani zkoušky několika procesorů na několika různých počítačích a nepřinesly nic nového. Nezbývalo tedy, než problém vyřešit. 

 


Poznámka redakce HW serveru :

Zde je nutné podotknout, že autor tohoto příspěvku používá ISP (In System Programming) rozhraní emulované pomocí paralelního portu. Rozhraní je tedy tvořeno pouze přímo použitýmy výstupy z paralelního portu. V takovéto konstrukci samozřejmě velmi záleží na tom, jaký máte paraelní port. Proto se může výsledné zapojení s různými porty chovat různě. 
HW server proto doporučuje používat ISP z převodníku RS232/ISP, kde jsou výstupní úrovně genetovány přímo jiným procesorem. - viz. konstrukce programátoru na AVR.HW.cz


Po důkladném prostudování veškeré možné dokumentace jsem na www stránkách výrobce Atmel objevil malý dokument „AT89S/LS8252, AT89S/LS53 Errata Sheet“. Zde se píše , že pokud komunikace při programování neproběhne správně, dojde k zablokování procesoru a  ISP přestane pracovat. Jediný způsob jak procesor „opravit“ je smazat jej v programovacím přístroji ale s paralelním přístupem !!! 
S podobným problémem jsem se setkal již u obvodů AT90S1200. Ty ale přestávaly komunikovat až po několika desítkách naprogramování.

Dalších mnoho pokusů stále nevedlo k vyřešení problému. Domníval jsem se , že je chyba v ovládacím programu. Ten totiž komunikoval s obvodem pouze jednosměrně a neprováděl při zápisu verifikaci. Program jsem tedy několikrát přepracoval a stále nedošlo ke zlepšení. I když se již do obvodu dařilo zapisovat krátké soubory, stále byla komunikace s obvodem velmi nespolehlivá. Úspěšnost zápisu byla tak asi 30% a to jen pro krátké soubory. Při pokusu a zápis delšího souboru vždy došlo k zablokování obvodu. 

Zapojení jsem v zoufalství postupně zredukoval jen na připojovací vodiče a procesor a situace se výrazně zlepšila. V „Errata sheet“ se totiž ještě píše o jakémsi hazardu, který může vzniknout na pinu SCK při přechodu do ISP módu. Po několika desítkách dalších pokusů se vše vyjasnilo. Zjistil jsem, že programovaný procesor je extrémně závislý na strmosti hran signálu SCK. (Později jsem tuto drobnou poznámku objevil v jednom z popisů programátorů stažených z internetu). Ukázalo se, že hrana musí mít strmost alespoň 10 ns ! To ale ještě není  zárukou spolehlivé činnosti. V první fázi jsem zařadil tvarovací obvody 74HC14 do signálu SCK.  Pokud nebyl zapojen analogový multiplexer  4053, zapojení fungovalo spolehlivě. S multiplexerem však zapojení nadále nefungovalo i když jsem jej vyměnil za rychlý typ HC(T)4053 a na osciloskopu nebylo patrné žádné zkreslení signálu po průchodu multiplexerem, spolehlivost programování byla opět nízká. Pravděpodobně je tedy ještě nutné, aby signál SCK byl buzen ze zdroje signálu s velmi nízkou impedancí. 
 

Schéma redukce upravené pro ISP generované z LPT.

Nakonec jsem použil pro signál SCK linkový budič 74HC(T)126 s třístavovým výstupem. Ten je připojen přímo na vývod procesoru SCK bez multiplexeru (viz moje poupravené schéma) a funkce je zcela bezproblémová. Obvod jsem umístil na malou universální destičku před desku simulátoru. 

Po získaných zkušenostech doporučuji odpojit oproti původně zveřejněnému schématu resetovací kondenzátor C1 a také případně odpojit  RESET z emulační patice. To znamemná nepřipojit uvnitř redukce vodič od pinu 9, kterým resetuje laděná aplikace procesor. Musíte pak sice redukci resetovat ručně a neodladíte plně funkce zařízení, ale reset spolehlivě funguje a nezničíte si externím zásahem případně složitý resetovací obvod v aplikaci. Ideálním řešením by samozřejmě bylo přepínat i resetovací vodič, pomocí multiplexeru.. 

Kapacity připojené k RESETu způsobují zpomalení hrany signálu  reset  a vzhledem k možným rozdílům v rozhodovacích úrovní procesoru a obvodu 4053 může docházet k hazardním stavům a tím chybné funkci. Odstraní se tím také možnost kolize LPT portu při připojení do desky s jiným zapojením resetu. 

Po těchto úpravách již procesor „přežil“ několik set přeprogramování, přičemž nedošlo ani jednou k zablokování procesoru. Všechny úpravy doporučuji i pro další zapojení v AR3/99 s názvem „Universální deska pro vývoj aplikací s procesory MCS-51“.
 

Software pro ISP přímo na paraelním portu
Doporučuji použití freeware ovládacího programu  ISPDOS. Zapojení kabelu je uvedeno v dokumentaci ( je náhodou shodné s publikovaným v AR ) . Původně jsem si chtěl napsat nový ovládací program sám . Když jsem objevil a
odzkoušel již hotový ISPDOS ( autor  Wagner Lipnharski ),  tvořit znovu ovládací program by byla zbytečná práce. Program mi plně vyhovuje  a se svojí dnes již nevídanou délkou 3,6 k umí vše potřebné pro dobrou práci s ISP (dokonce obsahuje i schéma připojení ).

Program provádí verifikaci již v průběhu programování, umožňuje i práci s EEPROM pamětí. Pracuje i na rychlejších počítačích ( původní program z AR v Pascalu již bez úpravy nefunguje ) a je možno rychlost komunikace korigovat dle potřeby a podle použitého hodinového kmitočtu procesoru v zapojení.

Zapojení kabelu přímo - bez osazené redukce :
 

+----------------+-----------------+-------+------+-------+
|  PC LPTx DB25  |  AT89S8252 PINS | DIP40 | PLCC | xQFP  |
+----------------+-----------------+-------+------+-------+
|  10 ACK -------<----- P1.6 MISO  |   7   |   8  |   2   |
|   8 D6  ------->----- P1.7 SCK   |   8   |   9  |   3   |
|   7 D5  ------->----- P1.5 MOSI  |   6   |   7  |   1   |
|   6 D4  ------->----- RESET      |   9   |  10  |   4   |
|  25 GROUND ---------- GROUND     |  20   |  22  |  16   |
+----------------------------------+-------+------+-------|
| Note: At89s8252 SPI needs sharp edges at SCK pin. Some  |
| PC parallel cards has high capacitance at the output    |
| pins requiring a 72HCT14 to rebuild those pulses:       |
|                 &nb sp;                    ;                    |
|                 &nb sp; .---- 74HCT14 ----.                   |
|                 &nb sp; |                 |                   |
|      10 ACK -------10  11-----12  13------P1.6 MISO     |
|       8 D6 ---------1  2---@---3  4---@---P1.7 SCK      |
|       7 D5 ---------9  8-------5  6-------P1.5 MOSI     |
|                 &nb sp;                    ;                    |
|             Connect a 1nF cap from (@) to ground.       |
+---------------------------------------------------------+

Poznámka : Program však přistupuje přímo na paraelní port, takže samozřejmě nebude fungovat pod WINDOWS NT a WIN 2000. Problémem může samozřejmě být také použitý paraelní port.

DOWNLOAD



ISPDOS - ispdos.zip (17 kb)
Hodnocení článku: