HOME

IC TESTER

tester číslicových integrovaných obvodů řad 74xx a 4xxx



Tento text je opravdu dlouhý a nudný. Ale odměnou za prokousání se jím, vám bude to, že si takový tester budete moci taky postavit, a že ten tester je fakt boží. A taky to že se můžete naučit vytvářet i vlastní testovací sekvence:-) Možná neohromí počtem podporovaných obvodů, jako jiné testery, ale zase podporuje takové, které jinde třeba nenajdete, ale u nás jsou hodně rozšířené. A taky testuje opravdu poctivě. Tak vzhůru do čtení...


Jak to začalo?

Začalo to nenápadně. Někdy na jaře roku 2016 se na Aukru začal pravidelně objevovat tester integrovaných obvodů řad 74xx a 4xxx a já si říkal, že by se mi něco takového docela hodilo. Vzhledem k tomu, že mám těchto integráčů celkem dost, a že občas někam vrazím nějaký starší IO, nebylo by úplně od věci jej před zapájením alespoň částečně otestovat. Jenže to mělo dva háčky. Za prvé byl tester docela drahý (ačkoli cena postupně klesala) a za druhé k tomu prostě nemám důvěru. Je evidentní, že je to číňan a když si promítnu, jak testuje, nebo spíše netestuje, čínský programátor G540 (má režim testu IO - nepoužitený), tak tomu fakt nevěřím. Navíc mě už dlouho lákalo si takový tester vymyslet a postavit sám a tak jsem se do toho pustil.



IC tester
IC tester
IC tester
IC tester


Původní idea

Původní idea byla, že můj vlastní tester bude umět jen pár základních a nejpoužívanějších IO. Řekněme do max. počtu 50 typů, hradla, dekodéry a tak. Jenže co se nestalo. Začalo mě neskutečně bavit vymýšlet ty testovací sekvence. Takže v době, kdy chystám tento text už tester umí více jak 220 obvodů a ještě není konec. Měl jsem kliku, že jsem si hned na začátku navrhl univerzální testovací engine a pak už jen stačilo přidávat nové tabulky a položky menu. Do vlastního programu již není třeba zasahovat. Přidávají se jen data. Nejprve jsem dělal obvody kombinační (hradla, dekodéry, mux/demux, apod), později jsem začal přidávat i obvody sekvenční (klopné obvody, čítače, registry, apod). A právě u těch sekvencí jsem "chytil slinu", protože mě moc bavilo ty sekvence vymýšlet. A v této fázi jsem si uvědomil, že jsem udělal dobře, že jsem nešel do toho číňana. Když si uvědomím, jak jsem se sral s testovacími sekvencemi třeba pro vratné čítače, či posuvné registry, tak opravdu pochybuji, že by se s tím takto sral nějaký číňan...


Prototyp testeru

Prototyp testeru je pochopitelně realizován na vrtané univerzálce. O tom, že jsem to s tím zpočátku nemyslel až tak vážně svědčí i to, že jsem použil čínskou univerzálu na kuprexkartu. To je šmejd, který používám jen na podřadné projekty. A vůbec celé provedení testeru jsem tak trochu odfláknul a teď toho lituju. Nicméně už to nechám tak a doufám, že až se podaří doladit finální verzi software, tak "se" navrhne deska a postaví "se" to znova a pořádně:-)



IC tester
7400
IC tester
7485


Hardware testeru

Základem testeru je (jak jinak) můj oblíbený jednočip řady 8051, resp. 8052. Použil jsem ho jednak pro to, že ho dobře znám, ale také pro jeho specifické kvaziobousměrné porty. Pro testování integráčů se tyto porty dokonale hodí. Kromě jednočipu už tester obsahuje jen 4 tlačítka, LCD displej 16x2 kompatibilní s HD44780, testovací patici ZIF 20 a nějakou tu bižuterii. Můj prototyp obsahuje ještě stabilík 7805 pro napájení z nestabilizovaného adaptéru. Je umístěn pod LCD displejem. Tu 20 pinovou patici jsem dával proto, že jsem menší neměl. Původně jsem chtěl testovat jen obvody v DIL 14 a DIL 16. Ale nakonec došlo i na obvody v DIL 20. V počítačové technice se jich používá dost (různé oddělovače, budiče, latche) a tester to zvládá v poho. Nicméně s paticí mám jiný problém. Je to asi čínská kopie a je to neskutečný šmejd. Už se mi několikrát rozpadla doslova pod rukama. A ne jedna, ale hned dvě. Vždy ji sice dám nějak dohromady (kombinací dílů ze dvou blbých), ale neskutečně to zdržuje...

Spínání napájení a rekonfiguraci pro různé DIL testovaných obvodů zajišťují relé. Je to trochu archaické, ale jednoduché, spolehlivé a prostě to mám raději, než třeba tranzistory (opět negativní zkušenost s G540). Vím, že některé jiné testery napájí testovaný obvod přímo z portu. To by sice šlo, ale jen pro moderní obvody od LS výše a musely by se výrazně snížit pullupy na portech, což zase ovlivní věrohodnost testovnání. Klasické TTL a zejména TTL S jsou na to ale stejně příliš žravé a nešlo by to. Například SRAM 74S201 má podle katalogu spotřebu 140mA, a to je mimo možnosti portu jednočipu. Proto ta relé. Navíc je díky relé testovací cyklus ohlášen i pěkně akusticky, cvaknutím a odpadnutím relé a podle doby trvání přítahu se dá sluchem rozpoznat, zdali je testovaný obvod dobrý či vadný, bez nutnosti sledovat displej:-) Relátka se spínají pomocí PNP tranzistorů a jsou tedy aktivní v log. L. To proto, že 8051 nastavuje při resetu a ISP porty na H, tak aby se to nepotkalo.


Způsob testování

Nad způsobem testování integráčů jsem docela dlouho bádal. Chtěl jsem se vyvarovat zbytečnému přetěžování výstupů IO v případě, že výstup je v H, ale port jednočipu v L. Proto také nemám funkci pro automatickou detekci neznámého IO, protože tam k těmto situacím nutně dochází. A také naopak. Je-li totiž port 8051 nakonfigurován jako výstup v úrovni H, zajišťuje vysokou úroveň poměrně velký pullup odpor (cca 50k). Ovšem během zápisu H na port je tento pullup po dobu dvou cyklů hodin CPU snížen na cca 500R (pro zajištění strmosti náběžné hrany). A budeme-li tuto "jedničku" cpát z portu do výstupu testovaného IO s "nulou", dochází k přetěžování. Sice k velmi krátkodobému, ale dochází. Jenže my ji tam nacpat musíme, protože pokud chceme nakonfigurovat port jako vstupní, musíme do něj právě zapsat tu log. H. Toto mají za úkol alespoň částečně omezit ty malé sériové odpory na každém pinu testovaného obvodu. Větší jsem si netroufal, abych se pak nedostal mimo tolerance log. úrovní, zejména u starých "žravých" IO. Takto to řeší většina testerů, které jsem na netu studoval (ostatní to neřeší vůbec). Já však šel ještě dál. Před zapnutím napájení testovanému obvodu jsou na porty jednočipu zapsány jedničky a porty jsou tak nakonfigurovány na vstup. Teprve poté je zapnuto napájení. Následně jsou z testovacích tabulek načítána data, která představují, jaká úroveň má být zapsána/čtena na ten který pin portu. Pokud se jedná o zápis, tak je port aktualizován pouze v případě, že se úroveň mění, což je jen u vstupů do IO. Mám-li tedy na pinech, které mají být vstupní, zapsánu log. H (která je tam od doby před připnutím napájení), již ji opětovně nezapisuji a tedy nedochází k tomu krátkodobému snížení pullupu. Pochopitelně jiná bude situace v případě, že v patici bude jiný obvod, než je testovací sekvence. Pak se můžou "potkat" vstupy a výstupy. Jak jsem již uvedl, skoro nikdo to neřeší a opravdu se nic neděje. Jen jsem chtěl být víc pintlich a k těm obvodům jsem prostě ještě více ohleduplnější a testuju je ještě šetrněji, než je nutné... Možná jste tomu moc nerozuměli, ale ta předchozí věta je snad jasná.

Když jsem ale později přidával podporu pro obvody v DIL20, musel jsem pro piny 1 a 19 použít jediné dva volné piny z portu P3, na kterém je LCD displej. Proto předchozí tvrzení neplatí právě pro tyto dva piny a zde se i log. H zapisuje vždy. Sice by to výše uvedeným šetrným způsobem taky šlo, ale zase by to bylo crcání se zápisem na displej a zas tak důležitý mi to nepřipadlo, abych se s tím dělal.


Testovací sekvence

Testovací sekvence (tabulky) je věc, na které si dávám opravdu záležet. Snažím se vždy testovat všechny možné stavy obvodu. Ne vždy je to pochopitelně možné (viz. dále v textu), ale u většiny obvodů to jde. Například u čítačů bych klidně mohl testovat jen stavy 0-9 a pak bych spláchnul jednou sekvencí jak BCD tak BIN čítač. V extrémním případě bych pak jedinou sekvencí mohl "spláchnout" 4 různé obvody (160, 161, 162, 163) Ale to ne. Já pro BCD testuju 0-9 a pro BIN 0-F, protože tak je to správné a tak to má být. Nebo 7-segmentové dekodéry. Typy 7447 a 74247 se liší jen zobrazením číslic 6 a 9. Typ 247 u nich zobrazuje tzv. "ocásky", kdežto typ 47 ne (a jsou taky ošklivější). Všechny ostatní stavy jsou stejné a stačila by tedy jediná sekvence, která prostě nebude obsahovat stavy 6 a 9. Ale to ne:-) Další podobný případ jsou multiplexery např. 74151 (2-stavový) a 74251 (třístavový). Liší se pouze reakcí na stav povolovacího vstupu G. Opět by stačila jediná sekvence, bez "disabled" stavu. Ne... Jenže pokud bych pro každý typ obvodu měl vlastní testovací sekvenci v plné délce, už by ty tabulky sahaly z Prahy do Brna. Vymyslel jsem tedy speciální sadu příkazů, kterými měním způsob nakládání s tabulkami. A jeden z nich je i GOTO pro přeskok mezi tabulkami (zlatej BASIC:-)). Takže třeba pro ty 7-seg dekodéry to funguje takto: nejprve se u každého typu otestují stavy 6 a 9 a pak je skok na společnou část pro oba typy. Společná část obsahuje test všech ostatních stavů, vč. lamp test a blanking. Totéž ty multiplexery. Nejprve se testuje reakce na uvolňovací vstup ve stavu disabled, která je různá a poté následuje skok na společnou část, která je pro oba typy stejná. U čítačů s preloadem se nejprve nahraje stav 8, pak se čítne a u BCD se testuje 9 a přetečení (CO). U BIN se čítá až do F a testuje přetečení. Následuje pak skok na společnou část, kde je čítač vynulován a kontrolují se stavy 0-8. U vratných čítačů se pak ještě čítne zpět, následně opět nuluje a zase čítne zpět a je kontrolováno podtečení (BO). Fakt jsem si s tím vyhrál a bylo to někdy opravdu crcání...:-)

V jiných případech se jediná tabulka využívá u celé řady obvodů. Typicky tabulka pro 7400 se využívá u všech příbuzných obvodů, protože testeru je fuk jestli má obvod Schmitta, buffer a výstupy klasické, otevřený kolektor, totem-pole, apod. Takže tabulka 7400 je používána i u 03, 24, 26, 37, 38, 39, 132... Podobná situace je u tabulky 7404. Ta je dokonce použita i u obvodů řady 4xxx (4069, 4584, 40106, apod). Patrné je to v Support listu, kde je u každého testovatelného obvodu uvedena i použitá tabulka.

Jsou však případy, kde není možné testovat všechny stavy obvodu. Typicky u MKO 74121, 122, 123, 130, 221 a dalších. Tyto obvody obsahují vývody, které slouží k připojení pasivních součástek (odporů a kondenzátorů) a tyto vývody nejsou kompatibilní s TTL úrovněmi. Pro tento případ jsem vymyslel příkaz, který umožňuje maskovat nesledované vývody. Při kontrolním čtení testerem jsou tyto vývody vždy čteny jako H, bez ohledu na jejich skutečnou úroveň. Ovšem pak jediné, co u těch MKO můžeme testovat je reakce na nulovací vstup. Je to jen chabá náhražka skutečného testu, ale na druhou stranu snad žádný jiný tester tyto MKO neumí vůbec a tak je to lepší, než drátem do voka... Pro pořádný test je potřeba použít např. nepájivé pole a tam si sestavit plnohodnotný MKO. Dalším příkladem jsou rozšiřitelná hradla typu 7423, 50, 53. Bez příslušného expanderu je plně neotestujeme a expander 7460 nemá výstupy kompatibilní s TTL, takže ho tester nemůže simulovat (co já se s tím namordoval). Je mi jasné, že tyhle obvody už normální člověk dnes nepoužije, ale já zrovna ty 50 a 53 nějaké mám a chtěl jsem je umět testovat:-) Takže je testuji jako obyčejná hradla bez rozšíření a funguje to dobře.

Plně testována není ani SRAM 74S201, protože testovat zápis a čtení do všech 256 buněk je fakt na hóóódně dlouhou testovací sekvenci. Takže je vybráno jen pár buněk a ty jsou testovány. Ze stejného důvodu nejsou plně testovány ani vícebitové čítače (4060, 4040, apod). Jinde zase obvod není plně testován, protože jsem ho neměl a bez něj je tvorba tabulky na pytel. Ale chtěl jsem si ho připravit, tak třeba testuji zatím jen nulování (čítače 7468/69) a až obvody získám, dodělám to. Aby bylo jasné, že daný obvod není testován zcela důsledně, je v menu takový obvod označen hvězdičkou (*).

Posledním příkladem, který bych rád zdůraznil, je test 7-segmentových dekodérů D346 a D348. Tyto obvody z bývalé NDR nemají adekvátní náhradu v řadě 74xx (alespoň o ní nevím). Co je u nich zvláštního, je to, že mají jeden analogový vstup pro řízení svítivosti displeje. Na tento vstup se připojuje odporový dělič (trimr 50k), jímž se nastavuje max. proud jednotlivými segmenty displeje. Měl jsem obavy, zdali k vybuzení výstupů bude stačit log. H z portu. Stačí. Ale mám jeden obvod D346, kde nestačí. S děličem obvod funguje, ale tester ho vyhodnotí jako vadný. Nicméně se jedná o jediný obvod z asi 20 testovaných. Proto jsem tyto obvody v menu označil uvozovkami na konci ("), aby bylo jasné, že i když obvod testem neprojde, nemusí to nutně znamenat, že je vadný. Pak stačí pin 3 odehnout a připojit na dělič, pokud ani poté testem neprojde, je opravdu vadný. Příbuzné dekodéry typu D345 a D347 se liší jen tím, že nemají řízení výstupního proudu. Ten je pevně daný a pin 3 je NC. Tyto obvody tedy tester vyhodnocuje vždy správně. Mimochodem, obvody D34x zobrazují ocásky nejen u 6 a 9, ale také u 7:-) A snad každý ví, že 345 a 346 při stavech A-F zobrazují hexaznaky (proto je považuji za tolik důležité). Obvody 347/348 na stavech A-F zobrazují "hieroglyfy", které se ale liší od hieroglyfů u 7447/74247! A ještě jedno doplnění: D146/147 jsou shodné s 74246/247.

Drtivou většinu tabulek jsem ověřil za pomoci konkrétních IO. Tester ale obsahuje i tabulky, které otestované nejsou (nemám příslušný obvod). Neotestované obvody jsou v menu označeny zkratkou nt = Not Tested! Důvodem, proč jsem tyto tabulky tvořil bylo to, že se mi testovací sekvence zdála býti jednoduchá, nebo že je jen marginálně rozdílná od jiné, již odzkoušené sekvence, a tak jsem se odhodlal k tvorbě naslepo. Nicméně dokud daný obvod nezískám a vlastnoručně neotestuji, bude tam to nt. Překlep se vyrobí hned...

Kromě testování obvodů, je zde i tzv. Selftest, který testuje tester samotný. Při tomto testu je nutné mít prázdnou testovací patici. Selftest tak vlastně testuje jednotlivé piny portů jednočipu, jestli jsme si nějaký neodpráskli:-)

Jak jsem již uvedl, ladění testovacích sekvencí některých obvodů bylo fakt na posrání. Snad nejvíc mě potrápily různé inhibit vstupy u obvodů s hodinami citlivými na hranu. To bylo sraní s tím, fakt... Nicméně jsem se díky tomu o těch obvodech dozvěděl mnohem více, než běžný smrtelník. A vo tom to je:-)



IC tester
Test OK
IC tester
Test Error


Nevýhody testeru

Takto jednoduchý tester má pochopitelně i řadu nevýhod. Za prvé testuje jen staticky na napěťové úrovně. Nevyhodnocují se žádné dynamické parametry, proudové poměry a třeba ani spotřeba testovaného obvodu (a to by se celkem hodilo). Tester testuje jen v TTL úrovních, čili testem úspěšně projdou i obvody CMOS, které mají úrovně mimo své CMOS tolerance, ale ještě v tolerancích TTL. Nicméně pro běžnou práci to nevadí a máme jakous takous jistotu, že osazujeme dobrý obvod. Máme-li nějaký podezřelý obvod, stejně je nutné ho otestovat jinak (nebo spíše rovnou vyhodit a osadit jiný). Někdo možná může považovat za nevýhodu to, že tester neumí rozpoznat neznámý IO. Ono by to šlo, ale z výše popsaných důvodů jsem to nerealizoval. Také by to sežralo další cennou paměť, kterou raději použiju na další testované typy obvodů.

Tester zatím testuje jen obvody se standardním schematem napájení GND vlevo dole a Vcc vpravo nahoře. Nicméně asi přidám ještě paralelní patici pro obvody se schématem á la 7490/93 apod. Bude to jednodušší, než složitě rekonfigurovat napájecí piny v jediné patici.


Výhody testeru

Myslím, že výše uvedené nevýhody jsou vyváženy následujícími výhodami. Tester je stand-alone přístroj. Kromě napájecího adaptéru nepotřebuje nic dalšího. Tester může fungovat jako jednoduchý "elektronický katalog" obvodů, protože u každého obvodu je uvedena základní funkce (teda někde je to fakt těsnopis v ZIPu:-)). Testování obvodů je opravdu precizní, protože jsem si s tím fakt vyhrál. Tester testuje všechny běžné typy IO s úrovněmi TTL i CMOS (ale tam je i nevýhoda, viz. výše). Z hlediska provedení obvodů jsem zkoušel testovat jak klasické TTL a CMOS, tak různá provedení jako S, LS, ALS, F, AC, HC a HCT.

Tester alespoň částečně testuje i obvody, které jiní netestují a pro některé má i zvláštní kategorie (sedmisegmentové dekodéry z NDR). Trochu specifická je samostatná kategorie pro obvody Tesla MH3205, 3216 a 3226. Tyto obvody sice existují i v řadě 74xx (138/405, 416, 426), ale jelikož jsou v československé výpočetní technice zastoupeny opravdu hojně, ponechal jsem jim samostatnou kategorii v menu pro snadný výběr. To jinde také nenajdete. Nicméně tabulky jsou shodné s ekvivalenty řady 74xx. Později jsem do této kategorie přidal i obvody Tesla MHB8282/3 či 8286/7 opět proto, že u nás byly hojně používané v ČS počítačích. Chystám dokoce i exotickou SRAM MH82S11:-)


Jaký jednočip?

Tester jsem původně začal vyvíjet s jednočipem AT89S52. Je levný (dá se i za 3 pětky v r. 2016), spolehlivý, programuje se přímo v zapojení přes ISP a hlavně se programuje rychle. Jenže má jen 8KB Flash. Na původní účel to stačilo a dostal jsem do něj nakonec lehce přes 100 testovaných obvodů. Jenže pak jsem se dostal na strop paměti. Chtěl jsem přejít na 89S8253 s 12KB Flash, ale ten má jednu nevýhodu. Má jen o 50% více paměti, ale přes ISP se programuje asi 4x déle. A to neskutečně zdržuje. Nicméně v době, kdy vystavuji tento text, už tester podporuje více jak 220 obvodů a už přerostl přes těch 12KB (sekvenční tabulky jsou dlouhé). Budu tedy objednávat 89C55, který má 20KB Flash. Nevýhoda je, že neumí ISP a musí se prgat v paralelním programátoru (G540 ho prý umí, tak jsem zvědav). Sice existují i verze 8051 s 64KB interní paměti, ale jsou drahé a obtížně sehnatelné. 89C55 je za rozumný peníz a běžně dostupný. A tím bych rád skončil. 20KB testovacího kódu a dost... Nicméně vyvíjet budu dál na 89S52, kvůli tomu jednoduchému a rychlému přeprogramování a hotové tabulky budu prostě "odkládat" do pracovních souborů a pak to všechno "zlinkuju" dohromady:-) Vidím však v kódu ještě prostor pro úspory cenných bajtů, takže snad něco vyšetřím.


Podklady pro stavbu

Zatím jednočip s velkou pamětí nemám, a tak jediné co prozatím mohu nabídnout je ořezaná verze, určená pro 89S52 (příp. 89C52) s 8KB Flash. Ta je totiž otestovaná. Verze podporuje všechny obvody, pouze řada 74xx je omezena na rozsah 7400-99. Podklady pro stavbu testeru jsou v následujícím PDF. Zapojení je shodné pro všechny výše zmiňované jednočipy. Měnit se bude už jen software. Jakmile bude otestovaná verze softu pro 89C55, dám ji k dispozici.


IC Tester - zapojení


Software pro 89S52 (89C52)


Poznámky k zapojení

Zapojení je jednoduché a nemá žádné záludnosti. LCD displej je zapojen pro 4-bitovou jednosměrnou komunikaci (pouze zápis). Nepoužité datové vstupy DB0-DB3 je možné ponechat nezapojené, nebo je všechny spojit dohromady a přes jediný odpor cca 10-15K připojit na GND. Omezovací odpor u podsvícení displeje je nutné volit podle typu LCD. Některé už ho mají a připojují se přímo na Vcc, jiné ne. Nutno konzultovat s datasheetem konkrétního LCD. Při prípadném návrhu DPS ho doporučuji ponechat. Vždy se může nahradit drátovou propojkou. Jako pullup odpory na portech P0 a P2 lze s výhodou použít "řebříčky", rozložení pinů k tomu přímo vybízí. Dvě diody v obvodu resetu jsou nutné pouze v případě, že se počítá s progamováním 89S52 přes ISP přímo v aplikaci. Nebude-li ISP požadováno (pokud rovnou použijete 89C55), lze je úplně vynechat (horní se nahradí propojkou, dolní zmizí bez náhrady). ISP konektor není zakreslen vůbec, ale jeho zapojení je zřejmé. Zřejmé taky je, že během ISP programování se zakazuje šmátrat na tlačítka:-) Relé 2 a 3 musí mít jeden přepínací kontakt, u relé 1 stačí jen spínací. Jelikož já tester využívám i jako vývojový kit pro aplikace se sériovým portem, mám na zvláštní konektor vyvedeny ještě signály Rx,Tx a GND, kam mohu připojit USB/UART TTL převodník. Proto také používám krystal 11.0592 MHz a nikoliv 12 MHz. Všechny časovací rutiny jsou laděny pro 12 MHz, takže vyšší krystal nepoužívat, menší klidně (min cca 10 MHz).

Do finálního provedení testeru bych rád zapracoval i paralelní patici pro testování obvodů se schématem napájení nikoliv v rozích, ale po stranách. Konkrétně by se jednalo asi jen o obvody 7490-93, 7475, 7483 a 7496. Ty se z nich používají nejvíc. Patice by tedy měla být typu DIL 16 a testovaný obvod by se zarovnával nahoru. Patice už by nemusela být ZIF, ale postačí obyčejný DIL neprecizní.

Pro precizní testování dekodérů D346 a D348 by možná nebylo od věci dát na finální desku i trimr 50K a třeba jumperem "odklánět" příslušný pin na tento trimr, aby bylo možné plně vybudit výstupy dekodéru (viz. výše).

Ohledně konektoru ISP je na zvážení, zdali ho ponechat, či ne. Já jsem pro. Mám totiž takovou vizi, že bych ty testery provozoval dva. Jeden finální s 89C55 a jeden pracovní s 89S52. U 89C55 by ISP konektor být nemusel, u 89S52 ano. Mám totiž takovou pracovně-vývojovou verzi firmware pro 89S52, kterou používám pro ladění nových testovacích tabulek, ale také je možné ji použít k jednorázovému testování nějakého speciálního obvodu, případně naprogramovaných PROM, GAL, PAL, apod. I tuto verzi FW dám k dispozici a vysvětlím způsob přidávání nových položek a tvorbu tabulek.


Ovládání testeru

Vlastní ovládání testeru je velmi jednoduché. Tester se ovládá pomocí 4 tlačítek (zleva: Esc, Up, Down a OK). Tlačítky Up/Down se pohybujeme v menu nahoru a dolů. Tlačítkem OK potvrzujeme vybranou položku, případně zahájíme test. Tlačítkem Esc se vracíme na předchozí úroveň menu. Menu má dvě úrovně. V první se vybírá skupina obvodů (7400-99, 74100-199, 32xx, 4xxx apod.), ve druhé se vybírá konkrétní obvod z dané skupiny. Výběr je prováděn cyklicky: po přetečení se vracíme na začátek, při podtečení skáčeme na konec. Máme-li vybrán obvod a je-li založen v patici, spustíme test tlačítkem OK. Každý obvod je testován celkem 4x. Každá testovací sekvence je tedy po jednom provedení ještě 3x zopakována. Mezi opakováním jsou 0,5 sec prodlevy, aby to bylo zajímavější a napínavější:-) To je celé a myslím velmi intuitivní. Postavte si to a uvidíte.

V aktuální verzi obsahuje menu tyto skupiny obvodů:

7400-7499
74100-74199
74200-74299
74300-74399
74400+
3200, 8200, Misc - obvody 3205, 3216/26, 8282/83/86/87 případně jiné dig. obvody mimo řady 74xx a 4xxx
D146-D348 - 7segmentové dekodéry z NDR
4000+ - řada CMOS 4000, 4500
SELFTEST - test samotného testeru = jeho portů

Pozor! Některé obvody řady 4000 jsou vyráběny i v řadě 74xx. Je ale nutné je hledat právě mezi 4000. Například 74HC4060 testujte jako 4060. Obvod 74HC4053 otestujete jako 4053, atd.

Shrnutí doprovodných znaků u označení obvbodů v menu:

*     -    není testována kompletní funkcionalita obvodu (všechny možné stavy). Ale vždy je snaha testovat maximum.
"     -    obvod vyhodnocený jako vadný, nemusí být vadný. Týká se dekodérů 346 a 348, viz. text výše.
nt    -    Not Tested. Testovací sekvence není ověřena na reálném obvodu, protože nebyl k dispozici.
nf    -    testovací sekvence není funkční - bude se dodělávat.


Deska?

Byl bych rád, kdyby se někdo ujal návrhu desky plošných spojů pro tester, protože si myslím, že se z něj vyklubal opravdu použitelný přístroj. Já bych to sice taky zvládl, ale raději se budu věnovat tvorbě testovacích tabulek, než routování desky. To mě fakt extrémně nebaví. Pokud se někdo najde, prosím o konzultaci se mnou. Jedná se hlavně o to doplnění paralelní patice pro testování obvodů se schématem napájení 7490/93 (ta by mohla být klasická, nemusí být ZIF) a také o možnost testování obvodů v DIL 18 (relé č.4 na P1.3). Ačkoliv je to asi blbost, sám žádný takový neznám. Chvilku jsem uvažoval o MH1082, ale ten má schéma napájení úplně mimo mísu. Takže jediný obvod, který mě napadá, že by se dal testovat je SRAM 2114, ale opravdu jen částečně (pár buněk). Software je pro obvody DIL 18 připravený. Stačí jen přidat to relé na pin P1.3. Také je na zvážení zda ponechat konektor pro ISP a případně pro UART, nebo ten výše uvedený trimr pro D346/8.


Support list

V následujícím PDF je aktuální "Support list" podporovaných obvodů. Vlevo je vždy typ obvodu a vpravo použitá testovací tabulka. Stále přidávám nové obvody, ale už jen ty, které opravdu mám a mohu otestovat. Pokud máte obvod, který v seznamu není, nebo který je označen jako nt (Not Tested), prosím o jeho zapůjčení. Vrátím a odměnou bude zase o kousek lepší firmware testeru, který dávám plně k dispozici. Jedinou podmínkou je, že obvod musí být staticky testovatelný (tedy žádné oscilátory). Prozatím se tato výzva týká jen obvodů se schématem napájení v rozích (viz. text výše). Neděláte to pro mě, ale pro sebe. Já (zatím) nepotřebuji umět testovat obvody, které (zatím) nemám, a ty co mám už testovat umím. Docela bych rád vyzkoušel i obvody DTL Tesla MZH1xx, pokud by někdo byl ochoten zapůjčit je. Přeci jen se u nás používaly a při opravách se test hodí.


Support list


Závěr

Vím, že bastlířů, kteří by masivně používali klasické číslicové obvody, v době Arduin a podobných kravin, už moc není. A pokud ano, koupí si nový a málokdo sáhne (mimo opravy starých věcí) po 30 let starém obvodu z Tesly (já jsem vyjímka). Takže ten tester zase taková pecka asi není. Já ho za pecku považuju, protože mě bavilo (a stále baví) jej tvořit. Zkrátka a dobře zde platí, že cesta je cíl...


Aktualizace 1


Výzva "sběratelům" integráčů

Tak dorazil jednočip Atmel 89C55WD z GME (byl objednaný již před vydáním článku) a ihned jsem ho vyzkoušel. Úspěšně. G540 ho programuje bez ztráty kytičky. Šlape to a konečně vidím celou tu škálu testovatelných obvodů pohromadě:-) Moc pěkný...:-) Rozhodl jsem se, že plnohodnotnou verzi software pro obvod 89C55 poskytnu pouze těm, kdo přispějí k finálnímu dotažení testeru. Mám na mysli ty, kteří budou ochotni zapůjčit obvody, které jsou v Support listu označeny jako netestované (nt), nebo které tam nejsou vůbec. A nebo ty, kteří se zaslouží o desku. Obvody pochopitelně vrátím a pokud si pošlete i jednočip 89C55 (89C55WD) a nebo 89S(C)52, tak vám jej vrátím naprogramovaný aktuální verzí softwaru, která bude i díky vám, zase o kousek lepší. Pochopitelně budete mít později k dispozici i aktualizace. A pro váš klid: během dosavadního vývoje jsem žádný obvod nezničil:-) Kontakt následuje.


Ještě lepší tester

Dostal jsem tip na tento parádní tester. Musím se přiznat, že jsem o něm již věděl, a že jsem kdysi byl už hodně nalomenej si to pořídit. Jenže... Pro mě má několik zásadních nevýhod. Za prvé vyžaduje PC. To nemám rád. PC na pracovním stole zabírá místo. Hodně místa. Za druhé je moc komplexní. Nemám rád kombajny. Raději budu mít plný stůl jednoduchých jednoúčelových udělátek, než jeden kombajn. A za třetí a nejdůležitější: neupatlal jsem si to sám. Jak jsem výše uvedl, pro mě platí, že cesta je cíl... Přesto ho dopuručuji všem, kdo chtějí mít parádní tester (ještě mnohem lepší, než je ten můj) a nechtějí se s tím moc patlat. Já si prostě patlám rád.

Jo, a vlastně je ještě 4. důvod. Je tam PIC....


Aktualizace 2


Update support listu

Vystavil jsem aktualizovaný Support list. Pár obvodů přibylo. U pár obvodů zmizelo NT. Nic zásadního, ale každý krůček je dobrý. Ale brzy toho bude více.


Aktualizace 3


Novinky a změny

Tak se dostávám k další aktualizaci. Jednak jsem vystavil opět nejaktuálnější Support list, který nově obsahuje i tranzistorová pole ULN2003/2004 a ULN2803/2804. Ty jsou otesované. Nicméně fungovat by mělo i ULN2805. Naopak jsem zkoušel ULN2001 a to nefunguje a ULN2002 nemám.

Získal jsem první várku obvodů k otestování, takže ubyla nějaká NT a přibyly nové obvody. Přibyly ale jiné NT, protože když máte dekadické čítače (176, 190), zkuste odolat a neudělat i sekvence pro jejich binární verze (177, 191)... Na cestě mám obvody další a přislíbené ještě další. Obvodů je nyní už více jak 260 a myslím jsem v tomto pokořil ten tester z Aukra. Ale o to mi nešlo. Plní se ovšem i paměť. Už to má více jak 18KB takže se blížím hranici 89C55 (20KB). Nicméně toto už mi může být fuk. Získal jsem totiž i nějaké procesory 89C51RD2 v DIL40, což jsou klasické 8052 se 64KB flash paměti (a dalšími vylepšeními), ale hlavně mají sériový bootloader pro programování. Tím v podstatě padají jakákoliv omezení na počet obvodů. Těch 64KB nezaplním. Bude to ovšem vyžadovat drobné úpravy HW (v podstatě jen spínač připínající /PSEN přes 1K na GND). Ještě, že jsem si vyvedl ten sériák. Ale zatím jsem se k jejich aplikaci nedostal. Pořád tvořím nové testovací tabulky.



IC tester
Nové IO k zapracování + nové CPU...
IC tester
...a další IO k zapracování


Nicméně až naplním těch 20KB, tak připravím verzi IC testeru 55 pro ty, kteří použijí právě ten 89C55. Stejně, jako jsem připravil verzi 8KB pro 89S(C)52. Mimochodem ta je nyní taky aktualizovaná (přidal jsem ta tranzistorová pole a čítač 4040). Ale již se moc měnit nebude. Je to fakt plný...

Ještě poznámka ke schématu. Zapomněl jsem tam nakreslit odpor 100K paralelně k resetovacímu kondu a tlačítku. Ten kond by se jinak neměl kam vybíjet. Ale ta schémata časem vyměním, protože už to někteří překreslují a budou tak lepší a přehlednější:-) Nicméně už se ozval pán, který to podle těch mých čáranic postavil hned první dva dny po vystavení a liboval si to:-)

V současné době se věnuju hlavně řadě CMOS4000. Tuhle řadu jsem nikdy "dobrovolně" nepoužíval a v podstatě nic moc o ní nevím. Ani jsem netušil, co všechno z této řady dělala naše Tesla. Takže až teď zjišťuju, že to jsou docela zajímavé obvody. Třeba takový čítač 4029 (vyráběný i Teslou) je fakt zajímavý. A taky je fakt, že mě hodně potrápil, než jsem ho odladil. To, že jsou některé obvody 4xxx vyráběny i v řadě 74HC4xxx jsem už zmiňoval a je to známá věc. Ale to, že je to i naopak jsem dosud netušil. Nicméně jsem ve svých zásobách našel obvody 40192 a 40193 a zjistil, že jsou to funkční ekvivalenty obvodů 74192 a 74193. A podle katalogů zjišťuji, že takových obvodů z řady 40xxx, které jsou ekvivalentní (pochopitelně až na log. úrovně) některým obvodům 74xx je mnohem více. Až je všechny nastuduju, tak se support list zase hezky bezpracně rozroste:-)

Získal jsem i několik různých obvodů DTL logiky (MZH, FZH, FZJ, MZK, apod) a pokusil se testovat i tyto. Ale bohužel se potvrdilo neblahé tušení, že to při napájení 5V a TTL úrovních signálů nepůjde. A opravdu to nejde. Zkoušel jsem jich několik a ani ťuk...

A ještě poslední věc. Ozývají se hlasy, že by tester měl umět i obvody DIL24. Hlavně tedy 74150, 74154 a také ALU 74181:-) V podstatě by to šlo. Ale potřebuji uvolnit další 4 piny. Jediné, kde mohu brát je LCD displej, který by mohl komunikovat s CPU nějakým sériovým protokolem. Zamyslím se nad tím. Když už jsem se do toho tak opřel. Ačkoliv jsem si během vývoje testeru "odskočil" a zbastlil a naprogramoval parádní automatickou časomíru pro Line Following (měří na setinu sekundy, až 4 mezičasy, startovací semafor, rekord dráhy v EEPROM a tak:-)) Taky už bych konečně mohl dodělat tu paralelní patici a testovat 7490/93 a jim podobné.


Aktualizace 4


Nucená pauza

Obdržel jsem další várku IO a tak snad brzy zmizí několik NT obvodů. Ale zároveň teď trochu pauzíruju. Musel jsem vyměnit tu ZIF patici, protože už se opravdu rozpadala při každém sevření. Jenže po výměně (na té čínské šmejddesce fakt porod) vykazuje tester určitou nespolehlivost. Takže mě čeká lupa a hledání problému. A moc se mi do toho nechce. Já to tušil, že dolovat něco z týhle desky bude problém...

Druhý problém je s těmi procesory RD2. Přidal jsem na tester tlačítko připínající /PSEN přes 1K na zem. Vstup do bootloaderu je OK. Výmaz CPU taky, ale už Blank Check hlásí chybu a programovat flash nelze. Jedná se o Atmely. Mám i Temic T89C51RD2 a ten šlape v pohodě. Takže se nejprve budu muset poprat s tímto, než budu pokračovat v testování obvodů.


Aktualizace 5


Vývoj pokračuje

Po delší pauze jsem se vrátil k vývoji testeru. Jelikož díky novým podporovaným obvodům již kód překročil 20KB, používám výhradně jednočip Temic T89C51RD2. Atmely RD2, které jsem získal, se nepodařilo rozchodit ani na profesionálním vybavení. Vzhledem k nárůstu počtu podporovaných obvodů v řadách 74400+ a 4000+, jsem se rozhodl dále zjemnit výběr v menu následovně:

7400-7499
74100-74199
74200-74299
74300-74399
74400-74499
74500-74599
74600+
3200, 8200, Misc - obvody 3205, 3216/26, 8282/83/86/87 případně jiné dig. obvody mimo řady 74xx a 4xxx. Tranzist. pole ULNxxx
D146-D348 - 7segmentové dekodéry z NDR
4000 - řada CMOS 4000
41xx - 45xx - řada CMOS 41xx až 45xx
SELFTEST - test samotného testeru = jeho portů

Nový Support list vypadá už opravdu zajímavě:-)


Aktualizace 6


Radikální změna

Dospěl jsem do fáze, kdy bylo potřeba se rozhoupat k radikální změně. Již mě nebavilo přidávat "exotické" integrované obvody, jejichž využití je minimální, jen proto, že mají klasické schéma napájení v rozích a pouzdro max. DIL 20. Chtěl jsem se vrátit k obvodům s nestandardním rozložením napájecích pinů, jako například klasické čítače 7490/93, latche 7475 a další. Také jsem se chtěl věnovat obvodům v DIL 24 (74150/154/181, 3212, apod). Jenže na toto scházejí u procesoru v DIL40 potřebné portové piny. Dlouho jsem laboroval s tím jak stávající piny vyšetřit. Zvažoval jsem připojení displeje přes I2C, nebo jen pomocí shift registru typu 74595. Jako optimální se nakonec jevila kaskáda dvou shift registrů TPIC6x595. Jeden by ovládal displej a druhý konfigurační relé. Softwarové změny by byly jen malé a šlo by to. Jenže se mi do hlavy pořád vkrádala myšlenka na ještě radikálnější změnu a sice použití x51 kompatibilního procesoru s více porty. A tak jsem se nakonec rozhodl pro AT89C51ED2 v pouzdře PLCC68...

Pouzdro PLCC68 je bohužel jedinou variantou použitelnou pro amatérské bastlení na univerzálce. Tedy přímo ještě ne. Usoudil jsem, že to bude chtít redukci na čistokrevný DIL. O její návrh a zajištění výroby jsem požádal Martina Lukáška a výsledek jeho práce je zde:



IC tester
Redukce PLCC68 na DIL a AT89C51ED2
IC tester
Redukce PLCC68 na DIL a 80C196

Je to sice obrovský, ale pro stavbu prototypu na univerzále ideální. Dík za to! Teď ale je řada zase na mě, protože ten prototyp testeru (s paticí ZIF28) musím teprve postavit a v tomto jsem se nijak neposunul. Mimochodem, kromě AT89C51ED2 hodlám tuto redukci použít i pro uvažované hrátky s 16-bitovým jednočipem INTEL 80C196, který mě prostě docela zajímá:-)

Nicméně stávající tester s procesorem DIL40 jsem úplně nezavrhnul. Hodlám ořezat stávající verzi tak, aby se vešla do 20KB AT89C55 a dám ji k dispozici. I tak toho bude umět dost.


Aktualizace 7


Finální podoba nefinálního testeru

Když se mi před časem jeden pravidelný čtenář těchto stránek pochlubil IC testerem postaveným na své vlastní DPS, projevil jsem svou závist. Závist nad tím, že má tak hezkou desku a můj vývojový prototyp už se mi pomalu rozpadá pod rukama. Pavel nelenil a jednu desku pro mě vyrobil. Sám o sobě tvrdí, že je ryzí amatér, a že i deska je navržená amatérsky. Deska je tedy poněkud větší, než by nutně musela být. Je jednostranná a je nutné osadit množství propojek. Také testovací patice je oproti zvyklostem (alespoň těm mým) osazená obráceně s páčkou dole. Opačně se nevleze. Ale co je důležité: deska je vyrobitelná i doma a FUNGUJE! Pavel zcela správně pochopil mé okaté vyzdvihování vrtaných univerzálek a desku mi dokonce osadil drátěnými propojkami a hlavně vyvrtal. Já totiž k smrti nesnáším vrtání plošňáků:-)

DPS pro IC tester
Deska IC testeru - spoje
DPS pro IC tester
Deska IC testeru - propojky

Takže i já mám konečně tester, za který se není třeba stydět. Nazval jsem to finální podobou nefinálního testeru, protože další vývoj se bude asi ubírat jinudy. Na následujících obrázcích jsou fotografie hotového testeru. Jak je vidět, ani zde jsem si neodpustil trochu toho bastlení. Vpravo dole je totiž dobastlen kousek univerzálky nesoucí dutinkovou lištičku pro připojení TTL UART převodníku a dále spínač, který spíná pin /PSEN procesoru přes 1K odpor na zem. Tyto úpravy si vyžádalo použití procesoru 89C51RD2 (ED2) se sériovým downloadem programu. Úpravy jsem udělal i přes to, že jsem si zakázal provádět jakýkoliv další vývoj pomocí tohoto konkrétního testeru. To je prostě vymazlenka pro normální používání a testování, nikoliv pro vývoj:-)

IC tester
IC tester
IC tester
Porovnání s prototypem

Pavel byl tak hodný, že dal podklady pro výrobu desky k dispozici a já jsem tak hodný, že jsem k nim přidal i firmware pro různé typy procesorů. Konkrétně pro 89S52 (8KB Flash), 89C55 (20KB Flash) a 89C51RD2/ED2 (64KB Flash). Ta poslední verze má sice jen o cca 3KB více, než 20KB verze, ale na počtu podporovaných obvodů (viz support list výše) je to znát... Vše potřebné naleznete zde:


Finálně nefinální IC tester


A co dál?

Finální podobou nefinálního testeru bych si dovolil tuto vývojovou větev ukončit. Další obvody do této verze již zřejmě přidávat nebudu. Chystám IC Tester Evo2, který bude radikální změnou. Nicméně jádrem opět bude x51 procesor a dokonce asi zůstanu u pouzdra DIL40. Několik lidí mě totiž přesvěčuje, že výše (viz. Aktualizace 6) naznačená změna procesoru za typ v pouzdře PLCC68 není to pravé ořechové. A tak asi zůstanu u klasiky v DIL40 a potřebné volné piny a volnou paměť prostě získám jinak. Rýsuje se použití sběrnice I2C, na které by visela jak sériová EEPROM s tabulkami, tak LCD displej a I/O expandér na ovládání relé a tlačítek. A proč vlastně nechci použít I/O expandér přímo na testování? Prostě to není vhodné. Testovací algoritmus je psán na míru portům procesoru x51 a jejich specifikům, které jsem u žádného jiného obvodu prostě nenašel. Takže tak.


Publikováno: 11/2016    
Last update: 11/2018    



« RET          ↑ TOP ↑          HOME