POLOPROG-1

- polotovar univerzálně-jednoúčelového programátoru s jednočipem x52



POLOPROG je takový polotovar programátoru různých nestandardních (opuštěných) obvodů, které moderní programátory už neumějí. Jedná se zejména o PROM a EPROM paměti, ale lze programovat v podstatě cokoliv. Poloprog je totiž jen takový řídící modul osazený jednočipem Atmel AT89S8253, LCD displejem, tlačítky a disponuje hlavně množstvím vstupů/výstupů. Pro každý programovaný obvod je pak nutné navrhnout a vyrobit speciální modul, který se k těmto V/V připojí a pochopitelně naprogramovat příslušný algoritmus do jednočipu. Moduly vesměs nemají vlastní zdroj programovacího napětí, to je nutné připojit zvenčí, např. z laboratorního zdroje. Není to sice moc pohodlné, ale je to nejjednodušší a Poloprog je pro znalce, nikoliv pro matláky:-)) Jelikož Poloprog napájím ze zdroje pro PMI-80, mám k dispozici kromě +5V i +12V a -5V. Z napětí +12V na desce Poloprogu ještě stabilizuji napětí +5,6V, které používám na VPP při čtení EPROM, zejména 2716. Napětí je k VPP připojeno přes diodu, kde se počítá s úbytkem 0,6V, čili VPP je pak přesně 5V a to 2716 prospívá nejlépe. Jí totiž při čtení nestačí na VPP úroveň TTL, ale vyžaduje napětí 4-5V.

Abych rozšířil počet výstupů, zejména kvůli adresaci programovaného obvodu, je jednočip doplněn dvojicí posuvných shift registrů 74595. Je tak možné adresovat maximálně 16 bitů (64KB) a to pro ty staré obvody bohatě stačí. Komunikace s PC je přes sériový port jednočipu. Jednočip se programuje pomocí ISP programátoru. Takhle to celé nějak vypadá:


POLOPROG
POLOPROG - řídící modul
POLOPROG
POLOPROG - řídící modul

POLOPROG
POLOPROG + různé moduly
POLOPROG
POLOPROG + SRAM modul



Poloprogem podporované obvody

U komerčních programátorů se často dočtete, že podporují tisíce a někdy i desetitisíce různých obvodů. To u Poloprogu neplatí. Poloprog totiž podporuje prakticky všechny programovatelné obvody! Jen si musíte vždy navrhnout a postavit příslušný modul a odladit příslušný software. Ale to je přeci maličkost:-) Ovšem pár "drobných" omezení tu přeci jenom je. Je to hlavně omezení datové velikosti programovaných obvodů. Jde o to, že data určená k programování se nejprve musí nahrát do interní flash jednočipu. Není to tak složité. Martin Lukášek mi svého času naprogramoval PC utilitu (já už programovat pro PC od přechodu na Wokna neumím:-)), která z binárních dat udělá INCLUDE soubor se syntaxí pro x51. Takže stačí jen tento soubor přilinkovat k ovládacímu prográmku Poloprogu, přeložit a přes ISP nahrát. Není to sice tak pohodlné, jako u hotových továrních programátorů, ale dá se to. Jestliže má AT89S8253 k dispozici flash 12KB a necelé 4KB z toho zabírá ovládací software, zbývá na programovaná data cca max. 8KB. Kdyby se napsal jednoúčelový programovací algoritmus, bez menu šaškáren, tak by to mohlo být cca až 11KB. To se nezdá býti moc, ale uvážíme-li použití pro staré a "opuštěné" obvody, kolik jich má větší kapacitu než řekněme 2KB? A stále je tu ještě možnost použít nějaký jiný klon x51 se 64KB flash...

Ale jelikož má x51 nativní sériový port, nabízí se možnost posílat data k programování přímo z PC. Škoda, že ani moderní klony x51 nemají dostatek SRAM. Pak by bylo možné uložit data z PC do SRAM a následně je naprogramovat do zvolené paměti. Je tu ale možnost využít vnitřní EEPROM jednočipu. Úspěšně jsem vyzkoušel posílat data z Hyperterminálu a rovnou je zapisovat do EEPROM při nastavení meziznakové mezery cca 5ms.

Následuje stručný popis hotových i nedokončených modulů pro různé programovatelné obvody. Každý modul má svůj "klíč", takže pokud je připojen jiný modul, než odpovídá aktuálnímu software v jednočipu, je uživatel upozorněn hláškou Wrong Module.



Modul pro bipolární PROM 74xx

Prvním modulem, který jsem si k Poloprogu postavil, byl modul pro programování bipolárních PROM 74188, 74S287 a 74S511:


POLOPROG
POLOPROG s modulem PROM 74xx
POLOPROG
POLOPROG s modulem PROM 74xx


POLOPROG
Programování PROM 74xx
POLOPROG
Programování PROM 74xx


POLOPROG
Programování PROM 74xx
POLOPROG
Programování PROM 74xx


POLOPROG
Programování PROM 74xx
POLOPROG
Programování PROM 74xx


POLOPROG
PROM 74xx modul
PROM Tesla MH 74188
PROM Tesla MH 74188



Knížecí rada k programování PROM Tesla

Jelikož se mi zpočátku programování PROMek Tesla 74xx moc nedařilo, tak jsem se pídil a dostal jsem tuto knížecí radu:

S tou promou... Ohulit napětí se muselo i u nový promy. 1ms impuls fungoval jen na papíře. I v letech 90 kdy jsem je programil byl impuls na programení desítky milisekund. Teploty se neboj, TTL něco vydrží... Propojky netvrdnou, je to kov, spíš bude problém v okolní izovační vrstvě SiO2 případně v zastříknutým plastu. Po odpaření chromový propojky musí kovový matroš se "uložit" do pórů který sou okolo a porézní SiO2 se časem ucpává bordelem z polysetu (to je ten plast, do kterýho se v Tesle zastříkávály IO, používaly se dva jeden byl Polyset - to byla nějaké epoxydová sračka a druhej Hysal, ale ten se moc nepoužíval, aspoň ne, když sem tam byl:-) Některý Promy musíš programit mockrát, než se uráčí držet 1.

Tak jsem si to vzal k srdci a už to frčelo, jak po másle:-) Pro ty, co to nepochopili: programovací napětí uvedené v katalogu Tesly na programování těchto PROM obvykle nestačí. Týká se to zejména 74S287 a 74S511. Nejlépe se osvědčilo přidávat cca 2V. Nesmí se to přehnat, protože, jak mi prozradil jiný insider, může dojít k tomu, že prudce "vystřelený" tekutý kov z přepálené propojky se "nevsákne" do okolního materiálu, ale steče a propojka se opět spojí. Nemusím snad připomínat oč vlastně při "programování" těchto pamětí jde. Jde o přepalování propojek, které daný bit "táhnou" k nule. Nenaprogramovaná paměť má tedy všechny bity v log.0. Přepálením příslušné propojky se tato hodnota změní v log.1 za podmínky, že k výstupu z paměti zvenčí přidáme pullup odpor táhnoucí právě k log.1. Přepálení propojky, je nevratné.



Modul EPROM 2708, 8708 (8608 OTP)

Modul pro programování pamětí EPROM 2708, u nás známé jako 8708, jsem postavil spíše jen tak z povinnosti. Na programování těchto pamětí jsem již dávno měl postavený jednoúčelový programátor, opět s AT89S8253. Ale je fakt, že Poloprog má oproti jednoúčeláku podstatně komfortnější ovládání. K modulu jinak není co dodat. Kromě patice už obsahuje pouze spínač programovacího napětí 26V. Úspěšně jsem vyzkoušel také programování OTP PROM Tesla MHB8606, což bude v podstatě také EPROM 8708 jen bez mazacího okénka.

POLOPROG
Modul 2708, 8708
POLOPROG
Modul 2716, 8755



Modul EPROM 2758, 2716, D2816 a 8755 COMBO

Původně jsem chtěl stavět jen modul pro programování EPROM v COMBO obvodu 8755, který obsahuje 2KB EPROM, 2 paralelní 8-bitové I/O porty a latch pro multiplexovaná data/adresy. Obvod je původně určený pro CPU 8085 a chtěl jsem ho umět programovat z důvodu uvažované stavby repliky jednodeskáče Intel SDK-85. Kromě samotného programování a verifikace jsem též chtěl mít možnost základního otestování obou portů. Modul by pochopitelně měl umět i číst ROM a testovat porty ROM verze 8355.

Poté, co se ukázalo, že můj programátor G540 má problémy s pamětmi EPROM 2716 jsem nakonec modul postavil obojetný, aby, kromě výše popsaného Comba, uměl i tyto paměti. Což se úspěšně podařilo. Stejně jako u modulu pro 8708 jsem i zde úspěšně vyzkoušel programovat PROM Tesla MHB2616. A měly by jít bez problémů číst i ROM 2316. A jakmile se mi dostala do rukou paměť EPROM 2758, což je v podstatě jen 1KB verze 2716, dodělal jsem podporu i pro ni. Od 2716 se liší opravdu jen poloviční kapacitou, jinak je vše stejné.

Později jsem doplnil a vyzkoušel upravenou verzi SW pro programování EEPROM Intel D2816, která na rozdíl od moderních CMOS verzí 28C16, vyžaduje programovací napětí Vpp=21V a jiný programovací algoritmus, než 2716. Funguje to bezvadně. Důležité je, že pokud se neudělá CHIP-ERASE (to bez úpravy stávajícího HW neumím) a přepisují se jednotlivé bajty, je nejprve nutné daný bajt vymazat zápisem hodnoty 0FFh a to i v případě, že tuto hodnotu již obsahuje. Jinak se některé bity nepřeklopí. Ověřeno. Čili se každý byte programuje nadvakrát. Nejprve 0FFh a poté nová hodnota. I tak je to o polovinu času rychlejší programování (2x12ms/byte), než 2716 (50ms/byte). O mazání nemluvě. Šlape to spolehlivě a zkoušel jsem několikero přepisů.



Modul MCU 8748 a 8749

Jelikož mě vždy lákaly jednočipy řady MCS-48, chtěl jsem umět programovat i je. Proto jsem si navrhl a postavil tento modul. Nebylo to jednoduché, protože vzorových příkladů jsem moc nenašel. Takže nezbylo, než poctivě studovat datasheety. Komplikací je, že tyto obvody vyžadují dokonce dvě různá programovací napětí a tyto se ještě liší pro verze HMOS a NMOS těchto obvodů a jiná jsou i pro ROM verze, pokud je chceme číst. Vždy je tedy nutné vědět, jaký obvod programujeme (či čteme)) a podle toho nastavit napětí. Modul vyžaduje jen jedno základní, to druhé (nižší) si "vyrábí" sám. Nakonec se to podařilo a modulem jsem opakovaně programoval MCU 8748 i 8749 NMOS i HMOS různých výrobců a úspěšně dokážu číst ROM verze 8048 a 8049.

POLOPROG
Modul 8748, 8749
POLOPROG
Modul 1702



Modul EPROM 1702

Paměti EPROM 1702 jsou první komerčně prodávané paměti EPROM s mazacím okénkem. Jejich programování je však totální divočina. Vyžadují velmi "vysoké" záporné programovací napětí (-48V) a totální rekonfiguraci pinů mezi čtením a programováním. Proto jsou na modulu dvě patíce. Jedna slouží jen pro čtení a druhá jen pro programování, abych se té rekonfiguraci vyhnul. Hotovou mám jen čtecí část. Jelikož paměť při čtení vyžaduje ještě napájení -9V, je osazen invertující měnič s NE555, který z 12V, dostupných na Poloprogu, toto napětí vytváří. Programovací část je sice navržená, ale není osazená. Sice pár těchto pamětí mám, ale aktuálně je nepotřebuji a jejich programování si chci jen vyzkoušet z hecu, takže mě aktuálně nic netlačí to dokončit... Navíc s modulem bych musel postavit i nějaký zdroj, alespoň 50V/300mA, jelikož vše co mám, je jen do 30V.



Modul TESTER SRAM

Modul pro testování statických RAM různých typů je opět nedokončený. Počítáno je s testováním těchto typů SRAM: 7489, 74S201, 1902, 2102, 5902, 2111, 2114, 2101, 1822, 6116, 6264, 62256, 681000, 684000 a kompatibilních typů. Hotovou mám jen část pro testování "velkých" SRAM 6xxx. Jelikož Poloprog přímo adresuje jen 64KB (16 bitů), je pro větší paměti použit ještě záchytný registr 74175 pro nejvyšší nibble adresy (A16-A19). Testování malých SRAM 74xx umí můj IC tester a ostatní paměti, jako třeba 2114 si můžu otestovat v nějakém hotovém počítači. Takže mě zase nic netlačí to dodělat.

POLOPROG
SRAM modul
POLOPROG
POLOPROG + SRAM modul



Další využití Poloprogu

Samotný řídící modul Poloprogu má však podstatně širší využití, jako obecný řídící systém. Použil jsem ho třeba k testování řezových jednotek 3002 a také k testování dynamických DRAM.


RET



Odladěno na MS IE 8.0 a Firefoxu při rozlišení min. 1024 x 768 pixelů
www.NOSTALCOMP.cz    2010  -  2018