Sunteți pe pagina 1din 15

PRELUCRAREA SEMNALELOR I INFORMAIEI

Achiziia i reconstrucia semnalelor


Conversia analog-digital

Coordonator: Prof. dr. ing. Petru Dobra

Doctorand: Iulian Pop

Cluj-Napoca 2009 1

Achizi ia
Conversia

I.

Orice proces fizic este

n logica boolean, sunt n sens fizic, semnalele digitale (discrete) (fig. 2) sunt Spre deosebire de prelucrarea semnalelor logice, cealalt noiune a tipului de

FOR Unitate complet de comand i control / PC Mrimi electrice Mrimi neelectrice Fig. 1. Proces de studiu PRESIUNE DISTAN

+7V

+5V 0V Fig. 3. Forma semnalului logic

0V Fig. 2. Forma semnalului analogic II. Procesarea semnalelor

Reglarea mrimilor din proces (de obicei neelectrice: presiune, for, distan) se realizeaz cu uniti performante de calcul, care utilizeara numai semnale electrice. n acest scop, pentru compatibilitatea dintre mrimea de reglat i unitatea de comand, sunt necesare dou transformari importante, n sensul fluxului de informaie de la proces la unitatea de procesare: 1. Conversia mrimii neelectrice n mrime electric (presiune tensiune, semnal analogic); 2. Conversia mrimii electrice (semnal analogic) n semnal digital. Pentru sensul invers al fluxului informaional, n scopul aplicrii comenzii generate de unitatea de procesare asupra actuatoarelor avem urmtoarele dou transformri: 1. Conversia semnalului digital n semnal analogic; 2. Conversia semnalului analogic n mrime neelectric (de execuie). Pentru fiecare transformare din cele de mai sus exist cte o unitate specializat n conversia semnalului, astfel: 1. Conversia mrimii neelectrice n mrime electric (semnal analogic) este realizat de ctre traductoare; 2. Conversia semnalului analogic n semnal digital este realizat de ctre convertorul analog-digital); 3. Conversia semnalului digital n semnal analogic este realizat de ctre convertorul digital-analog; 4. Conversia semnalului analogic n mrime neelectric (acionarea propriu-zis) este realizat de ctre driverele de interfa. Din cele expuse anterior nelegem c exist trei uniti de interfa ntre procesorul digital de semnal i proces: traductoarele, convertoarele i driverele. Figura 4 reprezint relaia dintre aceste ase elemente.

Unitate digital de procesare a semnalelor

Convertor digital-analog

Drivere de interfa Procesul de controlat

Convertor analog-digital

Traductoare

Fig. 4. Locul i rolul convertoarelor n reglarea automat 3

A. Unitatea central de procesare digital a semnalelor Dup cum este indicat i n figura 4, unitatea central de procesare a semnalelor se afl ntre blocurilor convertoare de semnal. nterfa a cu acestea este ntotdeauna n format digital ceea ce i consacr denumriea de procesor digital de semnal (DSP). Procesarea digital a semnalelor este o tehnic legat strict de un computer sau un microcontroller programat s aplice la ieire un semnal digital n funcie de semnalul digital de la intrare. Necesitatea procesrii digitale a semnalelor Pn la utilizarea semnalelor digitale n sistemele de control, prelucrarea semnalelor se realiza analogic. Fa de procesarea digital, analogica prezint avantajul costului redus la implementare, datorit excluderii celor trei blocuri care impun i necesit existena semnalelor digitale. Totui, exist o serie de dezavantaje ale procesrii analogice fa de cea digital, fapt ce a condus la adoptarea procesrii digitale prioritar fa de cea analogic. Un prim avantaj al procesrii digitale a semnalelor este acela al flexibilit ii la reconfigurare prin simpla modificare a software-ului care evit multe alte reconfigurri hardware ceea ce ar fi foarte costisitoare n timp. Procesarea analogic, n schimb, presupune modificri hardware urmate de multe verificri n vederea funcionrii corecte n parametrii prestabilii. Un alt avantaj al procesrii digitale l reprezint acurate ea, datorit cunoaterii exacte valorilor generate n urma executrii comenzilor din program. Spre deosebire, datorit toleranei de care este caracterizat semnalul analogic n stabilirea valorii (n funcie de cte zecimale sunt luate n considerare), aceasta induce erori n detrimentul acurateii. Calculul matematic este mult mai uor de procesat digital, datorit modelrii matematice n sistemul binar prin coresponden cu nivelul de tensiune, putndu-se ajunge chiar la algoritmi matematici compleci, prin modelare software. Implementarea analogic a aceluiai algoritm este mult mai laborioas i imprecis. Totui, procesare digital a semnalelor are i anumite limitri legate nu att de mult de procesarea propriu-zis, ct de ntrzierile pe care convertoarele (A/D i D/A) le induc prin procesul de conversie, aceasta afectnd direct viteza de comunicare cu procesul. B. Convertoarele n procesele complexe, care, pentru acionarea corespunztoare cu cerinele impuse, necesit i calcul matematic, s-a constatat c procesarea digital a semnalelor este mult mai avantajoas. n acest scop, pentru continuitatea fluxului informaional, convertoarele joac un rol foarte important, pentru c ele fac interfaa ntre lumea analogic i cea digital, ntre mrimea electric echivalent procesului i DSP i invers. Convertorul analog-digital, preia tensiunea de la traductor i o transform ntr-o niruire de bii, care formeaz codul binar corespunztor valorii instantanee citite de traductor. Procesul de conversie este realizat n trei pai, dup cum urmeaz: a. Citirea mrimii analogice O condiie important n procesul de conversie este ca mrimea de la intrare s nu fie variabil n timp. Pentru c mrimea preluat de la traductor sufer modificri datorit caracteristicii semnalului de a fi analogic (prin definiie, variabil n timp), este nevoie de stabilizarea semnalului pe durata conversiei. Pentru aceasta convertorul memoreaz mai nti semnalul prin intermediul unei celule de memorare analogice (condensatorul), iar n procesul de conversie folosete aceast valoare. Acesta este momentul n care, semnalul variabil n timp devine stabil la momentul respectiv, adic are loc discretizarea semnalului. Adic, semnalul nu mai este o funcie de timp, x(t), ci o funcie de moment, de numr de ordine al discretizrii, x(n). b. Cuantizarea 4

Fiecare convertor este caracterizat printr-un interval de conversie, att pentru intrare ct i pentru ieire. Pentru ca semnalul convertit s fie imaginea digital fidel a semnalului analogic de la intrare este nevoie de corespondena limitelor de interval ntre care acioneaz convertorul. Astfel, valoarii minime a mrimii analogice de la intrare s i se asocieze un cod binar, care s fie considerat minim n procesarea digital. Corespunztor valorii de limit superioar a domeniului mrimii analogice de la intrare, convertorul va asocia codul binar corespunztor. Toate vaorile binare posibile cuprinse ntre cele dou coduri binare (minim i maxim) reprezint imaginea binar a domeniului analogic. Datorit corespondenei limitelor de valori analogice / digitale i a pe baza raportului dintre valoarea analogic msurat i valorile analogice limite inferioar i superioar (domeniul de msur), are loc stabilirea poziiei (scalarea) codului binar (poziia biilor unari n cuvntul de ieire) raportat la limitele binare inferioar i superioar. c. Codarea Este ultima etap a procesului de conversie analog-digital i const n formarea biilor (semnalelor electrice) care s reprezinte binar valoarea cuantizat. Convertorul digital-analog primete la intrare o valoarea binar (o succesiune limitat de semnale electrice cu valori distincte) i are rolul de a dispune la ieire valoarea analogic echivalent. Asemntor principiului prezentat anterior, este necesar corespondena ntre limitele inferioar i superioar pe domeniul valorilor binare de intrare cu limitele inferioar i respectiv superioare pe domeniul valorilor analogice de ieire. Primele dou etape rmn neschimbate ca i n cazul CAD, adic citirea valorii supuse conversiei i cuantizarea ei. A treia etap va fi evident diferit prin aceea c, print-o reea intern de rezistori supui tensiunii domeniului de ieire, convertorul va selecta conectarea sau nu a fiecrui rezistor, n aa fel nct cderea de tensiune pe rezistena total rezultat s fie mrimea semnalului analogic convertit. C. Traductoarele Transform o mrime fizic neelectric ntr-o mrime electric, cu pstrarea raportului de valori pe un anumit interal dat. De obicei, mrimea de ieire a unui traductor este n format analogic. Traductorul urmrete variaia mrimii neelectric i o transpune (sub aceeai variaie) ntr-o mrime electric / semnal analogic. Pentru respectarea corespondeei dintre mrimea de intrare, adic mrimea preluat din proces i semnalul analogic pe care-l va transpune la ieire, este necesar calibrarea senzorului integrat n traductor. Senzorul este elementul sensibil care preia mrimea fizic din proces i o transmite mai departe blocului de prelucrare n semnal electric. Calibrarea traductorului este operaia prin care se stabilete corespondena dintre valorile minim i maxim existente n proces i valorile semnalului analogic minim i respectiv maxim. Calibrarea se poate realiza fie manual, de ctre operatorul uman sau alt proces extern traductorului sau automat (n cadrul traductoarelor inteligente autocalibrare).

III.

Conversia analog-digital

Convertoarele analog-digitale sunt utilizate pe sensul fluxului informaional de la traductor la DSP, fiind parte integrant din sistemele de achiziie de date. Aa cum s-a amintit anterior, conversia analog-digital este format din trei etape: preluarea mrimii electrice, cuantizarea i codarea. Convertorul analog-digital este un singur circuit electronic care nglobeaz n consistena sa abilitatea de parcurgere a celor trei etape. Un convertor A/D (de exemplu, un circuit integrat MCP3201 de la Microchip) are un pin de intrare pe care va fi aplicat semnalul analogic ce urmeaz a fi discretizat, iar ieirea lui este format dintr-unul sau mai muli pini, n funcie de modul de transmitere a datelor de ieire (serial sau paralel). Corespondena dintre mrimile de intrare i de ieire este stabilit printr-o funcie de forma: f CAN : ui D , unde: ui intervalul de variaie a mrimii analogice de intrare; D valorile de ieire k , reprezentate printr-un cuvnt binar pe n bii: D=b N b N 1 ...b i ... b1 b0 ; Preluarea semnalului analogic Elementul de baz n operaia de citire a semnalului analogic este circuitul de eantionare i memorare (CEM) care are rolul de prelevare a valorii semnalului analogic, memorarea i meninerea constant a acesteia la intrarea circuitului de prelucrare pe toat durata procesrii.
CEM Control Comand START conversie

Circuit de e antionare i memorare (CEM)

Convertor analog / digital


STATUS

Buffer de magistral

PC / C

Fig. 5. Elementele de baz ale convertorului analog / digital Rolul blocului CEM este citirea continu a semnalului de intrare i pstrarea constant a acestei valori pn cnd convertorul A/D obine rezultatul conversiei n format digital. Necesitatea CEM este impus de imposibilitatea semnalului de la intrare de a fi constant cu o maxim toleran de o jumtate de pas de conversie, fapt care este imposibil de realizat practic. Convertorul A/D ncepe procesul de conversie dup primirea unui semnal de start. Timpul necesar conversie se impune a fi mai mic dect durata de meninere constant a semnalului n CEM. Cuantizarea i codarea Scopul principal al convertului A/D este de a transforma un domeniu continuu de la intrare ntr-un set discret de coduri binare. Acest pas impune cele dou etape: cuantizarea i codarea. Cuantizarea realizeaz corespondena dintre o amplitudine dat x(n) x(nT) la momentul de timp t ntr-o amplitudine xk dintr-un set de valori prestabilite (asemntor unei baze de date): Ik = {xk < x(n) xk+1}, k=1,2,...,L xk+1 xk = , 6

unde este mrimea pasului de cuantizare. Modul de funcionare al blocului de cuantizare este descris n figura 6. n procesul de codare, A/D atribuie un numr binar unic fiecrui nivel cuantificat. Dac se dispune de L nivele, este nevoie de cel puin L coduri binare diferite. Astfel, pe un cuvnt de b+1 bii, putem reprezenta pn la 2 b1 coduri binare diferite. De aici avem c 2 b1L , ceea ce este echivalent cu b1log 2 L . De aici obinem pasul sau rezoluia convertorului A/D: R = b1 , unde R este domeniul. 2 n majoritatea convertoarelor, pentu reprezentarea codurilor binare se utilizeaz metoda complementului fa de doi.

-/2 -7/2 -5/2 -3/2

/2 3/2 5/2 7/2

Datorit existenei unui set infinit de valori la intrare, un set finit de valori la ieire i a crerii unei corespondene ntre valoarea de intare si valoarea de ieire, apare noiunea de eroare a convertorului. Considerm cazul unui CAD pe 3 bii. Aceasta nseamn ca la ieirea lui vor fi disponibile opt coduri diferite, corespunztoare la opt nivele diferite de tensiune. Vref = 0 0 < Vref < Vref/8/2 Vref/8/2 < Vref < Vref/8 cod binar = 000. cod binar = 000. cod binar = 001.

FSR Domeniu vrf la -FS vrf Fig. 6. Modul de operare al unui bloc de cuantizare

+FS

De aici rezult c, pentru dou coduri diferite aflate ntre aceeai doi pai de cuantizare, codul binar la ieire va fi acelai, deci apare o eroare. Aceasta se numete eroare de cuantizare.

Eroarea de cuantizare

Aplicaie

Fig. 7. Graficul eroarii de cuantizare 7

Procesoarele digitale de semnal / microcontrollerele au integrate n construcia lor unul sau mai multe convertoare analog-digitale. Totui, exist i circuite integrate specializate pentru conversia analog-digital. Exista mai muli productori de circuite integrate / microcontrollere care dein n producia lor CAD. Printre aceseta este de amintit: National Semiconductors, Infineon, Atmel, Microchip. n cazul de fa se va lua n considerare compania Microchip. Caracteristici principale ale convertorului analog-digital MCP3201: rezoluie: 12 bii; viteza de citire a semnalului analogic: 100 ksps; circuit de eantionare i memorare ncorporat; compatibilitate de transmisie a datelor pe SPI; consum redus de curent 500nA/300A; Interfaa la PC Cu ajutorul software-ului MXLAB, care permite conectarea convertorului la un calculator PC i supravegherea achiziiei de date, analizrii i afirii datelor recepionate. Acest software permite mai multe metode de comand i control, precum: FFT; Histogram; Osciloscop; Lista datelor. MXDEV, Systemul Analog de Evaluare este un software uor de utilizat, destinat testrii produselor MCP. Software-ul are dou subcomponente: placa electronica cu driver-ele DVMCPA asociat cu MXLAB, care pemrite achiziia de date i placa electronic de evaluare DVxxxxx, care conine componentele supuse testrii.

Fig. 8. Interfa a cu MXLAB Utilizarea convertorului MCP3201 este justificat aplicaiile embedded, n special pentru: interfaa senzorial, procese de control, achiziia de date. n aplicaia curent se va studia cazul conversiei i transmisiei de date ntre convertorul analog-digital MCP3201 i microcontrollerul PIC16F67. Comunicaia este realizat pe portul SPI. Hardware Microcontrolerul este configurat n modul master (bitul CKP setat pe 1 i bitul CKE setat pe 8

0). Comanda de start a conversiei este dat de tranziia din 1 n 0 a semnalului CS / SHDN . Microcontrollerul va preleva valoarea analogic pe frontul cresctor al primului tact dup ce semnalul CS trece n 0. Pe frontul descresctor al celui de-al doilea tact, modulul analogic va activa la ieire un bit nul. Pe perioada urmtoarelor 12 tacte, microcontrollerul va genera rezultatul conversiei, bitul cel mai semnificativ (MSB) fiind primul. Codul binar obinut la ieire se calculeaz dup formula: V intrareFS cod_binar = cod binar = , unde: V REF V intrare=semnalul analogic de intrare V REF =tensiunea de referin FS full scaledomeniul complet 4096 de pai Tensiunea de referin poate fi aceeai cu tensiunea de alimentare (+5V) sau o alta din exterior. Rezoluia convertorului se poate calcula astfel: 5V Rezoluia = 12 =1.22 mV 2 bii

Fig. 9. Structura hardware a aplica iei Software Programul aplicaiei poate fi scris fie n limbaj de nivel nalt (C), fie direct n limbajul de 9

asamblare al microcontrollerului, n mediul de dezvoltare propriu, produs de Microchip, MPLAB. Software-ul este realizat n limbajul de asamblare al microcontrollerului i este structurat pe mai multe module / funcii. Algoritmul de rulare al programului este descris n figura 10.

Fig. 10. Algoritmul software

Listing-ul programului
list p=16c67 ; directiva pentru definirea procesorului

10

#include <p16c67.inc> ; definirea variabilelor specifice procesorului __CONFIG _BODEN_ON & _PWRTE_ON & _CP_OFF & _WDT_OFF & _XT_OSC ;***** SECTIUNEA DE DEFINIRE A VARIABILELOR TEMP_VAR UDATA 0x20 adc_result RES 2 ; variabile utilizate ]n salvarea contextuala offset RES 1 temp RES 1 TEMP_VAR1 UDATA_OVR counthi RES 1 countlo RES 1 GLOBAL EXTERN EXTERN EXTERN EXTERN adc_result Hex_Dec Hex_Ascii adc_temph, adc_templ thous ; sectiunea udata

; activeaza variabilele pentru celelalte module

#define CS PORTA,5 #define CR 0x0D #define LF 0x0A RESET_VECTOR CODE 0x000 movlw high start movwf PCLATH goto start

; Pinul pentru selectarea MCP3201 ; macro pentru linie noua ; macro pentru avansul liniei ; ; ; ; vectorul de reset al procesorului pune o valoare numerica in registrul W initializeaza registrul PCLATH salt la inceputul programului

INT_VECTOR CODE 0x004 ; locatia vectorului de intreruperi ; fara nici un cod de intrerupere pentru aceasta aplicatie MAIN CODE 0x040 start call Init_Ports call Init_SSP call Init_Usart forever call Read_Adc call Hex_Dec call Hex_Ascii call Display_Data call Delay_150mS goto forever ; activeaza sectiunea de cod care incepe la 0x040 ; apeleaza rutina pentru initializarea porturilor ; apeleaza rutina pentru initializarea modulului SSP ; apeleaza rutina pentru initializarea modulului USART ; ; ; ; ; ; ; ; citeste convertorul A/D MCP3201 apeleaza rutina pentru conversia rezultatului ADC in format zecimal apeleaza rutina pentru conversia rezultatului ADC in format apeleaza rutina pentru afisarea datelor catre PC rutina de intarziere de 150mS bucla continua pentru revenirea la citirea ADC

; Rutina pentru citirea a 2 bytes din CAD MCP3201 Read_Adc banksel PORTA ; selecteaza bank-ul pentru SFR bcf CS ; selecteaza MCP3201 movlw 0x01 ; pune valoarea numerica in registrul W banksel SSPBUF ; selecteaza bank-ul pentur SFR movwf SSPBUF ; incepe ciclul SPI banksel SSPSTAT ; selecteaza bank-ul pentru SFR spi_busy1 btfss SSPSTAT,BF ; testeaza daca ciclul de bus este complet goto spi_busy1 ; asteapta, daca ciclul de bus nu este complet banksel SSPBUF ; selecteaza bank-ul pentru SFR movf SSPBUF,w ; citeste registrul SSPBUF si pune valoarea in W banksel adc_result ; selecteaza bank-ul pentru SFR movwf adc_result+1 movlw 0x81 banksel SSPBUF movwf SSPBUF banksel SSPSTAT spi_busy2 btfss SSPSTAT,BF goto spi_busy2 banksel PORTA bsf CS movf SSPBUF,w banksel adc_result movwf adc_result rrf adc_result+1,f rrf adc_result,f ; ; ; ; ; ; ; ; ; ; ; ; scrie valoarea din registurl SSPBUF in adc_result pune valoarea numerica in registrul W selecteaza bank-ul pentru SFR incepe ciclul SPI selecteaza bank-ul pentru SFR testeaya daca ciclul de bus este complet asteapta, daca ciclul de bus nu este complet selecteaza bank-ul pentru SFR inverseaza bitul de selectie MCP3201 citeste valoarea din registrul SSPBUF si o transfera in W selecteaza bank-ul pentru SFR scrie valoarea din registurl SSPBUF in adc_result

11

movlw 0x0F andwf adc_result+1,f movf adc_result,w movwf adc_templ movf adc_result+1,w movwf adc_temph return

; ; ; ; ; ; ;

pune valoarea numerica in registrul W aplica masca asupra bitilor superiori din rezultatul ADC muta jumatatea superioara adc_result in registrul W salveaza registrul W in registrul temp muta jumatatea superioara adc_result in registrul W salveaza registurl W in registrul temp revenire din subrutina

; rutina pentru afisarea valorii de la ADC (ASCII si DECIMAL) catre USART Display_Data banksel offset ; selecteaza bank-ul pentru GPR clrf offset ; initializeaza indexul tabelei de valori movlw high msg1 ; muta byte-ul superior al tabelei de adresa in W movwf PCLATH ; initializeaza registrul PCLATH txlp1 movf offset,w ; muta valoarea offset-ului in W call msg1 ; obtine elemntul din tabela movwf temp ; muta elementul in registurl temp btfsc temp,7 ; testeaza pentru a verifica sfarsitul de sir goto send_hex ; sfarsitul mesajului, deci trimite valoarea banksel TXREG ; selecteaza bank-ul pentru SFR movwf TXREG ; initiaza transmisia USART banksel TXSTA ; selecteaza bank-ul pentru SFR btfss TXSTA,TRMT ; testeaza daca registurl TSR este disponibil goto $-1 ; asteapta in bucla pentru testare banksel offset ; selecteaza bank-ul pentru GPR incf offset,f ; incrementeaza indexul tabelei goto txlp1 ; asteapta in bucla de transmisie send_hex movlw adc_temph ; obtine variabila adresei movwf FSR ; initializeaza registrul ca si FSR pointer send_hex1 movf INDF,w ; obtine byte-ul de valoare banksel TXREG ; selecteaza bank-ul pentru SFR movwf TXREG ; initiaza transmisia USART banksel TXSTA ; selecteaza bank-ul btfss TXSTA,TRMT ; testeaza daca registrul TSR este disponibil goto $-1 ; asteapta in bucla de testare incf FSR,f ; updateaza pointer-ul movlw adc_temph+4 ; calculeaza adresa sfarsitului de sir subwf FSR,w ; compara btfss STATUS,C ; incheie prin trimiterea valorii goto send_hex1 ; daca nu, transmite in continuare banksel offset clrf offset txlp2 movf offset,w call msg2 movwf temp btfsc temp,7 goto send_dec banksel TXREG movwf TXREG banksel TXSTA btfss TXSTA,TRMT goto $-1 banksel offset incf offset,f goto txlp2 send_dec movlw thous movwf FSR send_dec1 movf INDF,w banksel TXREG movwf TXREG banksel TXSTA btfss TXSTA,TRMT goto $-1 incf FSR,f movlw thous+4 subwf FSR,w btfss STATUS,C goto send_dec1 movlw CR ; ; ; ; ; ; ; ; ; ; ; ; ; muta offset-ul in W obtine elemntul din tabel muta elemntul in registul temp testeaza daca este sfarsitul sirului sfarsitul mesajului, deci transmite valoarea selecteaza bank-ul pentru SFR initializeaza transmisia USART selecteaza bank-ul pentru GPR testeaza daca registrul TSR este disponibil asteapta in bucla de testare selecteaza bank-ul pentru GPR incrementeaza indexul tabelei asteapta in bucla de transmisie ; selecteaza bank-ul pentru GPR ; initializeaza indexul tabelei de valori

; obtine adresa variabilei ; initializeaza registrul ca si FSR pointer ; ; ; ; ; ; ; ; ; ; ; ; obtine valoarea data byte-ului selecteaza bank-ul pentru SFR initializeaza transmisa USART selecteaza bank-ul pentru SFR testeaya daca registrul TSR este disponibil asteapta in bucla updateaza pointer-ul calculeaza adresa sfarsitului de caracter compara incheie prin transmiterea valorii daca nu, trimite incontinuare pune valoarea numerica in registrul W

12

banksel TXREG movwf TXREG banksel TXSTA btfss TXSTA,TRMT goto $-1 movlw LF banksel TXREG movwf TXREG banksel TXSTA btfss TXSTA,TRMT goto $-1 return ; Rutina pentru ~ 150mS Delay_150mS movlw D150 banksel counthi movwf counthi outer movlw D250 movwf countlo inner decf countlo,f btfss STATUS,Z goto inner decf counthi,f btfss STATUS,Z goto outer return ; Initialize USART Module Init_Usart movlw D25 banksel SPBRG movwf SPBRG movlw B00100100 movwf TXSTA movlw B10010000 banksel RCSTA movwf RCSTA return ; Initialize SSP Module Init_SSP #ifdef mode11 movlw B00110000 banksel SSPCON movwf SSPCON banksel SSPSTAT clrf SSPSTAT #else movlw B00100000 banksel SSPCON movwf SSPCON movlw B01000000 banksel SSPSTAT movwf SSPSTAT #endif return

; ; ; ; ; ; ; ; ; ; ; ;

selecteaza bank-ul pentru SFR initializeaza transmisia USART selecteaza bank-ul pentru SFR testeaza daca registrul TSR este disponibil daca nu, asteapta in bucla pune valoarea numerica in registrul W selecteaza bank-ul pentru SFR initializeaza transmisia USART selecteaza bank-ul pentru SFR testeaza daca registrul TSR este disponibil daca nu, asteapta in bucla revenire din subrutina

; pune valoarea numerica in registrul W ; selecteaza bank-ul pentru SFR ; initializeaza contorul superior ; pune valoarea numerica in registrul W ; initializeaza contorul inferior ; ; ; ; ; ; ; decrementeaza contorul inferior testeaza daca rezultatul este 0 daca nu, ramane in bucla altfel, decrementeaza contorul superior testeaza daca rezultatul este 0 daca nu, reia bucla revenire din subrutina

; ; ; ; ; ; ; ; ;

pune valoarea numerica in registrul W selecteaza bank-ul pentru SFR activeaza rata de transfer la 9600 bps pentru 4 MHz pune valoarea numerica in registrul W bitul BRGH = 1, activeaza transmisia pune valoarea numerica in registrul W selecteaza bank-ul pentru SFR activeaza portul serial revenire din subrutina

; ; ; ;

pune valoarea numerica in registrul W selecteaza bank-ul pentru SFR activeaza modul SPI Master, 1,1, FOSC/4 selecteaza bank-ul pentru SFR

; ; ; ; ;

pune valoarea numerica in registrul W selecteaza bank-ul pentru SFR activeaya modul Master, 0,0, FOSC/4 pune valoarea numerica in registrul W selecteaza bank-ul pentru SFR

; revenire din subrutina

; Initialize PORTS Init_Ports movlw 0x00 banksel PORTA movwf PORTB movwf PORTD movwf PORTE movlw B100000 movwf PORTA movlw B11010000 movwf PORTC banksel TRISA clrf TRISA clrf TRISB clrf TRISD clrf TRISE

; ; ; ; ; ; ; ; ; ; ; ; ; ;

pune valoarea numerica in registrul W selecteaza bank-ul pentru SFR reseteaza iesirile portului PORTB la starea reseteaza iesirile portului PORTD la starea reseteaza iesirile portului PORTE la starea pune valoarea numerica in registrul W reseteaza iesirile portului PORTA la starea pune valoarea numerica in registrul W reseteaza iesirile portului PORTC la starea selecteaza bank-ul pentru SFR activeaza sensul de transfer pentru PORTA activeaza sensul de transfer pentru PORTB activeaza sensul de transfer pentru PORTD activeaza sensul de transfer pentru PORTE

initiala initiala initiala initiala initiala

13

movlw B11010000 movwf TRISC return

; pune valoarea numerica in registrul W ; activeaza sensul de transfer pentru PORTE ; revenire din subrutina

TABLE_DATA CODE 0x200 ; inceputul tabelei msg1 addwf PCL,f ; genereaza instructiunea goto DT HEX-> 0x,80 msg2 addwf PCL,f ; genereaza instructiunea goto DT : DECIMAL-> ,80 END ; directiva de sfarsit de program

Concluzii Utilizarea convertoarelor analog-digitale n aplicaiile embedded a devenit att o necesitate, ct i o posibilitate de extindere a domeniului de aplicabilitate embedded interfaarea mai flexibil cu procesul real, sigurana proceselor mai ridicat datorit diversitii informaiilor. Tendinele care se observ la ora actual privind dezvoltarea convertoarelor analog-digitale se concentreaz pe reducerea erorilor de cuantificare i reducerea timpului de conversie, deoarece aceste dou aspecte influeneaz ntr-o mare msur viteza de procesare pe ntreg fluxul informaional.

14

BIBLIOGRAFIE
1. John G. Proakis, Dimitris G. Manolakis Digital Signal Processing. Principles, Algorithms and Applications. 2. National Semiconductors ABCs of ADCs. Analog-to-Digital Converter Basics. 3. MICROCHIP Analog-to-Digital Converter Design Guide. 4. MICROCHIP Interfacing Microchip's MCP3201 Analog-to-Digital Converter to the PIC Microcontroller.

15

S-ar putea să vă placă și