Werking IC-Tester doorgronden

bprosman

Golden Member

De mensen die mij een beetje kennen weten dat ik vaak met zoveel dingen tegelijk bezig ben dat de gemiddelde ADHD'er er jaloers op word ;)

Overigens was ik hier al een tijdje zijdelings naar aan het kijken en dat is deze IC-Tester :

https://8bit-museum.de/sonstiges/hardware-projekte/hardware-projekte-c…

Van deze IC-tester ben ik "Ter leering ende vermaeck" aan het proberen de werking te doorgronden.

Omdat er allerlei typen IC's in getest moeten kunnen worden moet de "bepinning" van de ZIF socket flexibel zijn, niet alleen qua input / output , maar ook qua voedingsspanning (bijvoorbeeld het verschil tussen een 7400 en 7490), maar ook EPROM's die zelfs wel eens hogere spanningen nodig hebben op bijvoorbeeld de voedingspin(nen).

Ik heb de schakeling een beetje zitten bekijken en getekend , de pin van de ZIF socket is de "Probe".
Dan kan er via transistoren die pin naar GND/-xV getrokken worden (Vss), naar +5V (Vcc) of naar een hogere spanning (Vdd).
//Edit VSS is "Hard ground" dus hoe ze een Negatieve (-5V) spanning aanbieden moet ik nog even kijken.

Nu is het zo ontworpen dus ik twijfel niet aan de werking, er zijn er tientallen gebouwd (YouTube) maar wat ik "eng" vind is het deel naar de ingang van de ATMega, (via R en Zener). Stel ik zet +12V op een pin (EPROM) word de ingang van de ATMega dan via de R-Zener netjes op 5V1 gehouden ? En als die zener er ooit uit gaat is dat denk ik wel einde oefening van de ATMega ingang ?

De jongere generatie loopt veel te vaak zijn PIC achterna.
EricP

mét CE

Waarschijnlijk gaat het nog wel (een tijdje?) goed op de protection dioden - als de +5V niet opgetild wordt natuurlijk.

Maar wel beschouwd... Er zijn heel veel situaties waar de boel gaat hemelen als een zener het begeeft. Dat is niks nieuws...

Een hele bekende van 10-20 jaar terug uit bootjes land: blokgolf omvormers (sinus was nog te duur). De boel gaat over op 'de omvormer' en als men weer terug gaat naar 'wal' is de wasmachine stuk. De wasmachine is niet gebruikt, maar heeft wel die spanning 'gezien'...
Korte versie: besturingsprint heeft een 'condensator voeding', met een zener als spanningsbeperkend element. Doorgaans op 15V waarna de benodigde 12V en 5V worden gemaakt. Door de andere golfvorm is de 'impedantie' van de serie-condensator anders dan de maker heeft voorzien - lager. De zener krijgt meer vermogen te verstoken. Dat gaat lang niet altijd goed. Die gaat hemelen. De spanning loopt best hoog op. De spanningsregelaars gaan hemelen. Met name de +5V is naar, want doorgaans gaat de controller die erachter hangt mee. Daarmee is repareren op component niveau dus uitgesloten (die controller is wel de doen, maar de firmware niet), dus wordt het 'een nieuwe print', in de praktijk doorgaans een nieuwe wasmachine.

bprosman

Golden Member

Op 14 december 2022 11:13:02 schreef EricP:
Waarschijnlijk gaat het nog wel (een tijdje?) goed op de protection dioden - als de +5V niet opgetild wordt natuurlijk.

Je bedoelt de +5V voedingsspanning van de controller ?

Inmiddels weet ik dat de negatieve spanningen (bijv. -5V) via een relais aangelegd worden en niet via transistoren.

[Bericht gewijzigd door bprosman op woensdag 14 december 2022 11:22:23 (17%)

De jongere generatie loopt veel te vaak zijn PIC achterna.
EricP

mét CE

Yep. Doorgaans zit de protectie naar de +5V om te voorkomen dat een I/O pin daar (ver) boven komt. Als de 'load' op dat net groot genoeg is, dan is de stroom die die diode kan hebben de beperkende factor. Is-ie dat niet, dan is de stroom die dat net opneemt de beperkende factor.
Even afgezien van dat veel protectie dioden het helemaal niet leuk vinden om langdurig stroom te voeren.

[offtopic]Ik heb ook eens een stuk hardware van een collega mogen bekijken. De testopstelling (breadboard) werkte uitstekend, de PCB voor geen meter (of eigenlijk: onbetrouwbaar). Meestal ging het goed, maar soms niet.
De oplossing was niet heel moeilijk en per ongeluk ook zo gevonden: de AVR draaide op de stroom die-ie uit z'n inputs haalde via de protection dioden. Als er teveel ingangen 'laag' werden, dan trokken de pull-up weerstanden het niet meer waardoor de '5V' van de controller (en nog wat andere meuk die er aan hing) te laag werd en de BOD in kwam.
Het daadwerkelijke probleem was een via in de PCB die z'n werk niet deed. Je raadt het: in het +5V net...[/offtopic]

fred101

Golden Member

Ik heb een professionele van BK. Ik heb ook een IC tester gebouwd die als een buizentester werkt. Om flexibeler te zijn wilde ik hem automatiseren mbv een homecomputer (zoals commodore 64) en kocht een colour maximite 2. Soort turbo C64 die gewoon basic draait. Na maanden wachten kwam hij eindelijk binnen.

Ik ben nooit verder gekomen dan een test programmatje schrijven want toen ging de processor kapot. De leverancier besloot niet te reageren op mijn mail of ik een nieuwe processor kon krijgen onder garantie en anders tegen betaling. Ik kan de processor zelf wel vervangen maar dat ding moet natuurlijk firmware krijgen.

Jammer want ik kon goed met dat BASIC overweg.

Wat ik denk dat die uit jouw link doet is gewoon I/O pinnen aansturen zoals je in bv een arduino ook kunt doen. Je definieert pinnen als input of output. Dan kun je ze hoog/laag maken en dan lees je de bijbehorende output pin van het IC uit. Ik weet niet wat ze met Vcc doen. Ik vermoed iets van een mosfetdriver ofzo aansturen. Ik wilde optos gebruiken om de pinnen te isoleren van de processor.

www.pa4tim.nl, www.schneiderelectronicsrepair.nl, Reparatie van meet- en calibratie apparatuur, ook maritieme en industriele PCBs
bprosman

Golden Member

Wat ik denk dat die uit jouw link doet is gewoon I/O pinnen aansturen zoals je in bv een arduino ook kunt doen. Je definieert pinnen als input of output.

Hij gebruikt meerdere pinnen.

1 Pin gebruiken ze als input / output , dit is gewoon een pin die data op het DUT kan zetten of teruglezen.

Dan gebruikt hij nog een paar andere pinnen om de voedings GND op bepaalde pinnen te kunnen zetten, of voedingsspanningen (via transistoren), die verschillend kunnen zijn.

Hier een overzichtje hoe ze het het doen :

Overigens heeft hij wel alle pinnen op de ATMega controller "door elkaar" gebruikt.

Mijn "C" kennis is te beperkt om dan te weten of je dan toch ineens een "Byte" in kunt lezen als de input lijnen "8 willekeurige" lijntjes zijn of moet je ze per stuk met "DigitalRead" binnen lepelen en er dan een Byte van maken ?

De jongere generatie loopt veel te vaak zijn PIC achterna.

Mijn maag keert dan weer van de gedachte dat de eerste de beste bug volstaat om Vss01 en Vdd01 beide te activeren. Met alle vuurwerk vandien.

bprosman

Golden Member

Op 14 december 2022 11:49:39 schreef Paulinha_B:
Mijn maag keert dan weer van de gedachte dat de eerste de beste bug volstaat om Vss01 en Vdd01 beide te activeren. Met alle vuurwerk vandien.

Dat kan inderdaad, maar dan zou je ook bijna geen H-Brug meer kunnen programmeren.
Overigens moet ik nog even kijken of die Vdd (stroom) begrensd is.

De jongere generatie loopt veel te vaak zijn PIC achterna.
fred101

Golden Member

Mijn "C" kennis is te beperkt om dan te weten dat je toch ineens een "Byte" in kunt lezen als de input lijnen "8 willekeurige" lijntjes zijn of moet je ze per stuk met "DigitalRead" binnen lepelen en er dan een Byte van maken ?

Daarom wil ik die maximite, die basic variant heeft allerlei makkelijke basic commandos speciaal om pinnen te sturen. Ik wilde eigenlijk een C64 ofzo maar die zijn zeldzaam aan het worden en je moet de programmas op cassette bandjes opslaan. De maximite heeft een SD kaart. Ik wil gewoon per IC een programmatje schrijven wat de naam heeft van het IC ipv een complex stuk programma schrijven wat alles kan. Ik doe dat bij mijn handmatige tester ook. Ik kan daarmee iedere pin + gnd - maken, weerstand naar + of naar -, led naar + of -, potmeter, externe BNC.

Mijn BK
Mijn zelfbouw IC tester

www.pa4tim.nl, www.schneiderelectronicsrepair.nl, Reparatie van meet- en calibratie apparatuur, ook maritieme en industriele PCBs
bprosman

Golden Member

Daarom wil ik die maximite, die basic variant heeft allerlei makkelijke basic commandos speciaal om pinnen te sturen.

Een Arduino Mega met de Arduino compiler is niet veel spannender. Daar zit je met het zelfde probleem, als de I/O lijnen over verschillende I/O poorten verdeeld zitten zonder enige (voor mij) logica ga je dat ook in Basic niet oplossen.

en je moet de programmas op cassette bandjes opslaan.

Ik weet dat ik met mijn hoofd nog in de "ouwe meuk" zit maar dit is niet echt meer van deze tijd :+

Overigens heb je wel extern geheugen nodig (SD Kaart in dit geval) om de IC'database met test vectoren en settings op te kunnen slaan.

De jongere generatie loopt veel te vaak zijn PIC achterna.
Arco

Special Member

Ik heb een ALL-07 gehad van HiLo systems.
Daar moest je echt voorzichtig mee omgaan, bij iets van overspanning of sluiting was het gelijk afgelopen met de pindrivers...

(en er zat nogal wat spul in aan ic's en transistoren... ;) )
http://matthieu.benoit.free.fr/hilosystem_all-07_universal_programmer.…

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
fred101

Golden Member

Je hebt 40 I/O pinnen die je gewoon direct manipuleert via het pin nummer zoals op de 40 pin connector achterop. En in BASIC ipv C. Het ding is min of meer ontworpen om hardware aan te sturen, niet als moderne homecomputer. De processor is een heel stuk krachtiger dan een arduino, hij draait op 480 MHz
Maximite website

www.pa4tim.nl, www.schneiderelectronicsrepair.nl, Reparatie van meet- en calibratie apparatuur, ook maritieme en industriele PCBs
EricP

mét CE

Och... Hoe die I/O zit, is nauwelijks relevant.
Als je uit je DUT een 'byte' wilt halen (en om misverstanden te voorkomen definiëren dat maar even als 8 bits), kost je 1 regel C code (die natuurlijk wel voor elk DUT anders is).

Feitelijk bepaal je 8x of een bit 0 of 1 is (dat is niet moeilijk; je weet waar het in de AVR I/O zit, je AND dat met de juiste mask en je shift dat zodat jouw bit de LSB is) en dat vermenigvuldig met de 'waarde' in je te wensen byte - of je shift het daarheen (dat doe de compiler waarschijnlijk wel voor je als je vermenigvuldigt en met een klein beetje mazzel worden de 2 shifts ook nog compile-time samen genomen). Je hele meuk douw je in 1 OR en zie daar: de byte die je had willen lezen. Wat je over houdt is worst-case een AND en een SHIFT per bit. En 7 ORs. Qua processing is dat doorgaans prima te overzien.
Een bitwise-read zal wat duurder zijn vanwege de overhead van function calls - en dat je de compiler waarschijnlijk wat 'optimize' mogelijkheden ontneemt.

ga je dat ook in Basic niet oplossen.

Nou is basic echt iets van ruim 40 jaar geleden (al snel overgestapt op assembly en later op C), maar met een beetje compiler zal zoiets in basic toch ook lukken??

Mijn maag keert dan weer van de gedachte dat de eerste de beste bug volstaat om Vss01 en Vdd01 beide te activeren. Met alle vuurwerk vandien.

Ach, de eerste de beste bug... Je moet maar net 2 outputs tegelijk aansturen. Ja, dat kan. Dat vuurwerk valt wel mee - het DUT zal er de meeste last van hebben. Waarschijnlijk is het niet. En als je zo onhandig met programmeren bent, dan maak je er een SET function voor die het voor je afhandelt. Dan hoef je er maar 1x langer dan 10 seconden over na te denken.
Het blijft een simpele vorm low-budget van meetinstrument. Prik je low-budget multimeter op het 2V bereik met de pennen in een WCD en dat zou ook wel eens verkeerd af kunnen lopen - voor de meter. Trek een primaire C uit een switcher en hang 'm direct op de meter zou ook zomaar fout kunnen gaan als je 'm niet tussendoor ontlaadt.
Er is zat meetapparatuur die niet 'monkey proof' is.
Voordeel is natuurlijk wel dat een AVR niet veel kost. Vervelend zou kunnen zijn dat er iets onbetrouwbaar wordt in plaats van het gewoon 'niet doen'...

[edit]Nog ff naar die Maximite zitten kijken. Conceptueel is het gewoon een home-computer in een modern jasje. Met een interpreter. Een iets ander concept dan eea. met een kale AVR doen. Afhankelijk van hoe goed de interpreter is (en hoe het hele video gebeuren in elkaar zit...) zou een 20MHz AVR wel eens net zo snel kunnen zijn als een 400MHz STM32 in deze context. Botweg omdat die AVR 'native' code draait - en veel zaken zijn single-clock aldaar en die STM32 een interpreter runt die het elke keer weer staat om te krikken naar iets waar de 'native' STM32 wat mee kan. Het zal in elk geval zeer zeker geen factor 20 sneller zijn - al zou dat zeker om rare glitches te tacklen wel handig zijn :)

Arco

Special Member

maar met een beetje compiler zal zoiets in basic toch ook lukken??

Bij compilers als van MikroE is de code van de Basic/C/Pascal compiler identiek: ze gebruiken dezelfde compiler als backend...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
bprosman

Golden Member

Op 14 december 2022 11:49:39 schreef Paulinha_B:
Mijn maag keert dan weer van de gedachte dat de eerste de beste bug volstaat om Vss01 en Vdd01 beide te activeren. Met alle vuurwerk vandien.

Het hele ding is overigens wel "Gepoly-fused" op 1.1A

De jongere generatie loopt veel te vaak zijn PIC achterna.
EricP

mét CE

Dan ben ik toch wel benieuwd hoe een 'identieke' compiler omgaat met talen met een volkomen andere insteek. De gebruikelijke methode is een soort van 'tussencode', P-code. Wel lekker universeel. Meestal dramatisch ten koste van de performance omdat er vanalles 'geparameteriseerd' moet worden.

Ik heb jaren terug ook dat ding eens gevonden op het internet na een tip van een kennis. Voor speciale antieke eproms met +12/-5 V is er een of ander ombouwkitje wat ik zo herinner en dat werkt inderdaad met een relaistje.

Je kunt het ding als zelfbouwkit bestellen ergens in DE.

[Bericht gewijzigd door henri62 op woensdag 14 december 2022 23:44:33 (12%)

1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.
bprosman

Golden Member

Op 14 december 2022 23:43:55 schreef henri62:
Ik heb jaren terug ook dat ding eens gevonden op het internet na een tip van een kennis. Voor speciale antieke eproms met +12/-5 V is er een of ander ombouwkitje wat ik zo herinner en dat werkt inderdaad met een relaistje.

Je kunt het ding als zelfbouwkit bestellen ergens in DE.

Klopt, maar ik zat eens te kijken of ik begreep hoe hij werkte.
https://8bit-museum.de/sonstiges/hardware-projekte/hardware-projekte-c…

De jongere generatie loopt veel te vaak zijn PIC achterna.

@fred101: Heb je zo'n ding niet? Echt iets voor jou zou ik zeggen.

1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.

Op 14 december 2022 15:48:28 schreef EricP:
Dan ben ik toch wel benieuwd hoe een 'identieke' compiler omgaat met talen met een volkomen andere insteek.

Arco had het over een identieke backend. Gek is dat niet, GCC doet dat ook (met een middenstuk, want GCC heeft dan weer verschillende backends voor x86, AVR, ARM etc)

Je kunt je natuurlijk afvragen of GCC-AVR voor C en GCC-ARM voor Fortran nog "identiek" zijn als ze allebei een ander frontend (C resp. Fortran) en backend (AVR vs. ARM) hebben....

Arco

Special Member

Voor ARM en AVR heb je compleet andere compilers nodig: de processor en structuur zijn compleet anders.
(hoewel er wel universele assembler/compilers zijn zoals TASM (table driven assembler), die kon code voor 8048/8051/6800/6502/TMS32025/8096/Z80/8085/TMS7000 maken)

Je kon er zelf tables aan toevoegen voor nieuwe processoren, waarin de 'rules' stonden voor de compiler tijdens het compileren...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
bprosman

Golden Member

Het punt wat ik eerder probeerde te maken is dat een "Pootje" Hoog/Laag maken of de status lezen in BASIC niet zoveel eenvoudiger is, of andersom in "C" niet zoveel ingewikkelder is.

Mijn programmeer kennis is ook al 30 jaar oud en mijn code zal lang niet zo efficient zijn als die van Arco, Rew of EricP maar hij doet wat hij moet doen.

Paar weken geleden een paar conversie programma's gemaakt (bestand inlezen, aanpassen en wegschrijven) in Visual (Basic) Studio en dat is ook prima gelukt na wat puzzelen.

De jongere generatie loopt veel te vaak zijn PIC achterna.
RAAF12

Golden Member

Op 14 december 2022 11:13:02 schreef EricP:
Waarschijnlijk gaat het nog wel (een tijdje?) goed op de protection dioden - als de +5V niet opgetild wordt natuurlijk.

Maar wel beschouwd... Er zijn heel veel situaties waar de boel gaat hemelen als een zener het begeeft. Dat is niks nieuws...

Een hele bekende

...breek me de bek niet open, dat heeft me eens een hele zwik dure dure Dolby ruisonderdrukker IC's gekost toen de zener in de gestabiliseerde voeding ging hemelen. Dat ging om een Nakamichi LX-5 cassettedeck en is inmiddels voorzien van een stevige driepotige spanningsregelaar.

Arco

Special Member

Dan ben ik toch wel benieuwd hoe een 'identieke' compiler omgaat met talen met een volkomen andere insteek.

Kwestie van een goed frontend/parser schrijven, die moet de boel klaarstomen voor de compiler.
Ongeacht de taal, het moet omgezet worden naar dezelfde instructies.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
flash2b

Special Member

Je zou ook bij het schema van de MiniPro TL866 kunnen kijken hoe ze het daar opgelost hebben:

https://www.obdii365.com/upload/pro/mini-pro-tl866-schematic-diagram.p…