Académique Documents
Professionnel Documents
Culture Documents
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
App. mC
Esquema de Conversin
Cuenta digital
11..11
10..00
App. mC
Esquema de Conversin
Cuenta digital
11..11
10..00
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
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
App. mC
Registros Involucrados
q ADCON0
ADCS1
ADCS0
CHS2
CHS1
CHS0
GO/DONE
ADON
1 0
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
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
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
App. mC
App. mC