Você está na página 1de 24

Conversores Anlogo-Digital mC PIC

Preparado por : jhuircan


Depto. Ingeniera Elctrica Universidad de La Frontera

App. mC

Proceso de Conversin
Cdigo Correspondiente a la muestra j

S(t)

S(k)

0010..0011

ADC
t

Sampling

N-bits

App. mC

Esquema de Conversin
Cuenta digital

11..11

10..00

00..00 0 2.5 5.0 Voltaje Analgico

App. mC

Esquema de Conversin
Cuenta digital

11..11

10..00

00..00 -5.0 -2.5 0 Voltaje Analgico

App. mC

Esquema de Conversin
Cuenta digital

11..11

10..00

00..00 -2.5 0.0 2.5 Voltaje Analgico

App. mC

Bsico
q Nmero Digital de n-bit

Dn-1

D1

D0

MSB

LSB

Quantum

Voltaje Q= 2n

App. mC

Bsico
q Ej, para un nmero de 8 bits y 5V de rango analgico

5 Q = 8 = 19.53[mV ] 2
Esto significa que cada 19.53mv de voltaje analgico, se incrementa en un bit el nmero digital

App. mC

Caractersticas
q El mdulo A/D tiene 5 entradas analgicas (chip de 28pines) 8 entradas en el chip de 40 pies. q Posee 10 bits de resolucin q El mdulo A/D tiene alto y bajo voltaje de referencia de entrada, el cual se selecciona por software a travs de alguna combinacin VDD, VSS, RA2 q El ADC puede operar en modo sleep. q Para operar en modo Sleep, le reloj de A/D debe ser derivado de un oscilador interno RC del A/D.

App. mC

Registros Involucrados
q q q q q ADRESH ADRESL ADCON0 ADCON1 TRISA

App. mC

Mdulo ADC
CS2CS1CS0

000 AN0/RA0 AN1/RA1 AN2/RA2 011 AN3/RA3/VREF+ AN4/RA5/VREF100 VREFVDD 001 010 Vin VREF+

ADC

Vss

Los Bit FCG3PCFG2PCFG1PCFG0 Manejan las ref

App. mC

Registros Involucrados
q ADCON0

ADCS1

ADCS0

CHS2

CHS1

CHS0

GO/DONE

ADON

App. mC

Registros Involucrados
q ADCON0

ADCS1

ADCS0

CHS2

CHS1

CHS0

GO/DONE

ADON

0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1

Canal 0 Canal 1 Canal 2 Canal 3 Canal 4 Canal 5 Canal 6 Canal 7

App. mC

Registros Involucrados
q ADCON0

ADCS1

ADCS0

CHS2

CHS1

CHS0

GO/DONE

ADON

1 0

Mdulo AD es energizado apagado

App. mC

Registros Involucrados
q ADCON0

ADCS1

ADCS0

CHS2

CHS1

CHS0

GO/DONE

ADON

Conversin en progreso
Seteando el bit se inicia la conversin AD, la cual es reseteado automaticamente con la conv. est lista

Conversin No en progreso

App. mC

Registros Involucrados
q ADCON0

ADCS1

ADCS0

CHS2

CHS1

CHS0

GO/DONE

ADON

ADCON1
ADFM ADCS2 PCFG3 PCFG2 PCFG1 PCFG0

0 0 0 0 1 1 1 1

00 01 10 11 00 01 10 11

FOSC/2 FOSC/8 FOSC/32 FRC (clock derived from the internal A/D RC oscillator) FOSC/4 FOSC/16 FOSC/64 FRC (clock derived from the internal A/D RC oscillator)

App. mC

Registros Involucrados
q ADCON1
ADFM ADCS2 PCFG3 PCFG2 PCFG1 PCFG0

ADRESH 0 1 Justificacin a la derecha. Los 6 bit mas significativos de ADRESH son leidos como cero. Justificacin a la izquierda. Los 6 bit menos significativos de ADRESL son leidos como cero.

ADRESL

000000XX XXXXXXXX

XXXXXXXX XX000000

App. mC

Registros Involucrados
q ADCON1
ADFM ADCS2 PCFG3 PCFG2 PCFG1 PCFG0

AN7 0000 0001 0010 0011 0100 0101 011X A A D D D D D

AN6 A A D D D D D

AN5 A A D D D D D

AN4 A A A VREF+ D D D

AN3 A VREF+ A A A D D

AN2 A A A A D D D

AN1 A A A A D A D

AN0 A A A A D A D

VREF+ VDD AN3 VDD AN3 VDD AN3 -

VREFVSS VSS VSS VSS VSS VSS -

C/R 8/0 7/1 5/0 4/1 3/0 2/1 0/0

App. mC

Secuencia de Programacin
q Configuracin del mdulo AD
q Configure las entradas analgicas,

el voltaje de referencia, la justificacin y las I/O Digitales en el ADCON1 q Seleccione el canal A/D a leer en el ADCON0 q Seleccione el clock de conversin A/D en el ADCON0 ADCON1 q Prenda el mdulo A/D en el ADCON0
q Setee GO/DONE

Espere que la conversin est completa. q Encueste del bit GO/DONE el cual ser borrado cuando se complete el proceso. q Lea el resultado de los registros ADRESH:ADRESL
q

App. mC

q Los Registros ADRESH:ADRESL contienen el resultado de 10 bit de la conversin. q Cuando la conversin AD es completada el resultado cargado en los registros indicados, el bit GO/DONE borrado y el flag ADIF de interrupcin es seteado. es es

q Se debe seleccionar el canal a adquirir antes de iniciar la conversin. q El canal anlogo debe corresponder al bit seleccionado como entrada mediante el TRISA q Despus de que el tiempo de conversin ha terminado se puede realizar otro inicio de la conversin

App. mC

Bits a configurar
ADFM ADCS2 PCFG3 PCFG2 PCFG1 PCFG0

ADCS1

ADCS0

CHS2

CHS1

CHS0

GO/DONE

ADON

ADCS1 ADFM

ADCS0 ADCS2

CHS2 -

CHS1 -

CHS0 PCFG3

GO/DONE PCFG2

PCFG1

ADON PCFG0

ADCS1

ADCS0

CHS2

CHS1

CHS0

GO/DONE

ADON

ADCS1

ADCS0

CHS2

CHS1

CHS0

GO/DONE

ADON

App. mC

ADRESH
D9 D8

ADRESL
D7 D6 D5 D4 D3 D2 D1 D0

App. mC

Codigo C- Basico
void main() { uns16 dato; TRISA=0xFF; //Todos los pines de entrada ADCON1.0=0; // Todos los canales Analogicos ADCON1.1=0; ADCON1.2=0; ADCON1.3=0; ADCON1.6=0; fOSC/32 ADCON0.7=1; ADCON0.6=0; ADCON0.5=0; // Canal 0 ADCON0.4=0; ADCON0.3=0; ADCON1.7=1; // ADFM ADCON0.0=1; // AD ON ADCON0.2=1; // GO=1 while(1) { if(ADCON0.2==0) break; //Espera que el bit se haga cero para salir } dato.high8=ADRESH; dato.low8=ADRESL; }
App. mC

Codigo C usando los bit definidos


void main() { uns16 dato; TRISA=0b11111111; ADFM=1; // ADCON1.7=1 PCFG3=0; // ADCON1.3 - TODOS A PCFG2=0; // ADCON1.2 PCFG1=0; // ADCON1.1 PCFG0=0; // ADCON1.0 ADCS2=0; // ADCON1.6 fOSC/32 ADCS1=1; // ADCON0.7 ADCS0=0; // ADCON0.6 CHS2=0; //Canal 0 CHS1=0; CHS0=0; GO=0; // conv. no iniciada ADON=1; // Modulo encendido GO=1; while(1) { if(GO==0) break; } dato.high8=ADRESH; // se traspasan los bit dato.low8=ADRESL; }

App. mC

Cdigo C que testea el canal 0


// Convierte Canal AN-0 uns16 test_ADC() { uns16 dato_ana; ADCON0= 0b10000001; while(1) { GO=1; while(GO); dato_ana.high8 = ADRESH; dato_ana.low8 = ADRESL; return(dato_ana); } } // Principal // Lee el ADC0 y lo muestra enel // PORTB y parte del PORTC void() { uns16 dato; TRISB=0x00; TRISC.6=0; TRISC.7=0; ADCON1=; while(1) { dato=test_ADC(); PORTB=dato.low8; PORTC.6=dato.8; PORTC.7=dato.9; } }

App. mC

Você também pode gostar