Istituto Professionale di Stato per l'Industria e l'Artigianato MORETTO Via Luigi Apollonio, 21 BRESCIA Interfaccia tra PC e DAC con scheda LX833 aspetti Hardware e Software Realizzato da : CREMASCHINI MICHELE SCALVINI ALESSANDRO classe 5BI TIEE corso per Tecnici delle Industrie Elettriche ed Elettroniche Docenti : prof. Cleto Azzani prof. Vitonofrio de Trizio anno scolastico 1994-95 INTERFACCIA .............................................................................................................................................................. 3 SCHEMA ELETTRICO............................................................................................................................................... 3 GENERATORE DI FORME D'ONDA CON DAC0808. .......................................................................................... 5 CENNI SUL CIRCUITO ............................................................................................................................................... 5 CENNI SUI COMPONENTI UTILIZZATI.............................................................................................................................. 5 TRI-STATE O THREE-STATE ................................................................................................................................... 6 IL DAC0808................................................................................................................................................................. 6 CONVERTITORE DAC A 8 BIT R-2R ..................................................................................................................... 7 I PARAMETRI DI QUALITÀ DEI CONVERTITORI D-A. ........................................................................................................... 9 a) Risoluzione:.......................................................................................................................................................... 9 b) Tempo di assestamento (settling time): ................................................................................................................ 9 c) Glitch:............................................................................................................................................................... 9 GLI ERRORI NEI DAC. ............................................................................................................................................. 10 Errore di guadagno:............................................................................................................................................... 11 CONVERTITORE CORRENTE-TENSIONE.......................................................................................................... 11 SOFTWARE ................................................................................................................................................................. 11 FORME D'ONDA GENERATE ................................................................................................................................ 16 2 INTERFACCIA Questo è un circuito che permette di svolgere azioni di controllo, pilotaggio e molte altre funzioni comodamente seduti al proprio computer. L'interfaccia è una scheda che applicata ad un comune PC, e corredata di un apposito software, ci dà la possibilità di :eccitare dei relè, accendere delle lampade, pilotare l'accensione e lo spegnimento di caldaie, tener sotto controllo degli impianti di antifurto e moltissime altre applicazioni. SCHEMA ELETTRICO LOGICA DI BUS PC/XT CONTROLLO A30 B14 A1 IOR B13 A29 A31 IOW A2 A0 U1 1A1 1A2 1A3 1A4 2A1 2A2 2A3 2A4 I1 I3 I2 1Y1 1Y2 1Y3 1Y4 2Y1 2Y2 2Y3 2Y4 EA1 ERD U1 U3 U2 EWR EA2 EA0 1G 2G ECS VCC 74LS244 LOGICA DI R1 10K SELEZIONE A28 A27 A26 A25 A24 A23 A22 A11 U3 I0 I1 I2 I3 I4 I5 I6 I7 I8 I9 A3 A4 A5 A6 A7 A8 A9 AEN F0 F1 F2 F3 F4 F5 F6 F7 R2 10K R3 10K R4 10K CAMPO DI SELEZIONE JP1-ON $300-$307 JP1 JP2 JP3 JP4 JP2-ON $308-$30F JP3-ON $310-$317 PAL 16V8 JP4-ON $318-$31F EP.833/1 BUFFER DATI BIDIREZIONALE A9 A8 A7 A6 A5 A4 A3 A2 U2 A1 A2 A3 A4 A5 A6 A7 A8 D0 D1 D2 D3 D4 D5 D6 D7 B1 B2 B3 B4 B5 B6 B7 B8 ED0 ED1 ED2 ED3 ED4 ED5 ED6 ED7 G DIR 74LS245 +5V B1 B31 C1 B7 -12V B9 +12V B3 B29 10uF C2 C3 C4 100nF 100nF 100nF C1, C2, C3 vanno connessi sui GND pin di alimentazione di U1, U2, U3 +5V fig. 1 Circuito scheda LX833 Nuova Elettronica 3 In figura 1 è riportato lo schema base dell'interfaccia sperimentale LX833. Esso é principalmente costituito da tre integrati: IC1=SN74LS244 buffer per amplificazione di indirizzi e segnali di controllo linea. IC2=EP.833 PAL di transcodifica. IC3=SN74LS245 buffer bidirezionale per dati. Sull'area wrap (parte a bollini della scheda) è stato poi realizzato il nostro circuito sperimentale , "Generatore di forme d'onda " pilotato dal computer. Il circuito base preleva direttamente dal Bus del Pc i segnali presenti sul Data-Bus (D0-D7) e sull'address bus(A0-A9).I segnali di controllo sono : IOR , IOW , AEN . Sono presenti le tensioni di alimentazione ( + 5V , ± 12 V) utilizzate per l'alimentazione del circuito. Analizzando il circuito in figura 1, abbiamo: I segnali provenienti dal Bus del Pc A0-A1-A2: rappresentano i primi tre bit del Bus degli indirizzi. IOR : (Input Output Read),significa "lettura da un dispositivo Ingresso-Uscita".Ossia il computer "leggerà" il dato sulla scheda solo quando IOR è a livello logico basso. IOW : (Input Output Write),significa "scrittura verso un dispositivo Ingresso -Uscita". Il computer scriverà sulla scheda un dato solo quando su questo terminale avremo un livello logico basso. AEN : (Address Enable),significa "Abilitazione dell'indirizzo".Quando su questo terminale è presente un livello logico basso , significa che l'indirizzo presente in quell'istante sul BUS è valido. Segnale di selezione della scheda di espansione : ECS: (Expansion Chip Select),significa "selezione della scheda di espansione". Questo segnale fornisce l'abilitazione agli elementi circuitali presenti sulla scheda. Ciò avviene quando sul bus degli indirizzi è presente uno degli indirizzi contenuti entro il gruppo selezionato dal jumper chiuso. Il segnale ECS è attivo a livello basso. Segnali presenti sulla scheda : EDO-ED7 , rappresenta il data bus D0-D7 bufferizzato dall' integrato SN74LS245. EA0-EA2 , indirizzi A0-A2 bufferizzati dall' integrato SN74LS244. EWR , IOW bufferizzato dall' integrato SN74LS244 ERD , IOR bufferizzato dall' integrato SN74LS244 Cenni su alcuni integrati presenti sull'interfaccia Descrizione delle funzioni svolte dai tre integrati: SN74LS244: Questo integrato IC1 serve da Buffer per i segnali provenienti dal BUS degli indirizzi,per i segnali di lettura e di scrittura dei dati,in modo da separare le linee del Bus principale dai segnali portati all'esterno sulla scheda sperimentale. 4 EP388: Questo integrato IC2, è una PAL programmata, utile per decodificare gli indirizzi. E' un integrato che è già stato programmato da Nuova Elettronica.In ingresso giungono tutti gli indirizzi tranne i tre meno significativi (A0,A1,A2), ne deriva che l'abilitazione si attiverà su 8 indirizzi di I/O contigui come riportato in figura 2. fig.2 Jumper Jp1 Jp2 Jp3 Jp4 CAMPO $300-$307 $308-$30F $310-$317 $318-$31F GENERATORE DI FORME D'ONDA con DAC0808. Il circuito realizzato sulla wrap(area a disposizione dell'utente) è formato principalmente dal DAC0808, da un operazionale LM741 (in connessione convertitore I/V),da un 74LS374 (costituito da 8 latch tri-state) e da un porta OR 74LS32. VCC VCC A8 A7 A6 A5 A4 A3 A2 A1 VCC VEE GND VOUT IoW EWR JP1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 U2 D0 D1 D2 D3 D4 D5 D6 D7 U1 A8 A7 A6 A5 A4 A3 A2 A1 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 OC CLK VCC OUT IOUT 741 COMP VR- R3 IoR U2 IOUT VR+ 74LS374 U3A Rv C4 100nF C3 100nF DAC0808 5,6K R4 5,6K C2 100nF EWR 7432 fig. 3 Schema della interfaccia DAC CENNI SUL CIRCUITO Questo è un circuito che genera forme d'onda mediante la conversione, a mezzo DAC, di parole digitali di n bit, che vengono generate dal microprocessore , mediante l'apposito software. IL DAC dà in uscita una corrente che è proporzionale alla parola digitale in ingresso. Dato che a noi serve una tensione d'uscita dobbiamo convertire la corrente in tensione; questa è realizzata mediante l'uso di un apposito circuito utilizzante un operazionale. L'utilizzo dell'integrato 74LS374 tri-state è dovuto al fatto che il DAC0808 non è direttamente interfacciabile con il microprocessore . Questo circuito integrato provvede a memorizzare il dato che proviene dal Data Bus del PC. Il segnale di clock di questo integrato viene ricavato con una porta OR(74LS32) che combina i segnali EWR e ECS, entrambi attivi bassi. Cenni sui componenti utilizzati. IL 74LS374 è un registro parallelo a 8 bit e viene utilizzato come porta di collegamento. E' un dispositivo tri-state ed è quindi direttamente interfacciabile con il microprocessore. In tal modo il 5 dato, che è presente solo per tempi inferiori al microsecondo, viene memorizzato dai flip-flop e rimane disponibile per i dispositivi periferici. TRI-STATE o THREE-STATE La caratteristica Tri-State è utilizzata in generale per trasmettere informazioni (livelli logici) provenienti da diverse sorgenti su un unico bus evitando conflitti. Introdotta nel 1970 dalla National, questa può assumere 3 stati: -due stati logici convenzionali (0 e 1) -uno stato di alta impedenza (Hi-Z) Il DAC0808 Questo è un convertitore digitale-analogico, (DAC è l'acronimo di Digital Analogic Converter), Converte l'informazione binaria applicata in ingresso in una grandezza di tipo analogico (corrente nel nostro caso). Il segnale analogico in uscita è proporzionale al valore numerico della parola binaria applicata in ingresso. Un convertitore D-A è formato dalle seguenti unità funzionali : un generatore di tensione o corrente di riferimento(voltage reference), una rete resistiva (ladder) e un convertitore corrente tensione. La tensione di riferimento ottenuta dal generatore di tensione ha un'influenza diretta sul valore della tensione di uscita per cui deve essere estremamente precisa e stabile. Il convertitore correntetensione trasforma i livelli di corrente generati dalla rete resistiva in un segnale di tensione. Questo elemento , in genere , non è presente nel microcircuito in quanto il segnale di uscita tipico dai DAC è una corrente e quindi l'eventuale conversione corrente-tensione, viene effettuata da un circuito esterno. Nel nostro caso il circuito di conversione è costituito da un operazionale che analizzerò poi. L'equazione fondamentale di un convertitore digitale analogico è: bn bn −1 b + 2 +... + 1n ) 2 2 2 dove: Vu è la tensione d'uscita, Vref è la tensione di riferimento e bn-b1è la parola binaria d'ingresso .Come si può dedurre dall'equazione 1 la tensione d'uscita del convertitore non ha un valore continuo; infatti al variare del codice binario applicato in ingresso si ha, nella rete resistiva , una variazione di corrente discreta. Il nostro circuito si basa su questo principio per realizzare delle forme. Il gradiente di tensione misurabile in uscita è pari a: Vref Vu = Vref ( 2n La risoluzione della conversione del numero digitale dipende dal numero di bit che compongono la parola binaria in ingresso. Infatti dall'equazione 1 si deduce che il gradiente di tensione in uscita si riduce in modo proporzionale all'aumento del numero di cifre binarie utilizzate in ingresso. La precisione della conversione in questi convertitori dipende essenzialmente dalla precisione e dalla stabilità del valore delle resistenze che compongono la rete resistiva. I convertitori digitaleanalogico vengono classificati in funzione della configurazione circuitale della rete resistiva (ladder) utilizzata per convertire il segnale digitale. Le configurazioni piu' comuni sono: -rete resistiva a resistenze pesate -rete resistiva di tipo R-2R Noi usiamo il DAC0808 che al suo interno contiene una rete resistiva R-2R. 6 CONVERTITORE DAC A 8 BIT R-2R In fig. 4 è riportato lo schema di un convertitore R-2R, con parola a 4 bit; esso è costituito da un ladder di resistenze di valore R e 2R e da un amplificatore operazionale. Quattro switch elettronici pilotati dai corispondenti bit della parola digitale di ingresso danno la possibilità di connettere i quattro ingressi a Vref oppure a GND. Per chiarire il funzionamento del circuito si fa riferimento ad un esempio. Si determini il valore di tensione ottenibile in uscita del convertitore di fig. 4, quando all’ingresso sia applicata la parola binaria: C3 C2 0 1 C1 C0 0 1 si desidera una tensione di fondo scala in uscita Vr = Vfs = 10V. Vref 1 0 1 0 1 0 1 0 2R 2R N0 C0 R 2R N1 C1 R 2R N2 C1 3R R Is 2R C3 2R Vu N3 fig. 4 RETE R-2R E' semplice pervenire alla soluzione utilizzando il principio di sovrapposizione degli effetti, ovvero ricavando la corrente Is prodotta da un solo deviatore alla volta allorché viene posto a “1” mentre tutti gli altri sono posti a zero. Successivamente si ricaverà il risultato finale corrispondente ad una parola binaria la sommando gli effetti prodotti dai suoi bit a “1”. In fig. 5 è riportata la configurazione circuitale ottenuta con Co ad “1”, mentre tutti gli altri ingressi sono a “0”; per semplicità sono stati eliminati i deviatori, sostituendoli con collegamenti. Si osservi che da ciascun dei nodi esce, verso il convertitore corrente tensione, una corrente pari alla metà di quella entrante; indicando con INI la corrente entrante nel nodo generico, si ha pertanto: I Ni = I N i−1 2 ovvero, nel caso di fig. 4: IN3 I I I IN 3 = N 2 IN 2 = N1 IN1 = N 0 2 2 2 2 In genere, il contributo dato alla corrente Is dal nodo ennesimo vale: IS = Is = IN0 2n (3) si osservi che n esprime la posizione del nodo, valutata a partire dal convertitore, ovvero: 7 nodo n N3 1 N2 2 N1 3 N0 4 Nello schema in fig. 5, ogni nodo vede (verso il convertitore), il parallelo di due resistenze di valore 2R, ovvero una resistenza R; se ne conclude che: IN0 = Vref 3⋅ R Applicando la (3), si ricava che, con il solo commutatore Co a 1 e gli altri a zero, la corrente Is risulta: IS = In generale : Is = Vr Vref 1 3R 24 ⋅ Vref ⎛ 1 1 1⎞ ⎜C0 n + C1 n−1 +...+Cn−1 1 ⎟ 3R ⎝ 2 2 2⎠ 2R 2R N0 R 2R N1 R 2R 3R N2 R 2R 2R N3 Is - Vo + Fig. 5 Convertitori di tipo R-2R Nel caso della parola binaria data: Is = Vref ⎛ 1 1 1 1 ⎞ Vref ⎜1 ⋅ 4 + 0⋅ 3 + 1⋅ 2 + 0 ⋅ 1 ⎟ = ⋅ 0,3125 3R ⎝ 2 2 2 2 ⎠ 3⋅ R Ricordando che nel convertitore corrente-tensione risulta: Vu = − I s ⋅ 3R → Vu = 10⋅ 0,3125 = 3125 , V 8 I parametri di qualità dei convertitori D-A. a) Risoluzione: costituisce l’unico parametro dei DAC analizzato fino ad ora; rappresenta il livello di tensione d’uscita, corrispondente al bit meno significativo (LSB) della parola da convertire. E’ legato alla tensione di riferimento, dalla relazione: 1 1 ovvero Vref n [V ] R(% ) = n ⋅ 100 2 2 L’espressione della risoluzione, formulata come sopra, è riferita al valore di Vr che, come si è visto, può può essere modificato per esigenza d’impiego del DAC. I costruttori preferiscono pertanto definire la risoluzione come numero n di bit, fornendo cioè una grandezza che di fatto è legata al valore relativo della risoluzione dalla relazione: n = lg 2 100 R( % ) Secondo tale modalità, si riportano in tabella i valori di risoluzione di alcuni componenti commerciali: DAC 0800 n 8 bits DAC 0808 DAC 0830 DAC 1000 DAC 1230 8 bits 8 bits 10 bits 12 bits b) Tempo di assestamento (settling time): è il tempo che intercorre tra l’applicazione di una parola binaria all’ingresso e la disponibilità, all’uscita, della tensione ad essa corrispondente, con il minimo errore possibile. Il minimo errore possibile ha in genere valori pari a metà del peso del bit meno significativo. Per comprendere appieno il significato della definizione, si osservi che un DAC si comporta come un qualsiasi sistema ai cui ingressi vengono applicati dei gradini, corrispondenti ai bit di parola che cambiano di stato nel passaggio dal codice attuale al precedente. La presenza di componenti reattivi all’interno di un DAC, determina un comportamento dinamico nella presenza ai gradini, che può esaurirsi in modo aperiodico smorzato (esponenziale), oppure periodico smorzato (sinusoide a smorzamento esponenziale d’ampiezza), in funzione dello stato dei poli della funzione di trasferimento. In tale condizione, il tempo di assestamento, rappresenta l’intervallo di tempo tra l’istante in cui vengono applicati i gradini corrispondenti alla parola d’ingresso e quello in cui l’uscita rimane all’interno della fascia ε = 1 / 2 LSB, che rappresenta il valore accettabile per il sistema. Nella maggior parte dei convertitori commerciali, gli elementi reattivi hanno valori tali da dar luogo a risposte periodiche smorzate. Questo significa che le costanti di tempo sono tali da determinare poli complessi coniugati a parte reale negativa della f di t del sistema. E’ immediato comprendere che il tempo di assestamento, a parità di DAC, dipende dal numero di bit della parola. Si riportano in tabella i tempi di assestamento di alcuni componenti commerciali: Ta DAC 0800 DAC 0808 DAC 0830 DAC 1000 DAC 1230 100 nsec 150 nsec 1microsec 500 nsec 1 microsec c) Glitch: 9 è l’insieme delle sovratensioni transitorie che si sovrappongono ai livelli di tensione dei singoli bit della parola da convertire. Il glitch dipende da due cause: -i diversi tempi di commutazione delle porte di trasmissione; ·-le costanti di tempo del circuito. E’ evidente che ogni bit di parola che cambia stato rispetto alla parola precedentemente convertita, contribuisce alla formazione del glitch complessivo, in modo dipendente dalla porta di trasmissione che lo gestisce e dalle parti circuitali che attraversa. L’unico accorgimento che consente di ridurre l’effetto del glitch, è l’impiego di un circuito di sample-hold all’uscita del convertitore; l’effetto del sample-hold è infatti quello di mantenere stabile per un certo tempo il livello di segnale decodificato. Poiché il glitch costituisce un transitorio di breve durata, si può ritenere che sia contenuto entro il tempo di assestamento, pertanto è sufficiente che il sample-hold prelevi la tensione allorché è assestata, per ridurre notevolmente gli effetti del glitch. Gli errori nei DAC. Si esamina l’effetto degli errori nei DAC, unendo la definizione alla rappresentazione grafica sulla caratteristica di trasferimento. La linearità di un DAC è la conservazione della proporzionalità tra entità della variazione del codice digitale d’ingresso e corrispondente variazione della grandezza di uscita in ogni punto nel campo di conversione. La linearità ideale di un DAC corrisponde ad un insieme di punti, dato che il codice digitale d’ingresso (Ni) assume valori discreti, giacenti su una stessa retta: in fig. 7a è riportato il caso relativo ad un DAC a 3 bit, nell’ipotesi che la grandezza di uscita sia una tensione Vu. In pratica, tale parametro, nei dispositivi disponibili sul mercato, viene specificato come inferiore a ½ LSB. La linearità di un DAC dipende principalmente dalla precisione e dal grado di variazione con la temperatura dei valori di resistenza della sua rete resistiva. Il fatto che il valore di linearità non ecceda il valore 1/2 LSB è importante per la conservazione della monotonicità del DAC: questa caratteristica indica che al crescere del valore del segnale digitale d’ingresso (Ni), si ha un aumento della grandezza di uscita, mentre al decrescere del valore Ni deve aversi una diminuzione del segnale d’uscita. Supponiamo d’ora in avanti, ed è il caso più comune, che la grandezza d’uscita sia una tensione Vu: se l’errore di linearità fosse superiore a 1/2 LSB potrebbe accadere che, detta Vu1 la tensione convertita relativa al numero digitale N1, al numero N2 = N1 +1 (incremento di un LSB) corrisponde una tensione Vu2 < Vu1 , nel caso gli errori fossero di segno opposto, positivo per Vu1 e negativo per Vu2, e di valore assoluto superiore a 1/2 LSB , si ottiene una conseguente perdita della monotonicità. L’accuratezza è il grado in cui la tensione d’uscita del convertitore si avvicina alla Vu di un DAC ideale. La risposta di un DAC ideale (tensione a gradino di fig. 7a) incontra la retta congiungente lo zero con il valore di fondo scala nel punto mediano di ogni gradino di bit. I principali fattori che influenzano tale parametro sono: l’errore di linearità, le oscillazioni della tensione di riferimento e le variazioni di guadagno dell’amplificatore operazionale presenti nel convertitore. La sensibilità termica è il grado in cui la Vu del DAC varia per effetto solo della variazione di temperatura, cioè a parità di segnale digitale (N1) d’ingresso. Il tempo di stabilizzazione è l’intervallo di tempo intercorrente tra la variazione del segnale digitale d’ingresso e il corrispondente raggiungimento da parte della Vu del valore finale Vuf, a meno di un prefissato piccolo errore percentuale: p.es 0,5% dal valore di fondo scala. In fig. 7b, to è l’istante di tempo a partire dal quale Vu rientra nella tolleranza stabilita: risulta quindi che il tempo di stabilizzazione sia uguale a: 0 L’oscillazione della Vu è causata da vari fattori, tra cui la configurazioni spurie momentaneamente presenti agli ingressi del DAC p.es nel passaggio da 0111 a 1000 per un convertitore a quattro bit. 10 Vu Vu 7 6 5 4 3 2 1 Vuf Vui Ni 000 001 010 011 (a) linearita' 100 101 110 t di stabilizzazione to 111 t^1 t (b) stabilizzazione F1g. 7a-b Errore di guadagno: è una tensione d’uscita pari al fondo scala e l’effettivo codice che produce il fondo scala. la differenza (nominalmente espressa in LSB) tra il codice d’ingresso che dovrebbe dar luogo ad una tensione d'uscita pari al fondo scala e l'effettivo codice che produce il fondo scala. CONVERTITORE CORRENTE-TENSIONE Con gli amplificatori operazionali si possono realizzare i convertitori corrente-tensione (current-voltage conversion).Il convertitore I-V presenta in uscita una tensione che è linearmente dipendente dalla corrente in ingresso Ie. La relazione che lega la tensione di uscita Vo e la corrente di ingresso vale: V0 = − Rv ⋅ I SOFTWARE Il software di gestione dell'interfaccia è stato redatto in ambiente Turbo Pascal 5.5. Con questo programma sono state create le forme d'onda riportate in fondo alla relazione:onda QUADRA, TRIANGOLARE, SINUSOIDALE e RAMPA. Con semplici comandi si possono creare forme d'onda di qualsiasi tipo lasciando libero sfogo alla propria immaginazione. Quelle da noi create sono le piu' basilari : onda quadra , triangolare, a rampa e sinusoidale. Prima di utilizzare l'interfaccia nelle sue complete funzioni , abbiamo testato la basetta nei punti più' importanti , quali il pin di ECS, EWR, ERD ed il clock del 74LS374. Si è iniziato con un semplice programma, che doveva fare eseguire ripetutamente al processore operazioni di scrittura sulla scheda di interfaccia; attraverso un oscilloscopio abbiamo controllato l'andamento nel tempo del segnale EWR . 11 Procedure WRITEDAC; { Programma di test scheda in modo WRITE } Begin REPEAT port[DAC]:=$00; { Scrittura dalla scheda DAC } UNTIL FALSE; End; L'operazione svolta dal programma è di semplice comprensione. Concettualmente il computer non fa altro che scrivere 0 sul port di scrittura . Il loop serve per ottenere un segnale continuo e quindi visualizzabile sull'oscilloscopio. La forma d'onda in uscita è riportata in figura. Come si nota dal grafico, il segnale EWR è attivo basso. Lo stesso principio è stato usato per il programma di lettura qui riportato: Procedure READ; { Programma di test scheda in modo READ } var H:byte; Begin REPEAT H:=port[DAC]; { Lettura dalla scheda DAC } UNTIL FALSE; End; 12 In figura si nota il segnale ERD , di durata maggiore dell' EWR , anch'esso attivo basso.Prendiamo in esame ora la creazione di un onda triangolare. Procedure TRIANGOLARE; Begin REPEAT DATO:=0; REPEAT { fase crescente: 255 campioni} port[DAC]:=Dato; Dato:=Dato+1; UNTIL DATO=255; REPEAT { fase decrescente: 255 campioni} port[DAC]:=Dato; Dato:=Dato-1; UNTIL DATO=0; Until FALSE; END; In questa procedura viene creata l'onda triangolare semplicemente facendo incrementare una variabile (Dato) che poi viene portata in uscita. Questo incremento si ripete fino a che non si raggiunge il numero 255; poi si ha il passaggio al loop successivo che svolge la funzione di decremento fino a che non raggiunge lo 0. Dopo di che ricomincerà da capo realizzando così l'onda in figura . 13 PROGRAM INTERFACCIA (INPUT,OUTPUT); USES CRT; VAR K : INTEGER; ADDR,DAC : WORD; Dato : byte; Dato1 : real; X : array[0..255] of byte; Procedure READ; { Programma di test scheda in modo READ } var H:byte; Begin REPEAT H:=port[DAC]; { Lettura dalla scheda DAC } UNTIL FALSE; End; Procedure WRITEDAC; { Programma di test scheda in modo WRITE } Begin REPEAT port[DAC]:=$00; { Scrittura dalla scheda DAC } UNTIL FALSE; End; Procedure CALIBDAC; Begin Gotoxy(10,15); Write(' Numero per DAC (0-255) '); Readln(Dato); port[Dac]:=Dato; End; 14 Procedure RAMPA; BEGIN Repeat DATO:=0; REPEAT port[DAC]:=Dato; Dato:=Dato+1; UNTIL DATO=255; Until FALSE; END; Procedure TRIANGOLARE; Begin REPEAT DATO:=0; REPEAT port[DAC]:=Dato; Dato:=Dato+1; UNTIL DATO=255; REPEAT port[DAC]:=Dato; Dato:=Dato-1; UNTIL DATO=0; Until FALSE; END; Procedure QUADRA; Begin REPEAT DATO:=0; port[DAC]:=DATO; Delay(1); DATO:=255; port[DAC]:=dato; Delay(1); UNTIL FALSE; END; Procedure SINE; var k,n:integer; Begin k:=0; n:=255; repeat DATO1:=128+127*sin(2*Pi/n*k); x[k]:=round(DATO1); k:=k+1; UNTIL k=256; REPEAT k:=0; 15 repeat port[DAC]:=x[k]; k:=k+1; UNTIL k=256; UNTIL FALSE; END; BEGIN { PROGRAMMA PRINCIPALE } ClrScr; ADDR:=$300; { $300-$307 campo di indirizzamento della scheda } DAC := ADDR; Repeat ClrScr; Gotoxy(10,1); write('INTERFACCIA LX-833 '); Gotoxy(10,3); WRITE('1- TEST DAC READ MODE '); Gotoxy(10,5); WRITE('2- TEST DAC WRITE MODE '); Gotoxy(10,7); WRITE('3- Calibrazione DAC '); Gotoxy(10,9); write('4- RAMPA '); Gotoxy(10,11); write('5- TRIANGOLARE '); Gotoxy(10,13); write('6- QUADRA '); Gotoxy(10,15); write('7- SINUSOIDALE '); Gotoxy(10,20); WRITE('0-FINE'); Gotoxy(11,22); Readln(k); Case K of 1: READ; 2: WRITEDAC; 3: Calibdac; 4: RAMPA; 5: TRIANGOLARE; 6: QUADRA; 7: SINE; End; until K=0; END. (segue) FORME D'ONDA GENERATE Con il programma sopra indicato abbiamo generato anche le seguenti forme d'onda;. mediante 'interfacciamento con un oscilloscopio HP54600B tra il circuito e il computer è stato possibile riportare nella relazione le forme d'onda seguenti. 16 FIG.1 forma d'onda rilevata su ECS FIG.2 forma d'onda rilevata su ll'uscita della OR, clock del 74LS374. 17 FIG.3 forma d'onda d'uscita con programma RAMPA. FIG.4 forma d'onda d'uscita con programma QUADRA. 18 FIG.5 forma d'onda d'uscita con programma SINUSOIDE. 19