Está en la página 1de 26

Seminario de Computadores I,

1er Semestre 2004

ADC12
Conversor An
alogo Digital de 12 bits

Francisco Blancaire
Eduardo Gonzalez
Michael Kusch
Diego Valencia
ADC12 INDICE GENERAL

Indice General

1 Introducci
on 3
1.1 Caractersticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Diagrama de bloques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Requerimientos para la operacion . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.1 Reloj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.2 Canales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.3 Voltajes de referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.4 Muestreo y tiempos de conversion . . . . . . . . . . . . . . . . . . . . . . 6
1.3.5 Consideraciones del tiempo de captura . . . . . . . . . . . . . . . . . . . . 8

2 Registros 9
2.1 Registros de configuracion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 ADC12CTL0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.2 ADC12CTL1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Registros de almacenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.1 ADC12MEMx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Registros de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.1 ADC12MCTLx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4 Registros de interrupcion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4.1 ADC12IFG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4.2 ADC12IE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4.3 ADC12IV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3 Funcionamiento 16
3.1 Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.1.1 Memoria de Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.1.2 Modos de Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.1.3 Sensor integrado de temperatura . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 Interrupciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2.1 Interrupciones del ADC12 . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2.2 Vector Generador de Interrupciones, ADC12IV . . . . . . . . . . . . . . . 21

Seminario de Computadores I, 2004 1


ADC12 INDICE GENERAL

4 Ejemplo de implementaci
on 22
4.1 Proceso de Inicializacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.2 Ejemplo: Conversion u
nica, canal u
nico . . . . . . . . . . . . . . . . . . . . . . . 23
4.3 Ejemplo: Conversion u
nica, secuencia de canales . . . . . . . . . . . . . . . . . . 24

Seminario de Computadores I, 2004 2


ADC12 Introducci
on

1 Introducci
on
En este documento se detalla la configuracion y funcionamiento del modulo ADC12, que es
un conversor analogo digital de 12 bits que trae incorporado el microcontrolador MSP430F149.
Su funcion es convertir voltajes analogicos que se introducen por distintas entradas dispo-
nibles a palabras binarias de 12 bits. Esto lo realiza utilizando recursos propios de modulo, es
decir sin interferir en el procesamiento principal del microcontrolador. En los microcontrolado-
res con DMA se puede utilizar esta propiedad para tener una conversion fluida y continua sin
interrumpir ning un otro proceso.

1.1 Caractersticas

Conversion de 12 bits.

Tasa de muestreo programable, con una maxima de 200k Muestras por segundo.

Inicio de la conversion por software o por temporizadores .

Termino de cada conversion puede generar interrupciones.

Fuente de reloj, perodo de captura y frecuencia de muestreo programables.

Generacion de referencias configurable por software.

8 canales de entrada, mas 4 se


nales internas.

4 modos de adquisicion.

Hasta 16 conversiones almacenadas independientemente.

Seminario de Computadores I, 2004 3


ADC12 Diagrama de bloques

1.2 Diagrama de bloques

El diagrama de bloques se muestra a continuacion

Se destaca el hecho de que aunque se puedan adquirir varias se


nales distintas, solo existe
un modulo conversor.

1.3 Requerimientos para la operaci


on

Se muestran a continuacion las opciones basicas que deben configurarse para utilizar el
ADC. Cada seccion muestra su parte en el diagrama de bloques para tener una idea del flujo de
las se
nales.

Seminario de Computadores I, 2004 4


ADC12 Requerimientos para la operaci
on

1.3.1 Reloj (ADC12CLK)

Se utiliza solo un reloj para la conversion y para generar el perodo de muestreo. Con
ADC12SSEL se efect ua la seleccion de este reloj. Las fuentes posibles de reloj son: SMCLK,
MCLK, ACLK, ADC12OSC.
EL ADC12OSC es un oscilador interno del modulo de 5[M hz], pero vara seg
un microcon-
trolador, voltaje de alimentacion y temperatura.
Existe ademas la posibilidad de dividir el reloj de 1 a 8 configurando los bits ADC12DIVx.

1.3.2 Canales

La eleccion del canal que se convierte se realiza mediante un multi-


plexor analogico, disenado hecho de manera de minimizar el crosstalk
y el ruido. Los canales que no se estan convirtiendo quedan puestos a
tierra para evitar aun mas ruido.

Los canales externos de entrada corresponden a los pines del puerto 6


del microcontrolador, por lo que se deben configurar como entradas y en
modo entrada/salida para eliminar el buffer que podra crear problemas
con corrientes parasitas.

1.3.3 Voltajes de referencia

Existen varias fuentes disponibles para los voltajes de referencia que ocupa el conversor.
Existe la opcion de utilizar voltajes de referencia internos del modulo, que pueden ser 1.5 o
2.5 [V]. Se puede utilizar tambien un voltaje de referencia externa que se aplica al pin V eREF +

Seminario de Computadores I, 2004 5


ADC12 Requerimientos para la operaci
on

del puerto 6. Por u


ltimo, se puede utilizar el voltaje de alimentacion del microcontrolador. Para
VREF se puede elegir AVSS o introducir un voltaje de referencia por el pin V eREF
Se recomienda que los voltajes aplicados externos (o de alimentacion) esten filtrados con
un condensador de 10[F ] y otro de 0.1[F ] en paralelo, entre la fuente y tierra.

1.3.4 Muestreo y tiempos de conversi


on

La conversion completa implica dos fases: muestreo (o captura) y conversion.


La primera fase se inicia con el canto de subida de una se
nal interna SHI. Una vez concluida
esta fase, comienza la fase de conversi on.
Las fuentes de la se
nal SHI se seleccionan mediante los bits SHSx y son las siguientes:

Bit ADC12SC.

Etapa de salida 1 del Timer A.

Etapa de salida 0 del Timer B.

Etapa de salida 1 del Timer B.

La polaridad de esta se
nal puede ser invertida utilizando el bit ISSH.
La senal SAMPCON controla el perodo de muestreo y el comienzo de la conversion. Mien-
tras esta este alta, esta activo el proceso de captura. En el canto de bajada de SAMPCON se
comienza la conversion que dura 13 cantos del reloj (ADC12CLK).

La relacion que existe entre la se


nal SHI y SAMPCON esta determinada por el bit de
control SHP, que determina dos modos distintos de captura:

Seminario de Computadores I, 2004 6


ADC12 Requerimientos para la operaci
on

A. Captura Extendida (SHP=0)


En este modo la se nal SHI controla directamente la se nal SAMPCON, por lo que define
directamente el perodo de muestreo tsample . Una vez que se baja SHI (y por ende SAMPCON)
existe un tiempo de sincronismo hasta el primer canto de subida de ADC12CLK, el cual
comienza la conversion.

B. Captura por pulso (SHP=1)


En este modo la subida de SHI determina la subida de SAMPCON, pero el tiempo tsample
que permanece en alto se configura utilizando los bits SHT0x y SHT1x.
Luego de que sube SHI, se tiene un tiempo de sincronismo con el canto de subida de
ADC12CLK y luego permanece alto SAMPCON durante tsample . El perodo de muestreo
real corresponde entonces a tsample + tsync , este u
ltimo correspondiendo al tiempo de sincro-
nismo.
La conversion se inicia inmediatamente con el canto de bajada de SAMPCON.

Seminario de Computadores I, 2004 7


ADC12 Requerimientos para la operaci
on

1.3.5 Consideraciones del tiempo de captura

Una consideracion importante que debe realizarse al convertir es la caracterstica de filtro


pasabajos que tiene el canal durante la fase de muestreo (ver Figura).

Vi =Voltaje en el pin.
Vs =Voltaje de la fuente analoga por muestrear.
Rs =Resistencia externa de la fuente analoga.
Ri =Resistencia interna del multiplexor.
Ci =Capacidad del condensador de captura.
Vc =Voltaje del condensador.

Dado que el valor que se convierte es VC , se debe esperar un tiempo prudente para que este
valor sea igual a Vs .
La relacion entre el tiempo de captura y estas variables responde al tiempo de carga del
condensador:

tsample > (Rs + Ri ) ln(213 ) Ci

Reemplazando los valores tpicos de Ri = 2[k] y Ci = 40[pF ] se obtiene tsample en funci


on
de la resistencia de la fuente de voltaje:

tsample > (Rs + 2k) ln(213 ) 40p[s]

Si se tiene una resistencia de salida Rs = 10[k], se obtiene un perodo de captura mnimo


de 4, 33[s].

Seminario de Computadores I, 2004 8


ADC12 Registros

2 Registros
Los registros del Conversor Analogo-Digital se pueden catalogar de la siguiente manera:
dos registros de configuracion, tres para el manejo de interrupciones, dieciseis para el control de
conversion y otros dieciseis para almacenar los resultados de la conversion.

2.1 Registros de configuraci


on

2.1.1 ADC12 Control Register 0, ADC12CTL0.

Este registro es el primer registro de control.


Los campos SHT1x y SHT0x son para definir la cantidad de ciclos de reloj que va a durar
el muestreo de los canales por convertir seg
un los registros ADC12MEM8 al ADC12MEM15, y
ADC12MEM0 al ADC12MEM7 respectivamente.
El bit MSC es empleado para muestreos y conversiones m
ultiples automaticas.
REFON es el bit que habilita el generador de voltaje de referencia interno del conversi on,
si no se desea usar, es recomendable mantenerlo apagado (en cero) para ahorrar consumo. Para
seleccionar el nivel del voltaje de referencia interna esta el bit REF2 5V, el cual selecciona el
voltaje en 2.5[V] o 1.5[V], asignando un 1 o 0 respectivamente.
Con el bit ADC12ON podemos encender el conversor si se va a utilizar. En caso contrario
se debe mantener en cero (apagado) para ahorro de consumo. Los bits mencionados solo pueden
ser modificados cuando el bit que habilita la conversion ENC esta en 0.
Para habilitar la interrupcion por overflow (desbordamiento) en el resultado, se debe poner
en bit ADC12OVIE en uno. A su vez, si tambien se quiere que este la interrupcion por Time
Overflow, el bit ADC12TOVIE debe estar en uno. Tambien es condicion necesaria que esten
habilitadas las interrupciones globales (GIE).
Para iniciar una conversion se debe levantar el bit ADC12SC.

Esta es la tabla que muestra como configurar los campos SHTxx, para elegir el n
umero de
ciclos de reloj deseados.

Seminario de Computadores I, 2004 9


ADC12 Registros de configuraci
on

2.1.2 ADC12 Control Register 1, ADC12CTL1.

Este es el segundo registro de control del conversor.


Con los bits CSTARTADDx definimos en que registro de memoria ADC12MEMx iniciar la
conversion. Realmente lo que definimos es con cual de los registros de control ADC12MCTLx
(aqu se define el canal de entrada y VREF ) comenzar la conversion, y cuyo resultado sera guar-
dado en su respectivo ADC12MEMx.
Los bits SHSx son para elegir la fuente de reloj que inicia todo el ciclo de conversion. Se
configuran de la siguiente forma:
00 ADC12SC 10 TIMER B.OUT0
01 TIMER A.OUT1 11 TIMER B.OUT1
El bit ISSH sirve para invertir la se
nal de Sample&Hold (bit en 1).
El bit SHP es para ajustar el modo de captura, ya sea por pulso (bit en 1) o extendida (en
cero).
Para elegir el reloj por utilizar por el conversor estan los bits ADC12SSELx, los bits se
ajustan de la siguiente forma:

Seminario de Computadores I, 2004 10


ADC12 Registros de almacenamiento

00 ADC12OSC 10 MCLK
01 ACLK 11 SMCLK

Para dividir la frecuencia del reloj elegido, en caso que sea necesario, es posible ajustar los
bits de ADC12DIVx. La configuracion de estos bits es la siguiente:

000 1 001 2 010 3 011 4


100 5 101 6 110 7 111 8

Es importante tener en cuenta que para modificar los campos anteriores se debe tener el
bit ENC en cero.
Para elegir el modo de conversion se deben ajustar los bits del campo CONSEQx de la
siguiente manera:

00
Unico canal 10 Repetir u
nico canal
01 Secuencia de canales 11 Repetir secuencia de canales

El u
ltimo bit de este registro, el ADC12BUSY, indica si el conversor esta ocupado realizando
una conversion.

2.2 Registros de almacenamiento

2.2.1 ADC12 Conversion Memory Registers, ADC12MEMx.

En estos registros se almacenan los resultados de las conversiones. Se emplean solo 12 bits,
del 0 al 11, porque es un conversor de 12 bits. Los otros bits estan siempre en 0 y son de solo
lectura.
En total son 16 de estos registros, y cada uno esta relacionado con su respectivo registro de
control ADC12MCTLx

Seminario de Computadores I, 2004 11


ADC12 Registros de control

2.3 Registros de control

2.3.1 ADC12 Memory Control, ADC12MCTLx.

Este registro es el que define que canal sera convertido.


Para seleccionar un canal se debe ajustar INCHx seg
un la siguiente tabla:

INCHx Canal INCHx Canal


0000 A0 1000 V eREF +
0001 A1 1001 VREF /V eREF
0010 A2 1010 Temperature Diode
0011 A3 1011 (AVCC AVSS )/2
0100 A4 1100 (AVCC AVSS )/2
0101 A5 1101 (AVCC AVSS )/2
0110 A6 1110 (AVCC AVSS )/2
0111 A7 1111 (AVCC AVSS )/2

El campo SREFx se emplea para seleccionar los voltajes de referencia. El resultado que se
obtiene luego de una conversion esta dado por:

VIN VR
NADC = 4095
VR+ VR
En este campo se eligen los VR+ y VR a utilizar, seg
un la siguiente tabla.

SREFx VR+ VR
000 AVCC AVSS
001 VREF + AVSS
010 V eREF + AVSS
011 V eREF + AVSS
100 AVCC VREF /V eREF
101 VREF + VREF /V eREF
110 V eREF + VREF /V eREF
111 V eREF + VREF /V eREF

Seminario de Computadores I, 2004 12


ADC12 Registros de interrupci
on

2.4 Registros de interrupci


on

2.4.1 ADC12 Interrupt Flag Register, ADC12IFG.

Cada vez que un resultado se almacena en memoria ADC12MEMx, se levanta la bandera


de este registro, en el bit correspondiente al n
umero del registro.
Poe ejemplo, si una conversion finaliza y se almacena un resultado en ADC12MEM5, en-
tonces se levantara una bandera en ADC12IFG5.

2.4.2 ADC12 Interrupt Enable Register, ADC12IE.

Habilita las interrupciones provocadas por ADC12IFG. Esto se puede hacer de manera
especfica, habilitando las interrupciones para algunos ADC12IFG, manteniendo las demas des-
habilitadas. Cada vez que se levante una bandera en ADC12IFG, se comprueba si esta habilitada
la mascara de interrupcion correspondiente. Si es as se generara una interrupcion, en caso con-
trario nada pasa.

Seminario de Computadores I, 2004 13


ADC12 Registros de interrupci
on

2.4.3 ADC12 Interrupt Vector Register, ADC12IV.

Este registro se utiliza para combinar y priorizar las interrupciones del conversor analogo
digital. Una vez que el ADC ha producido una interrupcion, en vez de estar comprobando una
a una las banderas de ADC12IFG, basta con leer este registro para saber que canal produjo la
interrupcion. En este registro solo esta el campo ADC12IVx, y el resto son ceros.
Ademas de las banderas que se generan por almacenar el resultado de una conversion, en
este registro estan las banderas de timeoverflow y conversion memory overflow.
Los valores que puede tomar ADC12IV, estan en la siguiente tabla ordenados de mayor
prioridad a menor prioridad.

Si una bandera se ha levantado, pero no ha sido atendida, y se levanta otra de mayor

Seminario de Computadores I, 2004 14


ADC12 Registros de interrupci
on

prioridad, est
a ultima sobreescribe el valor de ADC12IV ya que tiene mayor prioridad. En cambio,
si posteriormente llega otra con menor prioridad, no se produce ning un cambio.
Una vez atendida la interrupcion de mayor prioridad, si existen otras de menor prioridad
pendiente, ADC12IV tomara el valor de la interrupcion que le sigue en prioridad. Esto quiere
decir que las interrupciones de menor prioridad que han sido sobreescritas no se pierden, solo se
posponen.

Seminario de Computadores I, 2004 15


ADC12 Funcionamiento

3 Funcionamiento
3.1 Conversi
on

3.1.1 Memoria de Conversi


on

Existen 16 registros de memoria de conversion ADC12MEMx, cada uno de 16 bit de los


cuales solo se ocupan 12 para guardar los resultados de cada ciclo de conversion. Cada registro
de conversion esta asociado a un registro de control ADC12MCTLx, en el cual se encuentran
SREFx, INCHx y EOS.
SREFx define el voltaje de referencia a usar; INCHx selecciona el canal entrante (esto quiere
decir que no necesariamente por usar el registro de memoria 1 tengo que convertir el canal 1);
el EOS define el final de la secuencia cuando el modo secuencial es utilizado. En caso de que
ning
un EOS sea seteado, una secuencia se repetira indefinidamente.
CSTARTADDx (Control START ADDress) ubicado en ADC12CTL1 define el primer re-
gistro de control usado para cualquier conversion. Si la conversion es canal u
nico o repeticion de
canal unico, el CSTARTADDx indica el u nico ADC12MCTLx por ser usado.
Si el modo de conversion seleccionado es secuencia de canales o repeticion de secuencia
de canales, CSTARTADDx indica el primer ADC12MCTLx por ser usado en la secuencia. Un
puntero invisible es incrementado automaticamente cuando cada conversion esta completa para
que pase al proximo ADC12MCTLx. La secuencia contin ua hasta que sea encontrado un EOS=1.
Cuando el resultado de la conversion es escrito en el registro seleccionado ADC12MEMx,
la bandera en el registro ADC12IFGx correspondiente es seteada automaticamente.

3.1.2 Modos de Conversi


on

El modo de conversion se selecciona mediante CONSEQx ubicado en el registro ADC12CTL1.

CONSEQx
00 Canal u
nico, u
nica conversion : Un unico canal es convertido una sola vez
01 Secuencia de canales : Una secuencia de canales es convertida una sola
vez
10 Repeticion de canal u
nico : Un unico canal es convertido repetidas veces
11 Repeticion Secuencia de cana- : Una secuencia de canales en convertida repetidas
les veces

Seminario de Computadores I, 2004 16


ADC12 Conversi
on

A. Canal u
nico, u
nica conversi
on (00)
Un u
nico canal es convertido una sola vez. El resultado obtenido es guardado en el registro
de memoria ADC12MEMx definido por el CSTARTADDx.
Las conversiones son disparadas por el ADC12SC bit y cuando cualquier otra fuente de
disparo es usada (TIMER A, TIMER B) el bit ENC debe ser cambiado entre cada conversi
on.
La siguiente Figura muestra el diagrama de flujo del modo Canal u
nico, u
nica conversion.

B. Secuencia de canales (01)


Una secuencia de canales es convertida una sola vez. Los resultados son guardados en la
memoria de conversion partiendo del registro definido en CSTARTADDx. La secuencia ter-
mina con la conversion del registro ADC12MCTLx cuyo bit EOS este en 1. Nuevamente la
secuencia el gatillada por el ADC12SC y cuando cualquier otra fuente de disparo es usada
(TIMER A, TIMER B) el bit ENC debe ser cambiado entre cada conversion.
La siguiente Figura muestra el diagrama de flujo del modo Secuencia de canales.

Seminario de Computadores I, 2004 17


ADC12 Conversi
on

C. Repetici
on de canal u
nico (10)
Un u
nico canal es convertido repetidas veces. El resultado obtenido es guardado en el registro
de memoria ADC12MEMx definido por CSTARTADDx.
Las conversiones son disparadas por el ADC12SC bit y cuando cualquier otra fuente de
disparo es usada (TIMER A, TIMER B) el bit ENC debe ser cambiado entre cada conversi
on.
Es necesario leer el resultado despues que se ha terminado la conversion, debido a que s olo
un registro de memoria es usado y se sobrescribira este despues de la siguiente conversion
La siguiente Figura muestra el diagrama de flujo del modo Repeticion de canal u
nico.

Seminario de Computadores I, 2004 18


ADC12 Conversi
on

D. Repetici
on Secuencia de canales (11)
Una secuencia de canales en convertida repetidas veces. Los resultados son guardados en
la memoria de conversion partiendo del registro definido en CSTARTADDx. La secuencia
termina en la lectura de un canal donde su registro de control ADC12MCTLx tenga seteado
el bit EOS, la repeticion de secuencia el gatillada por el ADC12SC y cuando cualquier otra
fuente de disparo es usada (TIMER A, TIMER B) el bit ENC debe ser cambiado entre cada
conversi
on.
La siguiente Figura muestra el diagrama de flujo del modo Repeticion Secuencia de canales.

C
omo parar las conversiones

Parar el ADC12 depende del modo de operacion que se este usando. Las vas recomendadas
para parar una conversion activa son las siguientes:

Modo (00): Resetear el bit ENC terminara inmediatamente la conversion, lo que implicara
que el resultado de la conversion no sera confiable.

Modo (01): Resetear el bit ENC terminara la conversion al final de la secuencia.

Modo (10): La conversion es detenida poniendo a ENC en 0 lo que hace terminar la con-
version al final del ciclo de conversion.

Modo (11): Las sucesivas conversiones terminan cuando ENC es igual a 0 lo que hace
terminar la conversion al final de la secuencia.

Seminario de Computadores I, 2004 19


ADC12 Interrupciones

Cualquier modo de conversion puede ser detenido inmediatamente asignando a CONSEQx


igual a (00) y reseteando el bit ENC, en este caso los resultados de las conversiones no ser
an
confiables.

3.1.3 Sensor integrado de temperatura

Para usar el sensor integrado de temperatura se debe seleccionar la entrada analoga INCHx =
1010. Este canal es usado como cualquier otro.
Para usar el sensor de temperatura el perodo de muestreo debe ser mayor que 30[s] y se
debe considerar que el offset vara mucho entre un procesador y otro.
La temperatura se encuentra relacionada con el voltaje de entrada mediante la siguiente
ecuacion(con valores nominales),

Vtemp = 3.55 103 T + 0.986


De la cual se desprende el siguiente grafico.

3.2 Interrupciones
3.2.1 Interrupciones del ADC12

El ADC12 posee 18 recursos de interrupcion.


ADC12IFG0-ADC12IFG15: una bandera es seteada cada vez que su registro de me-
moria asociado ha sido escrito por una conversion. Una interrupcion es creada si el corres-
pondiente bit ADC12IEx y el GIE bit son seteados.

ADC12OV, ADC12MEMx overflow: esta interrupcion es generada cuando un resultado


ha sido sobre-escrito en un registro de memoria ADC12MEMx, antes de haber sido ledo.

ADC12TOV, ADC12 conversion time overflow: esta ocurre cuando otra peticion de con-
version es requerida antes que la conversion actual halla terminado.

Seminario de Computadores I, 2004 20


ADC12 Interrupciones

3.2.2 Vector Generador de Interrupciones, ADC12IV

En este registro todas las interrupciones son priorizadas y combinadas en un u nico vector de
interrupciones. Este vector es usado para poder identificar cual de las interrupciones ha ocurrido,
sin necesidad de revisar cada una de las banderas de interrupcion.
Las interrupciones ADC12TOV y ADC12OV son reseteadas automaticamente con cualquier
acceso a este registro. Las interrupciones originadas por ADC12IFGx son reseteadas una vez que
se hayan ledo los datos de los registros de memoria ADC12MEMx correspondiente.
En el caso que una interrupcion quede pendiente despues de un servicio de interrupcion, se
generara otra interrupcion que sera atendida posteriormente.

Seminario de Computadores I, 2004 21


ADC12 Ejemplo de implementaci
on

4 Ejemplo de implementaci
on
4.1 Proceso de Inicializaci
on

Para configurar la conversion ADC12 los pasos son los siguientes:

Seleccionar los pines del puerto 6 que van a utilizarse como canales analogos y configurarlos
como entradas (P6DIR=0) y uso por perifericos (P6SEL=1).

Luego debe deshabilitarse el bit ENC del registro ADC12CTL0. Esto es necesario para
poder modificar los registros de configuracion del ADC12.

ADC12CTL0:

1. Configurar el tiempo de captura para los canales internos con SHT1 xx y para los canales
externos con SHT0 xx.

2. Si se va a utilizarse la referencia interna de voltaje, habilitar REFON y seleccionar el


voltaje con REF2 5V.

3. Si se utilizan conversiones m ultiples, poner en 1 el bit MSC del registro ADC12CTL0 si


se desea que cada conversion se realice apenas hay terminado la anterior. Si se deja en
0, el inicio de cada conversion sucesiva sera dado por un timer.

4. Si se van a utilizar interrupciones, configurar los bits ADC12OVIE y ADC12TOVIE


del registro ADC12CTL0 de a cuerdo a la aplicacion. Tambien configurar el Registro
ADC12IE.

ADC12CTL1:

1. Seleccionar el primer registro a convertir con CSTARTADD x. Con esto elegimos cual de
los registros ADC12MCTL0 a ADC12MCTL15 sera el registro a convertir, o el primero
de la secuencia de conversion.

2. Dejar el bit SHP en 1 para no interrumpir el ciclo de captura, y los bits ISSH y SHS en
0.

3. Seleccionar la fuente de reloj del ADC12 con ADC12SSEL x y el divisor del reloj con
ADC12DIV x. Asegurarse que el tiempo de conversion de 12 ciclos de reloj no sea menor
a 375[ns] y tampoco mucho mayor.

4. Elegir el modo de conversion con CONSEQ x.

Seminario de Computadores I, 2004 22


ADC12 Ejemplo: Conversion u
nica, canal u
nico

ADC12MCTL0 a ADC12MCTL15:

1. Para cada registro de conversion que vaya a utilizarse, seleccionar el canal por convertir
con INCH x.

2. Para cada registro de conversion seleccionar cual sera la referencia V+ y V- con SREF x

3. Si se utiliza el modo secuencia de canales, poner el bit EOS en 1 en el u


ltimo registro a
convertir.

Al terminar la configuraci
on:

1. Encender el conversor poniendo en 1 el bit ADCON del registro ADC12CTL0

2. Habilitar las conversiones poniendo en 1 el bit ENC del registro ADC12CTL0, blo-
queando as la modificacion de los bits de configuracion de los registros de control
ADC12CTL0, ADC12CTL1 y ADC12MCTL0 a ADC12MCTL15.

Para iniciar la conversi


on, poner en 1 el bit ADC12SC del registro ADC12MCTL0.

4.2 Programa de ejemplo Conversi


on u
nica, canal u
nico.
Solo se convertira un u
nico canal una u
nica vez. El registro seleccionado para hacer la
conversion es el ADC12MCLT0, por lo tanto el resultado se obtiene en el registro ADC12MEM0.
En esta ocasion, se ha configurado de antemano la referencia de voltaje para el canal a
convertir, que es el voltaje de alimentacion V+ = 3.6[V] y V- = 0[V]. La rutina de conversion solo
elige que canal convertir, no pudiendo modificarse la referencia de voltaje. La rutina de conversi
on
inicia y espera a que termine el ciclo de la conversion, retornando el resultado obtenido.

Rutina de inicializacion:
void ADC INIT SIMPLE(void)
{
P6SEL |= 0x00FF; //8 lsb Puerto 6 para conversor ADC12
P6DIR &= 0xFF00; //8 lsb Puerto 6 como entradas (analogas)
ADC12CTL0 &= ~ENC; //deshabilita conversion
ADC12CTL0 = SHT1 15 | SHT0 15 | ADC12ON;
ADC12CTL1 = CSTARTADD 0 | SHS 0 | SHP | ADC12DIV 7 | ADC12SSEL 2 | CONSEQ 0;
ADC12MCTL0 = SREF 0;
ADC12IE = 0x00; //Deshabilitadas las interrupciones (bits
ADC12IEx) para todos los ADC12MCTLx
ADC12CTL0 |= ENC; // habilita conversi on
}

Seminario de Computadores I, 2004 23


ADC12 Ejemplo: Conversion u
nica, secuencia de canales

Rutina de conversion. Se llama con el argumento del canal a convertir.


int conversion(int CANAL)
{
ADC12CTL0 &= ~ENC; //deshabilita conversion para realizar cambios
ADC12MCTL0 &= 0xFFF0; //borra INCHx
ADC12MCTL0 |= (CANAL & 0x0F); //Selecciona el canal a convertir
ADC12CTL0 |= ENC; //habilita conversi on
ADC12CTL0 |= ADC12SC; //inicia conversi on
while (ADC12CTL0 & ADC12SC); //espera t ermino
de la conversi on, o sea espera que bit ADC12SC = 0
return ADC12MEM0;
}

4.3 Programa de ejemplo Conversi


on u
nica, secuencia de canales.

Funcion de inicializacion para secuencia de 4 conversiones utilizando los registros ADC12MCTL0


a ADC12MCTL3, cada conversion es generada apenas termina la conversion anterior. El resul-
tado de las conversiones se guardan en variables globales llamadas ResultadoADC[0] a Resulta-
doADC[3].

Las diferencias con la inicializacion de la conversion de un u


nico canal se muestran en rojo.
void ADC INIT SEQ(void)
{
P6SEL |= 0x00FF;
P6DIR &= 0xFF00;
ADC12CTL0 &= ~ENC; //Para poder hacer cambios en los registros
ADC12CTL0 = SHT1 15 | SHT0 15 | ADC12ON | MSC;
//MSC =1 => Cada conversi on se realiza apenas la anterior haya terminado
ADC12CTL1 = CSTARTADD 0 | SHS 0 | SHP | ADC12DIV 7 | ADC12SSEL 2 | CONSEQ 1;
//CONSEQx = 1 => MODO DEL ADC12: Secuencia de canales.
ADC12MCTL0 = SREF 0;
ADC12MCTL1 = SREF 0;
ADC12MCTL2 = SREF 0;
ADC12MCTL3 = SREF 0 | EOS;// ultimo canal de la secuencia
ADC12IE = 0x00;
ADC12CTL0 |= ENC; // habilita conversi on
}

Seminario de Computadores I, 2004 24


ADC12 Ejemplo: Conversion u
nica, secuencia de canales

Funcion de conversion. Se llama con argumento de los cuatro canales por convertir. Los
canales pueden estar en cualquier orden deseado y pueden repetirse.
void CONV ADC SEQ(int CH1,CH2,CH3,CH4)
{
ADC12CTL0 &= ~ENC;
ADC12MCTL0 &= 0xFFF0; //Se limpia canal anterior
ADC12MCTL1 &= 0xFFF0; //Se limpia canal anterior
ADC12MCTL2 &= 0xFFF0; //Se limpia canal anterior
ADC12MCTL3 &= 0xFFF0; //Se limpia canal anterior
ADC12MCTL0 |= (CH1 & 0x0F);//Selecciona 1er canal a convertir
ADC12MCTL1 |= (CH2 & 0x0F);//Selecciona 2do canal
ADC12MCTL2 |= (CD3 & 0x0F);//Selecciona 3er canal
ADC12MCTL3 |= (CH4 & 0x0F);//Selecciona 4to canal
ADC12CTL0 |= ENC;
ADC12CTL0 |= ADC12SC;
while (ADC12CTL0 & ADC12SC);
ResultadoADC[0]=ADC12MEM0; //Los resultados de la conversi on
ResultadoADC[1]=ADC12MEM1; //se almacenan en variables
ResultadoADC[2]=ADC12MEM2; // globales
ResultadoADC[3]=ADC12MEM3;
}

Seminario de Computadores I, 2004 25

También podría gustarte