GIER/RC2000 fejl April 2013
Fejlsøgning på RC2000 læseren på vores GIER, April 2013
Vi fik i starten af 2013 et problem med RC2000 læseren på GIER:
Uanset hvilken strimmel der blev forsøgt læst, stoppede GIER med paritetsfejl efter ca. 1 meter strimmel. Det originale testprogram til RC2000 viste flere fejl på skift, men oftest at et tegn blev gentaget -altså RC2000 sendte nogle tegn 2 gange.
Det kunne godt ligne et problem som er relateret til at RC2000 bufferen løber tom for tegn.
Fejlen kom og gik en overgang, og der var mistanke om at fejlen lå i GIER.
Hvordan GIER og RC2000 snakker sammen
Interfacet er ganske simpelt: GIER sender en START puls til RC2000 når den skal bruge et tegn, og RC2000 sender en KLAR puls til GIER når tegnet står på dataledningerne. KLAR skriver tegnet ind i BL registeret i GIER. I RC2000 dokumentationen ser det sådan her ud:
Hvis der er et tegn klar i bufferlageret, er "BUSY" perioden nogle få mikrosekunder. Hvis ikke, kan RC2000 være "BUSY" i vilkårligt lang tid, hvis der f. eks. ikke er sat strimmel i læseren.
Bemærk at polariteten af RA og START er modsat på denne tegning, i forhold til beskrivelsen og målingerne nedenfor.
Et (mere) simpelt testprogram
Følgende testprogram viste sig nyttigt til fejlsøgningen. Det læser et tegn fra RC2000, venter et stykke tid, og læser igen. Dette fortsætter (med en "uendelig" strimmel i RC2000) til der kommer paritetsfejl eller programmet stoppes manuelt.
[0] ly 16 ; læs tegn [1] pa 2 t256 ; sæt antal i venteløkke [2] bt t-1 ; tæl ned og test [3] hv 2 ; hop løkke [4] hv 0 ; hop læs
Ventetiden justeres med tælletallet (her 256) i pa ordren.
Det viste sig at med "antal" sat til 1 eller 2, kom der paritetsfejl efter ca. 1 meter strimmel. Med større værdier kom der ingen fejl. Med 256 læser RC2000 meget langsomt!
Det er oplagt at sætte et scop på START og KLAR signalerne, og se om man kan se noget påfaldende når læsningen stopper. Og det kan man:
Begge signaler er aktiv lav.
Første læsning er OK; KLAR pulsen kommer ca. 80 us efter START.
I 2. læsning kommer KLAR ca. 40 us efter START - og så kommer der en ekstra KLAR puls, uden at der har været nogen START. Hmmm...
Det forsvundne kredsløb
Som det mere eller mindre fremgår af timingdiagrammet ovenfor, er KLAR afledt af RA signalet, med noget forsinkelse. I de versioner af RC2000 via har diagrammer af, sidder kredsløbet til at danne KLAR på kortposition B0, sammen med de andre interface-kredsløb ud af RC2000. Men som forklaret i RC2000 findes der 2 generatrioner af RC2000. Vi har kun diagrammer af 2. generation, og RC2000 på vores GIER er af 1. generation, hvor interface-kredsløbene er fordelt ud på flere kort. Så hvor sidder KLAR-kredsløbet i 1. generation?
Det viser sig at sidde i kortet i pos. B2, sammen med en del af læse-logikken. Og det ser sådan her ud:
Tallene i parantes er ben-numre på kort-konnektoren. Indgangen RA er -8V når der er en læsning igang (BUSY), og 0V ellers.
Det virker som følger:
I hvile holdes T1 tændt af de 39K, og dermed er T2 tændt. T3 holdes tændt af de 10K på dens basis.
Når en læsning starter (START fra GIER) går RA på -8V. C1 lades op gennem T1; basisstrømmen øges, men det ændrer ikke transistorens tilstand.
Når RA går på 0 igen trækkes T1's basis med op, og slukker T1, og dermed T2. C2 lades så op gennem basis på T3; det ændrer ikke T3's tilstand.
Nu aflades C1 gennem de 1+39K, indtil T1 - og dermed T2 - tænder igen. Det er denne tid som giver de 50-100 us forsinkelse på KLAR pulsen.
Når T2 tænder, trækkes basis på T3 op og slukker denne i den tid det tager at aflade C2. Dette giver pulsbredden på ca. 15 us på KLAR.
Hvorfor kommer der mon 2 KLAR pulser?
Det finder man ud af ved at kigge på RA-signalet på ben 12:
Læg mærke til den negative flanke - altså der hvor læsningen starter. Efter nogle us stiger signalspændingen med flere Volt. Hvis man kigger på diagrammet af "KLAR-generatoren" ovenfor er det klart at RA kun skal gå positiv med 100 mV eller mindre (afhængig af timing i forhold til C1 tidskonstant), før T1 slukker. Så det må være en fejl at RA ser sådan ud.
Bemærk også den meget korte RA puls der kommer senere. Det er helt normalt; som sagt er læsning af et tegn afsluttet indenfor få us, med mindre bufferlageret er tomt. Det "underlige" forløb når ikke at komme på de korte læsninger; derfor optræder vores fejl kun når RC2000 læser med fuld hastighed og bufferlageret bliver tømt.
Så må vi se på hvor RA signalet kommer fra. RA-vippen sidder på kortet i pos. B5.
Den venstre SFT228 har åbenbart problemer med at holde sig helt lukket. At den lukker helt i starten af forløbet skyldes de 390 pF på basis, som er der for at øge skiftehastigheden.
Hvis man under langsom læsning løfter læsehovedet på RC2000, bliver RA fast "BUSY", og man kan måle de statiske spændinger i kredsløbet:
Venstre SFT228: Kollektor svinger mellem -4 og -5 V, basis svinder omkring -200 mV. Højre SFT228: Kollektor ligger på -60 mV.
Der burde ligge mellem +1 og +2 V på venstre basis... og det er ikke den højre transistor som laver ballade. Det kan så være OA95 dioden, eller selve den venstre transistor.
Dioden er nem at skifte da vi har masser af brugbare erstatninger. Så det var selvfølgelig ikke den, men transistoren.
Reparation
SFT228 er ikke noget vi ligger inde med som løs reservedel, men formanden havde tilfædigvis en SFT226 i tasken(!). Det er en lignende transistor, som kan tåle 40V (mod 24), men har lavere strømforstærkning og båndbredde. Man kan finde shortform data på begge + datablad på SFT228 (på fransk) på datasheetarchive.com. Forskellen er ikke større end at vi godt tør sætte en SFT226 i som erstatning.
Med sådan en "ny" transistor ligger basis positiv som den skal når RC2000 er "BUSY", og læseren fungerer som den skal.