Taal:
DAC8/DDAC8. (Digitaal Analoog Convertor, 8 bits)

Gebruik:

Een door de computer opgegeven waarde wordt vertaald naar een gelijkspanning tussen 0 en 2,5 Volt. De print is verkrijgbaar met 1 of 2 analoge uitgangen.

 

Toepassing als variabele spanningsbron, als functiegenerator, of als omzetter van digitaal geluid opgenomen met een ADC8-print- in het signaal nodig voor een geluidsinstallatie.

(Click op het plaatje)
(Click op het plaatje)
Technische specificaties:

De DAC8-print beschikt over één analoge uitgang; de dubbele-DAC8 over twee analoge uitgangen. In 255 stapjes van elk 10 mV kan een uitgangsspanning geprogrammeerd worden vanuit het computerprogramma, dus tot maximaal 2,55 Volt.

De nauwkeurigheid is beter dan 1 lsb bij een mogelijke offset van 1 lsb zodat bij volle schaal de hoogst mogelijke fout minder dan 1% bedraagt. De conversietijd is minder dan 1 microseconde, zodat normaliter in hoofdzaak het gebruiksprogramma de snelheid bepaalt, waarmee de spanning op de uitgang gevarieerd kan worden.

De analoge uitgang kan maximaal een 5 mA stroom leveren.

Schakeling: (De D/A-conversie)

 

De D/A-conversie wordt gestart door het geven van een chip select (CS) en een chip enable (CE), Dit gebeurt door de not-CS en de not-CE van de waarde 1 te veranderen in de waarde 0. Zolang deze situatie gehandhaafd blijft is de D/A-conversie-IC 'transparant', d.w.z, iedere verandering op de data-lijnen wordt vertaald in een veranderende uitgangsspanning. Dit proces wordt gestopt door not-CS en not-CE weer de waarde 1 te geven.

 

Behalve de transparante toestand kan eenmalig een waarde uitgestuurd worden als gelijkspanning door één van de twee van 1 naar 0 te veranderen, onverschillig welke. De not-CE en not-CS zijn aangesloten op twee adreslijnen, die actief worden bij het adresseren van (printadres + 1)

Voor de DAC8 worden alleen de bits 0 en 1 gebruikt; voor de DDAC8 bits 0 en 1 voor D/A-IC nummer 1 en bits 2 en 3 voor de D/A-IC nummer 2.

Adressering:

 

Adressering vindt geïnverteerd plaats. Met de beide DIL (Dual In Line) schakelaars vande (D)DAC8 print op de Off positie is het adres van de print 191 door de vaste verbinding op bit 6, Met de schakelaars kan hiervan gemaakt worden 189, 187 en 185, Nieuwe adressen zijn te vormen door een verbinding te maken op het nog niet doorverbonden adresbit 3 (printpositie 4), De gereserveerde ruinte loopt dus van 177 t/m 191oplopend met 2 (bit 0 wordt niet gebruikt !!),

 

Om de (D)DACB-print te bedienen moeten drie signalen naar de print gestuurd worden:

 

- De data die geconverteerd moeten worden tot gelijkspanning.

- Het adres om de print te activeren,

- De opdracht om de cpnversie uit te voeren.

 

De eerste handeling wordt uitgevoerd door de data op de data-uit-bus te plaatsen.

 

De tweede handeling door het printadres uit te sturen op de adres-bus. Dit byte wordt vergeleken met het ingestelde adres op de print (switch-posities 2 en 3 + vaste verbinding op positie 7) door middel van 2 4-bits comparatoren (U2 en U3). Bij gelijkheid worden de databits ingeklokt in de latch U5. Hier blijft het byte behouden totdat de print opnieuw geadresseerd wordt met een afwijkende waarde op de data-bus.

 

Voor de derde handeling, het aansturen van de conversie, zijn geen aparte stuurlijnen ter beschikking en daarom wordt hiervoor een apart UNIFACE-adres gebruikt, dat één eenheid verschilt met het printadres.

Vandaar ook, dat positie 1 niet gebruikt wordt voor de adressering van de print, zoals dit wel gebeurt met andere functionele printen uit het UNIFACE-systeem.

Hoe te programmeren:

 

Tot nu toe werd het 8-bits getal, det op de adresbus stond, meteen vergeleken met de instelling van de DIiL-schakelaars op de UNIFACE-kaart dit resulteerde dan in één signaal, dat gebruikt werd voor de electronische bediening van de betreffende schakeling.

 

Bij een DAC8 kaart gebeurt dit anders. Hier wordt een 7-bits adresbus-getal (bit 1 t/m 7) vergeleken met de stand van de DIL-schakelaars en de overige verbindingen op de print.

 

U zult zieh dan meteen afvragen wat er in dit geval met het ‘nulde’ bit gebeurt.

 

Aan bit 0 wordt een extra decoder toegevoegd, samen met het selectie signaal dat de adrescomparator produceert, wanneer bit 1 t/m 7 overeenkomen met het ingestelde (even) kaartnummer. Bit 0 kan dus de waarde 0 of 1 hebben.

 

Wanneer de adrescomparator reageert op het (even) adresbusgetal en bit 0 is laag (0) dan wordt register 1 geactiveerd door de decoder, is daarentegen bit 0 hoog (1) dan wordt register 2 geactiveerd.

Hieruit volgt dat voor de aansturing van de DAC8-kaart eigenlijk twee kaartnummers nodig zijn, namelijk:

 

-Het ‘even’ kaartnummer. (ingesteld met de DIL-schakelaars en overige verbindingen voor de bediening van register 1)

 

-Het van het 'even’ kaartnummer afgeleide kaartnummer. (welke één hoger is en register 2 bedient)

 

Voorbeeld:

 

Stel we willen 1 Volt op de uitgang(en) van de (D)DAC8 print zetten.

We beginnen dan met de getalswaarde 100, die met 1 Volt correspondeert, op de data-bus te zetten:

 

OUT X, 100

 

X is het nummer van de gebruikte koppel I/O poorten (X en X+1) van de computer en is gelijk aan 96 voor de P2000, 48 voor de MSX en 784 voor de PC.

 

Vervolgens wordt de print geadresseerd:

OUT X+1,255-(adres+1) <-- Adres is het geïnverteerde kaartadres (255-(64+1)=190)

 

De waarde 100 bereikt nu de (D)DAC8-print. Vervolgens moet de D/A-conversie opgestart worden door het nul maken van de eerste 4-bits op het adres van de print = 64, ofwel geïnverteerd 255-64=191. Dit gebeurt met:

 

OUT X+1,191: OUT X,0

 

Vanaf dit moment worden veranderingen op de databus van het printadres doorgegeven. Als we de uitgestuurde waarde van 1 Volt willen veranderen in 1,5 Volt, lukt dit met:

 

OUT X+l,adres: OUT X,150

 

Het niet transparant maken van de D/A-IC,' geschiedt door de bits 0 t/m 3 op adres 191 op enen te brengen:

 

OUT X+1,191: OUT X,15

 

De waarde van 1,5 Volt blijft nu gehandhaaft ook bij veranderingen op de data-bus. Het afzetten van IC-1 gebeurt met het gebruik van de waarde 3 i.p.v. 15. Alleen afzetten van IC-2 dus met 12 i.p.v. 15.

 

Subroutines: (voorbeeld middels een programma)

 

Dit programma is geschreven voor Personal Computers (PC's XT of AT.

Door het veranderen van de variabelen ’DB' (databus) en 'AB' (adresbus) in overeenkomstige waardes voor P2000 en MSX zal het ook op deze types werken.

 

Als kaartnummer is 64 genomen (het inverteren gebeurt in het programma)

10 'Voorbeeld UNIFACE DIGIN
20 '
30 '8 input
40 '
50 CLS
60 WIDTH 37
70 KEY OFF
90 PRINT"                  UNIFACE INPUT"
100 PRINT"                  ============="
110 PRINT
120 PRINT" Dit is een van de vele  "
140 '
150 '
160 PRINT"De adresbus wordt nu intermitterend aangestuurd."
170 PRINT:PRINT"(Stoppen met CTRL-BREAK/STOP)"
180 '
190 ' Aansturing adresbus met geinverteerd kaartnummer
200 '
210 OUT AB,255-KA
220 FOR N=i TO 5:PLAY"a":NEXT N ' Wachtlus en geluidsignaal
230 OUT AB,O ' Aansturing adresbus met 0
240 FOR N= iTO 5:PLAY"c":NEXT N ' Wachtlus en geluidsignaal;
250 GOTO 210 ' Opnieuw
260 END

Samenvatting:

 

Zoals in het voorbeeldprogramma te zien is, geldt ook hier:

 

- Geef in het hoofdprogramma de betreffende variabelen hun waarde,

- Roep de bedieningssubroutine aan.

 

In de subroutine wordt bet kaartnummer geïnverteerd. U kunt in uw eigen (hoofd) programma normale kaartnummers gebruiken.

 

De Digitaal Analoog Convertor op de (D)DAC8-kaart is zeer snel. Dit maakt het bijvoorbeeld mogelijk om audiogeluid, dat met de ADC8 gesampled is, weer uit de computer te krijgen en dan op een versterker te zetten.

 

Sturing DDAC8-print:

 

Het UNIFACE programma omvat niet alleen een DAC8-kaart, maar ook een

DDAC8-kaart. Het verschil bestaat hieruit, dat er op de DDAC8-kaart een tweede DAC-IC gemonteerd is. Dit IC krijgt zijn data ook via register 2 Alleen de benodigde twee stuursignalen komen nu niet van bit 0 en 1 van register 1, maar van bit 2 en 3.

 

Om de tweede DAC aan te sturen komt dan in het subroutine voorbeeldprogramma voor de DAC8-kaart op regelnummer 290 de opdracht ‘OUT DB, 12',

Verder blijft alles gelijk.

---