RS232 decoderen

fred101

Golden Member

Door de opmerking van Guido over die supervisor bedacht ik me dat er een IC wat ik niet out-circuit getest heb (geen idee hoe). Een Epson RTC-62423. Een real time clock. Nu ik de datasheet lees doet dat ding veel meer dan voor klok spelen. Het zit aan de WR, RD en ALE van de processor vast.
Morgen eens meten

Bedankt voor het geduldig meedenken.

Dit apparaat is zo zonder de PSI onbruikbaar voor de klant, ik hoef niet bang te zijn dat het erger wordt. Maar ik heb tot nu toe nog iedere secutest (>30 denk ik) kunnen repareren en dat wil ik zo houden ;-)

Normaal gaat dit veel te ver qua tijd maar voor deze klant doe ik dat graag. Het gaat steeds tussen de andere reparaties door. Alleen al om daar te kunnen meten heb ik diverse extenders en fixtures moeten bouwen. Maar die zijn bruikbaar voor andere secutest reparaties. Dit is het enige stuk secutest wat ik nog niet reverse engineered had. Ik heb een ordner vol tekeningen, schemas, beschrijvingen en foto's. Daarnaast repareer ik veel apparatuur uit de jaren 90 begin 2000 waar deze digitale opbouw (uP met los geheugen) vaak voorkomt. Dus dit soort kennis is voor mij heel belangrijk. Daarom wil ik precies begrijpen hoe het werkt en kunnen beredeneren wat er in theorie fout zou kunnen zijn.

Edit:

Je hebt meer dan 8 address veters. Ik gok op minimaal 16...

klopt, had ik al gezien en aangepast maar jij bent waarschijnlijk al eerder gaan typen.
De n was mij niet bekend maar ik snapte wel wat je bedoelde.

www.pa4tim.nl, Reparatie van meet- en calibratie apparatuur, ook oud en exotisch
fred101

Golden Member

Ik zie even door de bomen het bos niet meer.

Ik heb de belangrijkste dingen uitgetekend. Het zit nogal onoverzichtelijk in elkaar, de pdf is een blokschema daarvan.

Na het SRAM vervangen zat er een pootje niet goed vast. Dat resulteerde in allerlei error meldingen en vastlopen. Als ik er op duwde werkte hij wel. Na rework geen probleem meer. (behalve het "geen data natuurlijk")

Er is in het SRAM doorlopend read/write activiteit (op controle, data en adreslijnen)

Het lijkt er dus op dat het SRAM doorlopend gebruikt wordt. Ook als ik hem aanzet en verder niks doe.
Dan vermoedt ik dat daar de fout niet zit.

Op de processor en sram ook geen lijnen op halve kracht.

Als er fout gemultiplexed zou worden werkte het flash ook niet.

Er blijft maar weinig over. Alle IC's met uitzondering van de epson RTC zijn uit circuit getest op 2 IC testers waaronder 1 professionele van BK die zelfs geprogrammeerd kan worden voor in situ metingen bij productie) Maar ik weet dat logica ICs rare dingen kunnen doen. Zelfs simpele transistors kunnen goed testen op een tortester en toch gedeeltelijk kapot zijn.

Ik zal nu met de LA aan de gang moeten, maar waar begin ik met zoeken ? Welke lijnen tegelijk en waarop de trigger ?

Ik denk op de uP: PSEN, ale, WR, RD, en dan bv 2 LSB adres/data lijnen en 2 MSB adreslijnen bij de processor. En dan 2 data en 2 LSB lijnen op het SRAM na de latch (ik meet dan dus voor en na de latch) en op het SRAM: WE, CE, CE2 en OE
En dan dit naast de timing diagrammen in de datasheets leggen.

www.pa4tim.nl, Reparatie van meet- en calibratie apparatuur, ook oud en exotisch
EricP

mét CE

Hmz... die RAM lijkt het te doen. Die flash lijkt het te doen. Alleen wordt er niks gestored.

Die RAM heeft een battery-backup, de aanname dat daar metingen in gestored worden lijkt mij niet onterecht. De aanname dat daar geen calibratiedata in zit ook niet (gebaseerd om eerder in dit topic vermeld: Fred heeft wel eens een batterij vervangen zonder problemen).

Als daar allemaal leven in zit... Hmz... Dan nog ff een loose end aan deze kant: die RAM is 128k groot (bij 8 bits). Een 8051 kan echter maar 64k adresseren. Het zou kunnen dat er nog wat trucen uitgehaald worden om een soort van bank switching te doen. Het zou ook kunnen dat die RAM er gewoon inzit omdat dat chippie op het moment van ontwikkelen gewoon goed verkrijgbaar was / relatief goedkoop was / de maker er om welke reden dan ook nog een pallet van had liggen.

Daar ben je snel uit: je hebt 8 address veters die aan de controller hangen, 8 die aan de latch hangen en dan eentje over. Die kan dus nog 'ergens' aan hangen, maar ook hard aan VDD of GND.
Weet jij of er ergens gespecificeerd wordt hoeveel 'storage' dat ding voor metingen heeft? Als daar hard 64k gespecificeerd wordt, dan zou het zomaar kunnen dat er trucen met bank switching zijn die niet werken. Aan de andere kant... dan had je daar de logic voor moeten vinden.

Het feit dat ern een 4053 aan nPSEN hangt, doet vermoeden dat er ook code (een deel van de firmware) in de RAM staat. Immers, anders hoef je daar niet bij. Het feit dat ook de WE van de flash is aangesloten, doet vermoeden dat het ding ook zelf in de flash kan schrijven.

Zo zachtjes aan begint het best spannend te worden, Fred :)
Overigens hoef je van die functionaliteit echt niet te schrikken. Het zou zomaar kunnen dat het een manier is om firmware te updaten: copieer een stuk naar RAM, switch naar RAM als program memory, erase de flash en drop daar de updated code. Beetje het idee wat ik ook eens gemaakt heb.

Wat me nog wel ff stoort in je tekening, is dat in de getekende stand van de 4053 nRD en nPSEN van de controller aan elkaar hangen. Interessant om te weten. Maar ik kan het (in elk geval op dit moment) niet relateren aan je probleem.

Zo zachtjes aan... begin ik toch te vrezen dat er 'iets' in de SRAM moet staan om storage mogelijk te maken. Of dat het een optie is die 'uit' staat.

Kun jij ter leering ende vermaeck nog eens kijken waar die 'overbodige' address lijn van de SRAM aan hangt? Gezien dat gedoe met die 4053's, verwacht ik aan een stuurlijntje van diezelfde 4053s. Let wel: zoals reeds eerder beschreven: het hoeft geen A16 te zijn (alhoewel dat wel voor de hand liggend is). Address lijnen (data trouwens ook...) kun je 'at random' aansluiten voor RAM zolang ze bij read en write maar hetzelfde aangesloten zijn...

Verder klopt je tekeningetje niet met de text erboven. Dat kan 'voortschrijdend inzicht' zijn, maar ook een vergissing. Je zegt dat de RTC ook aan de ALE zit. Dat zie ik niet terug - terwijl het best essentieel zou kunnen zijn.
Feit is dat die RCT waarschijnlijk ergens 'memory mapped' in de XRAM van de controller zit. Ofwel: ze hebben 16 adressen waar de boel geen memory maar RTC data terug geeft. Die 16 adressen van de RAM worden dan botweg niet gebruikt.

Sorry Fred, ik ben even door de ideeën heen, behalve dat het toch ergens een setting is (waar jij wellicht als user gewoon helemaal niet bij komt hoor...).

Een laatste open deur: zou het kunnen dat je RTC niet op tijd staat, de software intelligent probeert te doen en zegt 'joh, ik heb geen tijd, dan heeft opslaan ook geen zin'? Het is wat ver gezocht, maar ja...

Succes. En eh... ja, het kost meer tijd (een ruim veelvoud) van wat je je klant in rekening kunt brengen. Maar kennis opdoen is soms ook gewoon nodig en soms is het ook gewoon wel leuk om een apparaat of controller te leren snappen.

Lambiek

Special Member

Heb je al eens een nieuwe 4053 geprobeerd, die dingen kunnen rare problemen geven.

Als je haar maar goed zit, GROETEN LAMBIEK.
fred101

Golden Member

De 4053 test goed maar ik heb ze op voorraad dus uitwisselen is zo gebeurd. Als ik nu de tijd niet had en genoeg wist van digitaal foutzoeken had ik gewoon alle ICs kunnen omwisselen. Daar ben ik altijd wat huiverig voor bij oudere apparatuur ivm timing maar deze is uit 2009 en smd dus ik denk niet dat het hier speelt.

Het ding is volgens mij meer dan 20 jaar geproduceerd dus qua ongelukkig ontwerp en bugs zal het ook wel meevallen. Hoewel "upgrades" niet altijd een verbetering zijn. Je ziet hier ook wazige dingen. Ik heb er een met een niet verlichte display gezien. De display was wel uitgerust met backlight maar dat was niet aangesloten. Het driver circuit was er wel maar niet bestukt.

Ik zal eens kijken wat ze met A16 doen. Bankswitching zou niet onlogisch zijn. Ze hebben bij het ontwerp blijkbaar rekening gehouden met 2 sram ic's. (misschien was dat eerst voor 2x64 bedoeld) Maar zelfs dan meer dan 64k, dus altijd bankswitching. En dan zou het best kunnen dat in dat pad een foutje zit.Het moet in ieder geval iets zijn wat de hele functie de mist in laat gaan want anders was het corrupte data geweest en niet geen data. En als ze iets met een checksom doen verwacht ik een andere foutmelding dan geen data (maar wie weet, de programmeur beslist dat)

Er kunnen best foutjes in het schematje staan. Het is 4 layer board daarnaast is een vergissing bij tekenen en het daarna weer duidelijk/leesbaar opnieuw tekenen ook zo gemaakt.

Ik heb net een 40pin boxconnector van 20 dunne teflon draadjes voorzien. Daar kan ik zo de LA inprikken zonder gedoe met losschietende klemmetjes.

Een userfout verwacht ik niet. De unit heeft altijd gewerkt en de eigenaar heeft veel ervaring met deze units. Ik heb zelf nog nooit iets in de setup hoeven wijzigen en ben daar ook niet geweest. Ik zal eens kijken wat de klok-tijd doet. Zou de boel werken zonder de klok ?

www.pa4tim.nl, Reparatie van meet- en calibratie apparatuur, ook oud en exotisch
EricP

mét CE

De 4053 test goed maar ik heb ze op voorraad dus uitwisselen is zo gebeurd. Als ik nu de tijd niet had en genoeg wist van digitaal foutzoeken had ik gewoon alle ICs kunnen omwisselen. Daar ben ik altijd wat huiverig voor bij oudere apparatuur ivm timing maar deze is uit 2009 en smd dus ik denk niet dat het hier speelt.

Je zou ff moeten kijken hoe hard dat ding loopt - Xtal. Dan ff in de datasheet kijken hoe veel cycles voor een instructie (let op: het is een 8051 kloon, geen originele... dus je moet het echt van deze weten). Dan heb je enig idee van wat er op de bus gebeurt. Immers... elke instructie is 1x fetch uit ROM en dus 1x wat op de bus doen. Daarmee heb je dus ook een idee over frequenties die je daar tegen komt. Als je propagatie tijden daar niet in de buurt komen, gaat het eigenlijk altijd wel goed. Tot er iemand met timing heeft lopen kl**ten waardoor dingen per ongeluk werken natuurlijk :).

Het ding is volgens mij meer dan 20 jaar geproduceerd dus qua ongelukkig ontwerp en bugs zal het ook wel meevallen.

Ja... nou... het kan ook prima zijn dat men er gewoon niet tegen aan loopt (bugs) en een ongelukkig ontwerp z'n werk gewoon doet (dus we laten het zo). Ik mag je er geen details van verraden, maar ik heb ooit eens een audit gedaan van een apparaat wat toen elke Nederlander wel kende. Het was al 10 jaar in gebruik en deze l*l vindt er toch 2 bugs in. Minor weliswaar, stonden het normaal functioneren nauwelijks in de weg. Maar het was net niet helemaal goed... Je kent het gezegde: als architecten huizen zouden bouwen zoals programmeurs software maken, dan kan een enkele specht een hele stad verwoesten.
Ook programmeurs hebben vaak erg veel last van functioneel denken - 'het doet het toch'? Ja, die Chinese LED rechtstreeks op een CR2032 doet het ook... Je snapt waar ik heen wil :) (been there, done is, bought the t-shirt en in de loop der jaren heel veel bijgeleerd!)

Hoewel "upgrades" niet altijd een verbetering zijn. Je ziet hier ook wazige dingen. Ik heb er een met een niet verlichte display gezien. De display was wel uitgerust met backlight maar dat was niet aangesloten. Het driver circuit was er wel maar niet bestukt.

Prototype? Het moest ff goedkoper? Zeg het maar...

Ik zal eens kijken wat ze met A16 doen. Bankswitching zou niet onlogisch zijn. Ze hebben bij het ontwerp blijkbaar rekening gehouden met 2 sram ic's. (misschien was dat eerst voor 2x64 bedoeld) Maar zelfs dan meer dan 64k, dus altijd bankswitching.

Ja, nou... zoals gezegd: ik verwacht het niet, maar het zou kunnen dat het ding gewoon 64k nodig heeft. Punt. Vroeger opgebouwd uit 2x32 (dat was toen financieel de beste oplossing), later wellicht 1x 64 en toen deze gemaakt werd was 1x 128 goedkoper 0- en die doet het tenslotte ook. Memory is raar spul met dagprijzen. Op een PCBtje van een oud-werkgever ook rare trucen met footprints over elkaar heen. Reden? Meer keus aan RAM chippies, pak diegene die deze week de goedkoopste is...

Staar je ook niet blind op A16. Er is een address lijn die 'ergens anders' heen gaat. Zoals gezegd: je kunt die lijnen at random aansluiten. Dus als het bij routeren anders beter uit kwam, nou ja, dan doen we het zo. Zolang elk address maar uniek is, gaat dat volkomen goed komen.

En dan zou het best kunnen dat in dat pad een foutje zit.Het moet in ieder geval iets zijn wat de hele functie de mist in laat gaan want anders was het corrupte data geweest en niet geen data. En als ze iets met een checksom doen verwacht ik een andere foutmelding dan geen data (maar wie weet, de programmeur beslist dat)

Ja en nee. Ik weet niet hoe hun interne 'boekhouding' in elkaar zit. Het is mogelijk dat in de eerste 2 bytes van het daarvoor bedoelde stuk memory botweg het aantal records staat. Als daar wat fout gaat en er komt toevallig '0x0000' of '0xffff' terug, dan zou het zomaar kunnen dat de firmware dan zegt 'niet zinnig, we doen niks'. Zeker bij embedded is het moeilijk om exception handling 'naar buiten' te doen. Het is niet ongebruikelijk dat als je bij een 'dump' functie parameter checking doet (kijken of je input parameters überhaupt zinnig zijn ipv. er blind mee aan de gang te gaan), je gewoon besluit 'niks' te doen als ze dat niet zijn. Wellicht in debugging mode (al dan niet een vlag bij compilen) nog ergens een error heen brullen, maar in productie... tsja... wat zou je willen doen??

Er kunnen best foutjes in het schematje staan. Het is 4 layer board daarnaast is een vergissing bij tekenen en het daarna weer duidelijk/leesbaar opnieuw tekenen ook zo gemaakt.

Sterker nog... het zou me verbazen als het helemaal zou kloppen :). Maar aangezien jij blijkbaar ook aan het documenteren bent, trigger ik ook even op inconsistenties tussen je verhaal en je plaatje. Aan jou om er iets of niets mee te doen...

Ik heb net een 40pin boxconnector van 20 dunne teflon draadjes voorzien. Daar kan ik zo de LA inprikken zonder gedoe met losschietende klemmetjes.

Een userfout verwacht ik niet. De unit heeft altijd gewerkt en de eigenaar heeft veel ervaring met deze units. Ik heb zelf nog nooit iets in de setup hoeven wijzigen en ben daar ook niet geweest. Ik zal eens kijken wat de klok-tijd doet. Zou de boel werken zonder de klok ?

Daar kan alleen de programmeur iets zinnigs over zeggen.

[off topic][ouwe doos]Ik ben met een 8051 eens vreselijk op n'm snufferd gegaan met parameter checking. Ik ben daar vrij scherp op, dus als je een pointer krijgt, dan check ik die wel even op null zijn. Null heeft doorgaans als waarde 0x0000 op een 16-bit address.
Goed, een stuk code, liep prima. Is al enige tijd in gebruik en min of meer 'af'. Ergens heel anders in dat project aan het knoeien en het stuk code wat al 'af' is doet het opeens niet meer. Snap er geen snars van. Ik ben er toch niet aan geweest? Hmz... nieuwe stuk code er ff uit... ja, loopt weer. Nieuwe stuk code er weer in... werkt niet meer.
Afijn, eerste idee is dat die nieuwe code ergens een misser maakt en wat plat schrijft (over data heen schrijft waar-ie vanaf moet blijven). Nee, dat deed het echt niet.

Nou ja, lang verhaal kort: het bleek dat het stuk memory waar die pointer naar wees... op 0x0000 zat. Dat kan gewoon bij een 8051. Je kunt aan de linker opgeven waar memory zit - welke addressen (je hoeft niet de volle 64k vol te hebben en je hoeft ook niet op 0 te beginnen, niemand die je dat verplicht). En daar braaf op 0x0001 begonnen. Tot er iemand bezig is geweest om make files op te schonen... ergens gelezen heeft dat de default 0x0000 is. Nou, daar hebben we memory, dus dit kan weg.
Zonder de 'nieuwe' code maakte de linker een memory map waarbij het 'goed' ging. Met die 'nieuwe' code ging het 'fout'.

Make file 'Bijna goed'. En toch een dag naar gezocht...[/ouwe doos][/off topic]

guidob

Overleden

volgens de pdf hangt /CE van de RAM aan een ingang van de ´138. Dat kan, maar dan moet er iets anders zijn wat dat allemaal aanstuurt (of het is gnd).

Dat geschakel met bit7 is idd een ingewikkelde constructie. Zal ergens goed voor zijn.

fred101

Golden Member

Ik ben er nog niet achter wat zo'n 138 nu voor functie heeft. (in het algemeen en hier in het byzonder)

4 lsb adreslijnen hangen aan 4 AND poorten (74HC08), tevens 3 aan een 74HC138 (aan: A0,A1,A2) en ook nog 4 aan de RTC (A0,A1,A2,A3)

De output van 1 AND hangt aan A16 van het SRAM, 2 outputs gaan naar de CE van beide flashs. De laatste gaat naar E3 van de 138 en tevens naar nCE van het SRAM. E2 van de 138 hangt aan gnd.

1 output van de 138 gaat naar OE van de 74HC541, 3 naar de ingang van een 74HC02, 1 naar een AND ingang van bovenstaande 74HC08. 2 gaan "ergens" heen.

Ik denk een of andere vorm van bankswitching.

LA triggeren op de store opdracht vanuit de PSI is nog niet gelukt. Ik kan nog proberen op de RX poort te triggeren.
Wat me wel opvalt is dat er volop activiteit is maar CE2 van het SRAM blijft bijna altijd laag. Ik heb hem 1x een hele sweep hoog zien zijn. Als die laag is staat het SRAM in standby mode. Hij komt van de 74HC541 af. A16 wordt af en toe een pulsje hoog

Screenschot van een run waarbij ik gepoogd heb tegelijk op store te drukken. Maar de traces zijn min of meer gelijk aan alle andere.

Legenda bij foto: ALE hangt direct aan de uP, psen hangt aan nOE van sram
WR direct aan sram, nCE ook sram, CE2 ook sram, aan een sram datalijn, msb adres aan sram, lsb adres aan een data/adres poort van de uP (dus voor de latch) A16 aan SRAM

www.pa4tim.nl, Reparatie van meet- en calibratie apparatuur, ook oud en exotisch

@Fred: Ik denk dat het ding zogenaamd 'memory mapped IO' doet: Je mapt IO's via adresdecodering (ANDs, Multiplexers etc: hier denk ik het geval) op het adresseerbare geheugen van de processor. Door nou naar die plaats te schrijven of te lezen kun je de IO makkelijk benaderen. Daarom zijn ook de Chip Enables aan die adresdecoders gekoppeld... Zelfde reden.

Ik hoop dat je er iets aan hebt... just my two cents.

Dit bedoel ik:

https://cdn.mikroe.com/ebooks/img/2/2016/01/8051-chapter-02-...ge-011.gif

Edit: zie net dat ErikP dit al uitgelegd heeft ;-) nu ja, beter te vaak dan niet vaak genoeg...

Eens een wirehead,altijd een wirehead.... www.machma.nl
EricP

mét CE

:)

Die 138 kun je gebruiken voor adres decodering.

We houden het even simpel en theoretisch. Ik heb 8 poortjes van 8 bits die ik als input wil gebruiken. Tevens heeft mijn controller een address bus van 3 bits (het slaat nergens op, maar voor het concept goed genoeg. Zo direct wordt het wat ingewikkelder). Daarmee kan ik dus address 0 t/m 7 maken - 3 bits, dus ik heb 8 mogelijkheden.

Welnu, ik hang die 138 aan de address bus. Dan heb ik 8 uitgangen die elk voor 1 specifiek address actief (in dit geval 'laag'; negative logic) worden. Welnu, als ik nou op elk van die uitgangen een chippie hang wat met 1 enable lijn 8 inputs doorzet naar 8 outputs (en als-ie disabled is de outputs hi-z houdt), dan heb ik zo 64 inputs gemaakt.

Nu maken we het iets ingewikkelder. Ik heb nu een 8-bits address bus. Daarmee kan ik dus 256 adressen genereren. Voor mijn 64 inputs heb ik er echter maar 8 nodig.
Welnu, op 5 bits hang is een 5-bits binaire comperator. Die vergelijkt de 5 bits op z'n A-inputs met de 5 bits op z'n B-inputs. Als ze matchen, dan wordt de output actief (dat kan dus 'hoog' of 'laag' zijn, afhankelijk van of het positieve of negatieve logica is. Vandaar dat ik bewust voor de kreet 'actief' kies, dan is daar geen verwarring over).
Welnu, als ik die output een 138 laat enablen, dan kan ik dus zo in die reeks van 256 adressen er 8 toekennen aan specifiek die 138. Die doe de rest van de decodering en zo kan ik dus nog steeds mijn 8-bit inputjes doen.

Je kunt het ding dus gebruiken om adressen te decoderen. Echter, je kunt dat ook een niveau hoger tillen. Neem je RTC. Die heeft 16 registers, 4 address lijnen. Die hang ik aan A0..A3 van de controller. De 138 hangt aan A4..A6. Daarmee kan ik die 16 registers van je RTC binnen 128 mogelijke adressen specifiek maken.
Je kunt evt. ook meerdere 138's achter elkaar zetten. Elke doet 3 bits van de address decoding. En zou zijn er meer 'grappen' die je met dat soort chips uit kunt halen.

In jouw tekening zie je een 373. Als ik het wel heb, is dat een latch. De 138 links daarvan doet een stuk address decodering. Samen met de 02, 'enables' die zo te zien nWR naar die latch toe. Ik gok erop dat het een 8-voudige latch is die aan de databus hangt. Door nu naar een bepaald address wat te schrijven, zorgt de decoderings logic ervoor dat de nWR naar de latch gaat. Op dat address zit dus ook nog RAM. Maar dat wordt niet gebruikt. Bij een write mag de RAM meeschrijven, dat doet geen pijn. Als het een read zou zijn (voor input), dan moet die RAM z'n kop houden. Je zult dan ook zien dat in dergelijke situaties er wat gedaan zal worden om dat RAM chippie stil te houden: de nRD wordt onderdrukt, de nOE wordt hoog gehouden, whatever. Dat is aan de ontwerper.

Vanuit de software is memory mapped I/O niks anders dan wat naar een specifiek address schrijven of lezen. Net zoals je dat naar XRAM zou doen. Echter, de hardware daarbuiten zorgt ervoor dat het niet in RAM terecht komt, maar naar de benodigde latches gaat.
Voor de software zijn dat dus specifieke memory addresses.

Zoals ik reeds eerder opmerkte, kun je alle 8051 compilers / linkers die ik ken vertellen waar in de address map XRAM zit. Dat stuk mag de linker dan gebruiken om variabelen in te frutten. Jij kunt echter nog steeds bij de rest door gewoon hard dat address te gebruiken. Feitelijke een makkelijke manier om I/O toe te voegen. En als je die decodering een beetje handig in elkaar zet, dan schaalt het best goed.

Overigens gaat die alleen goed met 'trage' cores. Je moet door een aantal logic-ICs heen voordat je alles rond hebt. Die hebben allemaal een propagatie tijd. Echter, als een bus op zeg 1MHz loopt, dan gaat dat lang goed. De meeste logic heeft propagatie tijden die je in nS uitdrukt. Dus zelfs met 3 lagen 'poortjes' achter elkaar, zou je zomaar nog steeds een factor 10 sneller kunnen zijn dan de bus.

Mandjes tijd. Kan iemand nog ff meekijken met Fred z'n LA plaatje? Ik ben morgen druk en nu doen de kijkertjes het niet zo goed meer...

guidob

Overleden

CE2 is een raar verhaal. Je zou verwachten dat de RAM vaker nodig is. In het schema hangt die aan A7 van de 541. Maar dat is een ingang. CE2 ook. Ook hier moet er iets zijn wat het aanstuurt. Of je schema klopt niet...

Heb je A en Y niet verwisseld van de 541?

fred101

Golden Member

Triggeren op de rs232 RX pin werkt. Veel verschil maakt het echter niet. Maar dat weet ik nu in ieder geval zeker.

Ik dacht wat te hebben gevonden, A7 van de 541 was laag terwijl Y7 knipperde en er activiteit op een van de OE lijnen was. (logic probe knippert dan).Dan zou de input toch ook moeten knipperen.
Dat was een denkfoutje en leermoment waar ik door de LA achter kwam.
De LA op OE1 en OE2, A7 en Y7 en dan is zo'n ding toch wel erg makkelijk. idd A laag en op Y data. OE1 hoog, OE2 hoog met heel af en toe een laag pulsje. Maar met de truth table er naast moest de output Hi Z zijn. En toen viel het kwartje ;-) busje komt zo....

Ik heb nu de 4053 eraf en ga die straks vervangen. Hij zou goed moeten zijn maar misschien heeft Lambiek gelijk. Als die 4053 oost indisch doof is ga ik hem eens goed op de pijnbank leggen want ik hou niet van onderdelen die niet willen luisteren.

Eric: Die uitleg is een stuk beter dan de datasheet maar het blijft een beetje een raar ding. Soms denk ik dat een groot deel van digitale hardware bestaat uit onderdelen die er alleen maar zitten om problemen van andere onderdelen te omzeilen waarna er nog meer nodig is om de kuren van die ICs weer te omzeilen etc. Ik las gisteren dat die 8051 aan de binnenkant gedeeltelijk 4 bits is. Lekker logisch, De logic IC's werden vast door programmeurs ontworpen en dan zeggen ze dat RF voodoo is >:-)

www.pa4tim.nl, Reparatie van meet- en calibratie apparatuur, ook oud en exotisch
fred101

Golden Member

Ik heb als oefening wat zitten spelen met gates (op papier) Ik denk dat ik een soort omgekeerde 138 heb gemaakt. Ik werd helemaal gestoord van die truth tabellen.

Ik weet maar 3 dingen. Die heb ik onthouden om die tabellen op te kunnen stellen ipv opzoeken. AND = A x B, OR is A + B (waarbij de uitkomst nooit hoger dan 1 kan worden, dus 1+1=1 en bij Xor is alles boven 1 niet mogelijk dus 1+1 =2, 2 bestaat binair niet dus wordt het 0. En dat je er een nand/nor van maakt door de uitkomst te inverteren.

Toen bedacht ik dat het ook mogelijk moet zijn die formules aan elkaar te plakken en dat lijkt te werken.

Zie hieronder mijn schematje. De formule staat er onder. Klopt dit ?

De 4053 transplantatie heeft niet geholpen. Ik heb daarna met de logic current tracer en ook met scoop gemeten. De 74HC86 laat een stroom toename zien bij store maar met de scoop is er geen amplitude verandering te zien.

Morgen krijg ik de nodige ICs binnen. Dan eerst eens de 74HC86 vervangen

www.pa4tim.nl, Reparatie van meet- en calibratie apparatuur, ook oud en exotisch
guidob

Overleden

klopt

Oefening:

Als je in je schema bolletjes tekent aan de uitgangen van de ANDs en aan de ingangen van je twee ORs, dan is dat nog steeds hetzelfde.

En dan kan je de OR met twee bolletjes aan de ingang vervangen met een AND met bolletje aan de uitgang. Een NAND dus. Een OR:

00 0
01 1
10 1
11 1

nu met de ingangen inverted:
11 0
10 1
01 1
00 1

Dat is een NAND: actief lage AND.

M.a.w. de 7408 worden NANDs en de twee 7432s ook. De inverters kan je dan vervangen door nog eens twee NANDS met de ingangen aan elkaar. Heb je een IC minder nodig :) Dat soort trucs worden toegepast om ICs uit te sparen!

fred101

Golden Member

Ik had het kunnen weten, er zijn op youtube honderden videos over alle mogelijke 74 ICs. Ik heb geen moeite met leren uit boeken maar soms is het gewoon wat overzichtelijker als je ziet wat iets doet. Ik ben nogal grafisch ingesteld.

Voor eventuele meelezers:
Een 138 achtige multiplexer blijkt niet zo raar als het leek. Dankzij Eric snap ik waarom je een 138 zou willen en dankzij dit filmpje snap ik nu ook de werking.

www.pa4tim.nl, Reparatie van meet- en calibratie apparatuur, ook oud en exotisch
fred101

Golden Member

Volgens mij moet het mogelijk zijn om het Xtal uit een circuit te halen en dan handmatig singel step de boel laten draaien. Heeft iemand dat wel eens geprobeerd ?

Net als bij mijn 8 bittertje. Een trage klok en single step. Dan kun je per stap bv precies zien wat de state van poorten is zonder dat je tig LA testpunten moet solderen.

Zo kun je bij iets heel complex zelfs dingen doen als een pootje lichten en deze handmatig hoog of laag trekken (of met een logic current injector (als je die hebt natuurlijk)

www.pa4tim.nl, Reparatie van meet- en calibratie apparatuur, ook oud en exotisch
EricP

mét CE

Ja Fred dat kan. Het is een erg ongebruikelijke techniek :).

Een 'originele' 8051 heeft als ik het wel heb 12 clock cyles nodig voor 1 machine cycle. Goed, je maakt een 'burst shot' wat elke keer 12 clocks genereert. Kan.
Lang niet alle assembly instructies zijn single-cycle. Bijna (?) geen enkele C-instructie mapped op 1 assembly instructie. Dus dat zijn meerdere assembly instructies.
En nu? Niet weten waar je naar zoekt en nu op de hand gaan clocken?
Tsja... als je alle tijd van de wereld hebt en je leven hangt er vanaf... zeker doen. Verder: volkomen kansloos ('tijd' is de beperkende factor).

Er is een tool voor, die heet ICE. Ofwel: In Circuit Emulator. Die is er voor de originele 8051 - geen idee of die er voor jouw kloon ook is.
Modernere cores hebben bijvoorbeeld DebugWire (AVR). Daarmee kun je met de core kletsen en zeggen, 'hey, run eens ff tot daar en kom dan bij me terug'. Daarna kun je de status van registers enzo bekijken.

Hardware debuggen... dat doe je eigenlijk altijd met een LA in deze context. Vaak wel in combinatie met test-software op specifiek die situatie die niet lekker loopt te genereren.

Al met al... denk ik... (met alle respect) buiten jouw scope.

[offtopic]Er zijn ook processoren, ik weet niet of het ook voor controllers op gaat, die een minimale clock frequentie nodig hebben. Waarschijnlijk ergens een stukkie DRAM wat van die clock afhankelijk is om in leven te blijven.
Nodeloos te zeggen dat je RS232 communicatie ook volkomen om zeep is :)[/offtopic]

Lambiek

Special Member

Ik vraag me dus af of dat wel gaat, Eric haalt het ook al aan.
Sommige controllers hebben nu eenmaal een minimaal clock signaal nodig om te kunnen werken.

Maar misschien kun je wel je andere IC's op deze manier controleren op een goede werking. Proberen kan geen kwaad zou ik zeggen.

Als je haar maar goed zit, GROETEN LAMBIEK.
fred101

Golden Member

Software debuggen doen/deden ze ook stap voor stap dacht ik. Ik was het niet hierbij van plan. Ik dacht aan de HP1615 met dood ROM. Als ik schemas had was het een stuk eenvoudiger testen. Nu moet ik steeds inschatten of dat wat ik meet goed of fout is (of een meetfout)

Er stond een ICE in vraag en aanbod, alleen zag ik dat te laat, hij was al naar de kringloop gebracht. Ik heb dat soort dingen wel eens in actie gezien.

Vandaag lekker zitten meten en solderen. Maar nog geen stap verder (maar niet zinloos, het leerzaam en goed voor mijn database)

Ik heb vandaag ook wat 74 IC's vervangen. Daarna steeds het IC nog eens getest en de secutest natuurlijk ook. Maakt geen enkel verschil.

Toen het RS232 deel met de scoop en scoop LA bekeken met dee PSI eraan. De signalen door de opto's etc. Niets vreemds. Maar dat wist ik eigenlijk al omdat ik met de pc ipv de PSI tegen het ding kon lullen en ook antwoord kreeg. Maar meettechnisch wel leuk werk met allerlei meetapparatuur (logic probes, LA's, 2 scopen, paar DMM's, curvetracer, IC tester, morgen met de fluxgate probe en HP current tracer aan de gang. Eens kijken of ik de opto stroom kan meten (voor de documentatie hoor, niet omdat ik het gewoon leuk vind om te doen ;-) )

Processor pootjes voor de zekerheid gereflowed.
Alle kleine "glue-logic" is al nieuw, diodes, torren weerstandjes etc zijn goed (in situ gemeten of wanneer nodig er even af gehaald) Dat gaat zo lekker snel bij smd spul. Geen gedoe met omdraaien, paar seconden met hete lucht en los.

Morgen vervang ik eerst de 541 en dan de 373's. Maar ik verwacht eigenlijk niet dat dat helpt. Die heb ik al op de IC tester gehad.

Het is dat de processor zo'n rotding met naar binnen omgebogen pootjes is,op een rotplek zit en ik alleen twee gebruikte in onbekende staat heb. Anders had ik dat eerst geprobeerd. (en hij wordt blijkbaar niet meer geproduceerd)

En daarna weet ik het ook niet meer....

www.pa4tim.nl, Reparatie van meet- en calibratie apparatuur, ook oud en exotisch
fred101

Golden Member

Ik weet het niet meer. Alle IC's op de klok en processor na zijn nieuw. Nog een keer terug naar de rs232.
De pest is dat ik niet wist wat de TX en de RX was. De ene roept wat, de ander antwoord. Mans zijn apparaat laat dat mooi zien. Wat codes op de ene en een lap tekst op de ander. Die lap tekst is TX op de Compass.

Ik druk op een knop op de PSI. Die begint dus lijkt me. Maar het eerste wat langskomt is de TX lijn met gelijk de tekst dat er geen data is. Daarna op RX een korte code (Yx$23) als antwoordt. Bij het retour gaan druk ik een knop op de secutest. Maar de eerste data is weer de TX lijn.

Dan een stap terug, direct met de LA op de processorpinnen (TX en RX uart)
De RX codes (Yx$23) worden netjes in ascii weergegeven op de LA. 1 op 1 de zelfde tekst als de compass inline laat zien. Maar TX geeft complete onzin ipv de tekst dat er geen data etc is. Scoop erop. RX keurige 0-5V signalen. TX flinke overshoot. Met de scoop op de rs232 connector, dus na de opto's: TX is +5 tot -5V, RX is +12 tot -12.

Je zou zeggen dat de PSI de secutest niet begrijpt omdat hij +/-12V verwacht. De compass lust dat blijkbaar wel

Ik denk dat ik hem in de wacht zet tot ik weer een Secutest hier heb om te kijken op de RS232 connector. Of dat ook +/-5V is. En nog eens vragen of ze zeker weten dat deze combinatie samen heeft gewerkt. Er zit niet meer dan een weerstand en een opto tussen processor en RS232 connector.Drie optos geprobeerd, geen verschil. De +/-12V is een aparte ongeregelde voeding. Dus ik zie even niet waar de +/-5V vandaan komt.

www.pa4tim.nl, Reparatie van meet- en calibratie apparatuur, ook oud en exotisch
bprosman

Golden Member

Er is een tool voor, die heet ICE. Ofwel: In Circuit Emulator. Die is er voor de originele 8051 - geen idee of die er voor jouw kloon ook is.

Volgens mij heeft Paul Welther er een "in de aanbieding" die hij aan de straatstenen niet kwijt kan.

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

mét CE

Ik vroeg het je al eerder Fred... Het is gewoon te raar voor woorden. Nogmaals: ik kan me voorstellen dat het een setting is (waar jij wellicht niet bij kunt). Ik kan me voorstellen dat er 'iets' in XRAM (SRAM) moet staan voordat het werkt. Maar het ding doet best veel voor brakke hardware...

Voordat Fred nu die ICE gaat kopen: houd er wel rekening mee dat zo'n ding erg processor-specifiek is. Ofwel: jij hebt geen 'echte' 8051. Voor jou doel zou het ding dan best wel eens wat peripherals kunnen missen.

Overigens ligt er hier een Z80 board op de pijnbank. Best grappig om te zien dat ik in een uurtje tijd zonder schema met een multimeter zo'n 80% min of meer heb kunnen uitdokteren. Inmiddels 2x een overleden HC244 gevonden. Er is duidelijk wat heel erg raars gebeurd op die bus!

Reden waarom-ie hier ligt? Nou, het is weer zo'n stuk overjarige electronica wat vanwege 'goedgekeurd' in leven moet worden gehouden. Ding was dus dood, is bij de service afdeling van de NL-importeur geweest. Die konden een (waarschijnlijk door trillen) afgebroken pootje van een 7805 niet vinden... Tsja. Ach... Uiteraard een schreeuwerig ISO9001 op hun homepage.
Ik vermoed dat er iemand met meten per ongeluk een paar pootjes tegelijk te pakken gehad heeft. Er zitten een stel LM339's in. Die draaien op 24V ofzo. De outputs zitten aan de 244 en die vinden het vast niet leuk als je 24V op een ingang zet...
Nou ja, het zijn er maar 5. Waarvan ik van 2 geconstateerd heb dat ze een rot poortje hebben en 2 anderen verdenk. Alle 5 maar blind vervangen en dan eens kijken of het beter gaat...
Reden dat ik dit schrijf: een stuk of wat posts terug kwam een 138 voorbij. Hier zie je dus precies het gebruik wat ik toen beschreef: een stel 244 en een paar 273s op een bus waarbij een 138 met een bin. comperator de adressering doet.

EricP

mét CE

Oops... Iets met dubbelpost. Als er een modje voorbij komt: mag weg.

[Bericht gewijzigd door EricP op 6 maart 2018 09:14:22 (94%)]

Die 552 heb ik ook eens gebruikt op een CPU board, is de variant met I2C aan boord. Is in de schakeling gewoon de huis-tuin-en-keuken aansluiting op de eprom met een 373 latch ertussen. Standaard 80x51 schakeling. Daar kan weinig aan mis gaan.

Wat nog zou kunnen is dat de oscillator op een verkeerde frequentie loopt, maar dat heb je waarschijnlijk allang nagemeten of die klopt en niet op 1/3 van de werkelijke frequentie oid.

Een andere optie is dat de TX pin opgeblazen is, kortom CPU stuk. P.S. Ik moet er nog ergens een hebben liggen (80C552).

Je kunt het ding ook van een voetje voorzien als er genoeg ruimte omheen is.

Henri's Law 1: De wet van behoud van ellende. Law 2: Ellende komt nooit alleen.
fred101

Golden Member

Op 5 maart 2018 22:32:59 schreef EricP:
Ik vroeg het je al eerder Fred... Het is gewoon te raar voor woorden. Nogmaals: ik kan me voorstellen dat het een setting is (waar jij wellicht niet bij kunt).

Volgens de eigenaar heeft deze set altijd goed gewerkt. Ik ken hem goed genoeg om daarop te vertrouwen. Maar een keer extra vragen kan geen kwaad want dit hele gebeuren klopt gewoon niet.

Als ik niet beter zou weten zou ik denken dat deze PSI niet compatible is met deze Secutest of dat er idd iets in een of ander hidden menu fout staat.

- De PSI werkt op andere secutests wel
- Er is RS232 communicatie mogelijk want aangesloten op mijn laptop met terminal programma kan ik er mee communiceren. Hij verstaat mij en ik kan zijn antwoorden lezen. Ook de Compass heeft er geen moeite mee.

Afijn, eerst maar weer verder met andere reparaties tot ik weer een secutest binnen krijg. Dan kan ik met de Compass en LA beide vergelijken. Met wat geluk heb ik dan ook de uitlees software werkend. (mijn favorite taal, Python, ik heb daarin als eens zoiets gemaakt, een grafisch log-programma voor mijn Keithley 2000)

www.pa4tim.nl, Reparatie van meet- en calibratie apparatuur, ook oud en exotisch