Anda di halaman 1dari 26

Seminario de Computadores I, 1er Semestre 2004

ADC12
Conversor Anlogo Digital de 12 bits a

Francisco Blancaire Eduardo Gonzlez a Michael Kusch Diego Valencia

ADC12

INDICE GENERAL

Indice General
1 Introduccin o 1.1 1.2 1.3 Caracter sticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diagrama de bloques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Requerimientos para la operacin . . . . . . . . . . . . . . . . . . . . . . . . . . . o 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 2 Registros 2.1 Registros de conguracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 2.1.1 2.1.2 2.2 2.3 2.4 2.2.1 2.3.1 2.4.1 2.4.2 2.4.3 ADC12CTL0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC12CTL1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC12MEMx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC12MCTLx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC12IFG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC12IE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC12IV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reloj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Canales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Voltajes de referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Muestreo y tiempos de conversin . . . . . . . . . . . . . . . . . . . . . . o Consideraciones del tiempo de captura . . . . . . . . . . . . . . . . . . . . 3 3 4 4 5 5 5 6 8 9 9 9 10 11 11 12 12 13 13 13 14 16 16 16 16 20 20 20 21

Registros de almacenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Registros de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Registros de interrupcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o

3 Funcionamiento 3.1 Conversin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 3.1.1 3.1.2 3.1.3 3.2 3.2.1 3.2.2 Memoria de Conversin . . . . . . . . . . . . . . . . . . . . . . . . . . . . o Modos de Conversin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o Sensor integrado de temperatura . . . . . . . . . . . . . . . . . . . . . . . Interrupciones del ADC12 . . . . . . . . . . . . . . . . . . . . . . . . . .

Interrupciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vector Generador de Interrupciones, ADC12IV . . . . . . . . . . . . . . .

Seminario de Computadores I, 2004

ADC12

INDICE GENERAL

4 Ejemplo de implementacin o 4.1 4.2 4.3 Proceso de Inicializacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o Ejemplo: Conversin unica, canal unico . . . . . . . . . . . . . . . . . . . . . . . o Ejemplo: Conversin unica, secuencia de canales . . . . . . . . . . . . . . . . . . o

22 22 23 24

Seminario de Computadores I, 2004

ADC12

Introduccin o

Introduccin o

En este documento se detalla la conguracin y funcionamiento del mdulo ADC12, que es o o un conversor anlogo digital de 12 bits que trae incorporado el microcontrolador MSP430F149. a Su funcin es convertir voltajes analgicos que se introducen por distintas entradas dispoo o nibles a palabras binarias de 12 bits. Esto lo realiza utilizando recursos propios de mdulo, es o decir sin interferir en el procesamiento principal del microcontrolador. En los microcontroladores con DMA se puede utilizar esta propiedad para tener una conversin uida y continua sin o interrumpir ningn otro proceso. u

1.1

Caracter sticas

Conversin de 12 bits. o Tasa de muestreo programable, con una mxima de 200k Muestras por segundo. a Inicio de la conversin por software o por temporizadores . o Trmino de cada conversin puede generar interrupciones. e o Fuente de reloj, per odo de captura y frecuencia de muestreo programables. Generacin de referencias congurable por software. o 8 canales de entrada, ms 4 seales internas. a n 4 modos de adquisicin. o Hasta 16 conversiones almacenadas independientemente.

Seminario de Computadores I, 2004

ADC12

Diagrama de bloques

1.2

Diagrama de bloques
El diagrama de bloques se muestra a continuacin o

Se destaca el hecho de que aunque se puedan adquirir varias seales distintas, slo existe n o un modulo conversor.

1.3

Requerimientos para la operacin o

Se muestran a continuacin las opciones bsicas que deben congurarse para utilizar el o a ADC. Cada seccin muestra su parte en el diagrama de bloques para tener una idea del ujo de o las seales. n

Seminario de Computadores I, 2004

ADC12

Requerimientos para la operacin o

1.3.1

Reloj (ADC12CLK)

Se utiliza slo un reloj para la conversin y para generar el per o o odo de muestreo. Con ADC12SSEL se efecta la seleccin de este reloj. Las fuentes posibles de reloj son: SMCLK, u o MCLK, ACLK, ADC12OSC. EL ADC12OSC es un oscilador interno del mdulo de 5[M hz], pero var segn microcono a u trolador, voltaje de alimentacin y temperatura. o Existe adems la posibilidad de dividir el reloj de 1 a 8 congurando los bits ADC12DIVx. a

1.3.2

Canales

La eleccin del canal que se convierte se realiza mediante un multio plexor analgico, diseado hecho de manera de minimizar el crosstalk o n y el ruido. Los canales que no se estn convirtiendo quedan puestos a a tierra para evitar an ms ruido. u a Los canales externos de entrada corresponden a los pines del puerto 6 del microcontrolador, por lo que se deben congurar como entradas y en modo entrada/salida para eliminar el buer que podr crear problemas a con corrientes parsitas. a

1.3.3

Voltajes de referencia

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

Seminario de Computadores I, 2004

ADC12

Requerimientos para la operacin o

del puerto 6. Por ultimo, 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 alimentacin) estn ltrados con o e 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 conversin o

La conversin completa implica dos fases: muestreo (o captura) y conversin. o o La primera fase se inicia con el canto de subida de una seal interna SHI. Una vez concluida n esta fase, comienza la fase de conversin. o Las fuentes de la seal SHI se seleccionan mediante los bits SHSx y son las siguientes: n 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 seal puede ser invertida utilizando el bit ISSH. n La seal SAMPCON controla el per n odo de muestreo y el comienzo de la conversin. Mieno tras sta est alta, est activo el proceso de captura. En el canto de bajada de SAMPCON se e e a comienza la conversin que dura 13 cantos del reloj (ADC12CLK). o

La relacin que existe entre la seal SHI y SAMPCON esta determinada por el bit de o n control SHP, que determina dos modos distintos de captura:

Seminario de Computadores I, 2004

ADC12

Requerimientos para la operacin o

A. Captura Extendida (SHP=0) En este modo la seal SHI controla directamente la seal SAMPCON, por lo que dene n n directamente el per odo 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 conversin. o

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 congura 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 per odo de muestreo real corresponde entonces a tsample + tsync , este ultimo correspondiendo al tiempo de sincro nismo. La conversion se inicia inmediatamente con el canto de bajada de SAMPCON.

Seminario de Computadores I, 2004

ADC12

Requerimientos para la operacin o

1.3.5

Consideraciones del tiempo de captura

Una consideracin importante que debe realizarse al convertir es la caracter o stica de ltro pasabajos que tiene el canal durante la fase de muestreo (ver Figura).

Vi =Voltaje en el pin. Vs =Voltaje de la fuente anloga por muestrear. a Rs =Resistencia externa de la fuente anloga. a 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 relacin entre el tiempo de captura y estas variables responde al tiempo de carga del o condensador: tsample > (Rs + Ri ) ln(213 ) Ci Reemplazando los valores t picos de Ri = 2[k] y Ci = 40[pF ] se obtiene tsample en funcin o 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 per odo de captura m nimo de 4, 33[s].

Seminario de Computadores I, 2004

ADC12

Registros

Registros

Los registros del Conversor Anlogo-Digital se pueden catalogar de la siguiente manera: a dos registros de conguracin, tres para el manejo de interrupciones, diecisis para el control de o e conversion y otros diecisis para almacenar los resultados de la conversion. e

2.1
2.1.1

Registros de conguracin o
ADC12 Control Register 0, ADC12CTL0.

Este registro es el primer registro de control. Los campos SHT1x y SHT0x son para denir la cantidad de ciclos de reloj que va a durar el muestreo de los canales por convertir segn los registros ADC12MEM8 al ADC12MEM15, y u ADC12MEM0 al ADC12MEM7 respectivamente. El bit MSC es empleado para muestreos y conversiones mltiples automticas. u a REFON es el bit que habilita el generador de voltaje de referencia interno del conversin, o si no se desea usar, es recomendable mantenerlo apagado (en cero) para ahorrar consumo. Para seleccionar el nivel del voltaje de referencia interna est el bit REF2 5V, el cual selecciona el a voltaje en 2.5[V] o 1.5[V], asignando un 1 0 respectivamente. o 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 slo pueden o ser modicados cuando el bit que habilita la conversin ENC est en 0. o a Para habilitar la interrupcin por overow (desbordamiento) en el resultado, se debe poner o en bit ADC12OVIE en uno. A su vez, si tambin se quiere que est la interrupcin por Time e e o Overow, el bit ADC12TOVIE debe estar en uno. Tambin es condicin necesaria que estn e o e habilitadas las interrupciones globales (GIE). Para iniciar una conversion se debe levantar el bit ADC12SC. Esta es la tabla que muestra cmo congurar los campos SHTxx, para elegir el nmero de o u ciclos de reloj deseados.

Seminario de Computadores I, 2004

ADC12

Registros de conguracin o

2.1.2

ADC12 Control Register 1, ADC12CTL1.

Este es el segundo registro de control del conversor. Con los bits CSTARTADDx denimos en qu registro de memoria ADC12MEMx iniciar la e conversin. Realmente lo que denimos es con cual de los registros de control ADC12MCTLx o (aqu se dene el canal de entrada y VREF ) comenzar la conversin, y cuyo resultado ser guar o a dado en su respectivo ADC12MEMx. Los bits SHSx son para elegir la fuente de reloj que inicia todo el ciclo de conversion. Se conguran de la siguiente forma: 00 01 ADC12SC TIMER A.OUT1 10 11 TIMER B.OUT0 TIMER B.OUT1

El bit ISSH sirve para invertir la seal de Sample&Hold (bit en 1). n 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 estn los bits ADC12SSELx, los bits se a ajustan de la siguiente forma:

Seminario de Computadores I, 2004

10

ADC12

Registros de almacenamiento

00 01

ADC12OSC ACLK

10 11

MCLK SMCLK

Para dividir la frecuencia del reloj elegido, en caso que sea necesario, es posible ajustar los bits de ADC12DIVx. La conguracin de estos bits es la siguiente: o 000 100 1 5 001 101 2 6 010 110 3 7 011 111 4 8

Es importante tener en cuenta que para modicar los campos anteriores se debe tener el bit ENC en cero. Para elegir el modo de conversin se deben ajustar los bits del campo CONSEQx de la o siguiente manera: 00 01 Unico canal Secuencia de canales 10 11 Repetir unico canal Repetir secuencia de canales

El ultimo bit de este registro, el ADC12BUSY, indica si el conversor est ocupado realizando a una conversin. o

2.2
2.2.1

Registros de almacenamiento
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 estn siempre en 0 y son de solo a 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
2.3.1

Registros de control
ADC12 Memory Control, ADC12MCTLx.

Este registro es el que dene qu canal ser convertido. e a Para seleccionar un canal se debe ajustar INCHx segn la siguiente tabla: u INCHx 0000 0001 0010 0011 0100 0101 0110 0111 Canal A0 A1 A2 A3 A4 A5 A6 A7 INCHx 1000 1001 1010 1011 1100 1101 1110 1111 Canal V eREF + VREF /V eREF Temperature Diode (AVCC AVSS )/2 (AVCC AVSS )/2 (AVCC AVSS )/2 (AVCC AVSS )/2 (AVCC AVSS )/2

El campo SREFx se emplea para seleccionar los voltajes de referencia. El resultado que se obtiene luego de una conversin esta dado por: o NADC = 4095 VIN VR VR+ VR

En este campo se eligen los VR+ y VR a utilizar, segn la siguiente tabla. u SREFx 000 001 010 011 100 101 110 111 VR+ AVCC VREF + V eREF + V eREF + AVCC VREF + V eREF + V eREF + VR AVSS AVSS AVSS AVSS VREF /V eREF VREF /V eREF VREF /V eREF VREF /V eREF

Seminario de Computadores I, 2004

12

ADC12

Registros de interrupcin o

2.4
2.4.1

Registros de interrupcin o
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 nmero del registro. u Poe ejemplo, si una conversin naliza y se almacena un resultado en ADC12MEM5, eno tonces se levantar una bandera en ADC12IFG5. a 2.4.2 ADC12 Interrupt Enable Register, ADC12IE.

Habilita las interrupciones provocadas por ADC12IFG. Esto se puede hacer de manera espec ca, habilitando las interrupciones para algunos ADC12IFG, manteniendo las dems desa habilitadas. Cada vez que se levante una bandera en ADC12IFG, se comprueba si est habilitada a la mascara de interrupcin correspondiente. Si es as se generar una interrupcin, en caso cono a o trario nada pasa.

Seminario de Computadores I, 2004

13

ADC12

Registros de interrupcin o

2.4.3

ADC12 Interrupt Vector Register, ADC12IV.

Este registro se utiliza para combinar y priorizar las interrupciones del conversor anlogo a digital. Una vez que el ADC ha producido una interrupcin, en vez de estar comprobando una o a una las banderas de ADC12IFG, basta con leer este registro para saber qu canal produjo la e interrupcin. En este registro slo est el campo ADC12IVx, y el resto son ceros. o o a Adems de las banderas que se generan por almacenar el resultado de una conversin, en a o este registro estn las banderas de timeoverow y conversion memory overow. a Los valores que puede tomar ADC12IV, estn en la siguiente tabla ordenados de mayor a 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 interrupcin o

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

Seminario de Computadores I, 2004

15

ADC12

Funcionamiento

3
3.1

Funcionamiento
Conversin o
Memoria de Conversin o

3.1.1

Existen 16 registros de memoria de conversin ADC12MEMx, cada uno de 16 bit de los o cuales slo se ocupan 12 para guardar los resultados de cada ciclo de conversin. Cada registro o o de conversin est asociado a un registro de control ADC12MCTLx, en el cual se encuentran o a SREFx, INCHx y EOS. SREFx dene 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 dene el nal de la secuencia cuando el modo secuencial es utilizado. En caso de que ningn EOS sea seteado, una secuencia se repetir indenidamente. u a CSTARTADDx (Control START ADDress) ubicado en ADC12CTL1 dene el primer registro de control usado para cualquier conversin. Si la conversin es canal unico o repeticin de o o o canal unico, el CSTARTADDx indica el unico ADC12MCTLx por ser usado. Si el modo de conversin seleccionado es secuencia de canales o repeticin de secuencia o o de canales, CSTARTADDx indica el primer ADC12MCTLx por ser usado en la secuencia. Un puntero invisible es incrementado automticamente cuando cada conversin esta completa para a o que pase al prximo ADC12MCTLx. La secuencia contina hasta que sea encontrado un EOS=1. o u Cuando el resultado de la conversin es escrito en el registro seleccionado ADC12MEMx, o la bandera en el registro ADC12IFGx correspondiente es seteada automticamente. a 3.1.2 Modos de Conversin o

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


CONSEQx

00 01 10 11

Canal unico, unica conversin o Secuencia de canales Repeticin de canal unico o Repeticin Secuencia de canao les

: : : :

Un unico canal es convertido una sola vez Una secuencia de canales es convertida una sola vez Un unico canal es convertido repetidas veces Una secuencia de canales en convertida repetidas veces

Seminario de Computadores I, 2004

16

ADC12

Conversin o

A. Canal unico, unica conversin (00) o Un unico canal es convertido una sola vez. El resultado obtenido es guardado en el registro de memoria ADC12MEMx denido 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 conversin. o La siguiente Figura muestra el diagrama de ujo del modo Canal unico, unica conversin. o

B. Secuencia de canales (01) Una secuencia de canales es convertida una sola vez. Los resultados son guardados en la memoria de conversin partiendo del registro denido en CSTARTADDx. La secuencia tero mina con la conversin del registro ADC12MCTLx cuyo bit EOS est en 1. Nuevamente la o e 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 conversin. o La siguiente Figura muestra el diagrama de ujo del modo Secuencia de canales.

Seminario de Computadores I, 2004

17

ADC12

Conversin o

C. Repeticin de canal unico (10) o Un unico canal es convertido repetidas veces. El resultado obtenido es guardado en el registro de memoria ADC12MEMx denido 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 conversin. o Es necesario leer el resultado despus que se ha terminado la conversin, debido a que slo e o o un registro de memoria es usado y se sobrescribir ste despus de la siguiente conversin ae e o La siguiente Figura muestra el diagrama de ujo del modo Repeticin de canal unico. o

Seminario de Computadores I, 2004

18

ADC12

Conversin o

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

Cmo parar las conversiones o Parar el ADC12 depende del modo de operacin que se este usando. Las v recomendadas o as para parar una conversin activa son las siguientes: o Modo (00): Resetear el bit ENC terminar inmediatamente la conversin, lo que implicar a o a que el resultado de la conversin no ser conable. o a Modo (01): Resetear el bit ENC terminar la conversin al nal de la secuencia. a o Modo (10): La conversin es detenida poniendo a ENC en 0 lo que hace terminar la cono versin al nal del ciclo de conversin. o o Modo (11): Las sucesivas conversiones terminan cuando ENC es igual a 0 lo que hace terminar la conversin al nal de la secuencia. o

Seminario de Computadores I, 2004

19

ADC12

Interrupciones

Cualquier modo de conversin puede ser detenido inmediatamente asignando a CONSEQx o igual a (00) y reseteando el bit ENC, en este caso los resultados de las conversiones no sern a conables. 3.1.3 Sensor integrado de temperatura

Para usar el sensor integrado de temperatura se debe seleccionar la entrada anloga INCHx = a 1010. Este canal es usado como cualquier otro. Para usar el sensor de temperatura el per odo de muestreo debe ser mayor que 30[s] y se debe considerar que el oset var mucho entre un procesador y otro. a La temperatura se encuentra relacionada con el voltaje de entrada mediante la siguiente ecuacin(con valores nominales), o Vtemp = 3.55 103 T + 0.986 De la cual se desprende el siguiente grco. a

3.2
3.2.1

Interrupciones
Interrupciones del ADC12

El ADC12 posee 18 recursos de interrupcin. o ADC12IFG0-ADC12IFG15: una bandera es seteada cada vez que su registro de memoria asociado ha sido escrito por una conversin. Una interrupcin es creada si el correso o pondiente bit ADC12IEx y el GIE bit son seteados. ADC12OV, ADC12MEMx overow: esta interrupcin es generada cuando un resultado o ha sido sobre-escrito en un registro de memoria ADC12MEMx, antes de haber sido le do. ADC12TOV, ADC12 conversin time overow: esta ocurre cuando otra peticin de cono o versin es requerida antes que la conversin actual halla terminado. o o

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 unico vector de interrupciones. Este vector es usado para poder identicar cul de las interrupciones ha ocurrido, a sin necesidad de revisar cada una de las banderas de interrupcin. o Las interrupciones ADC12TOV y ADC12OV son reseteadas automticamente con cualquier a acceso a este registro. Las interrupciones originadas por ADC12IFGx son reseteadas una vez que se hayan le los datos de los registros de memoria ADC12MEMx correspondiente. do En el caso que una interrupcin quede pendiente despus de un servicio de interrupcin, se o e o generara otra interrupcin que ser atendida posteriormente. o a

Seminario de Computadores I, 2004

21

ADC12

Ejemplo de implementacin o

4
4.1

Ejemplo de implementacin o
Proceso de Inicializacin o
Para congurar la conversin ADC12 los pasos son los siguientes: o Seleccionar los pines del puerto 6 que van a utilizarse como canales anlogos y congurarlos a como entradas (P6DIR=0) y uso por perifricos (P6SEL=1). e Luego debe deshabilitarse el bit ENC del registro ADC12CTL0. Esto es necesario para poder modicar los registros de conguracin del ADC12. o

ADC12CTL0: 1. Congurar 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 mltiples, poner en 1 el bit MSC del registro ADC12CTL0 si u se desea que cada conversin se realice apenas hay terminado la anterior. Si se deja en o 0, el inicio de cada conversin sucesiva ser dado por un timer. o a 4. Si se van a utilizar interrupciones, congurar los bits ADC12OVIE y ADC12TOVIE del registro ADC12CTL0 de a cuerdo a la aplicacin. Tambin congurar el Registro o e ADC12IE. ADC12CTL1: 1. Seleccionar el primer registro a convertir con CSTARTADD x. Con esto elegimos cual de los registros ADC12MCTL0 a ADC12MCTL15 ser el registro a convertir, o el primero a de la secuencia de conversin. o 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 conversin de 12 ciclos de reloj no sea menor o a 375[ns] y tampoco mucho mayor. 4. Elegir el modo de conversin con CONSEQ x. o

Seminario de Computadores I, 2004

22

ADC12

Ejemplo: Conversin unica, canal unico o

ADC12MCTL0 a ADC12MCTL15: 1. Para cada registro de conversin que vaya a utilizarse, seleccionar el canal por convertir o con INCH x. 2. Para cada registro de conversin seleccionar cul ser la referencia V+ y V- con SREF x o a a 3. Si se utiliza el modo secuencia de canales, poner el bit EOS en 1 en el ultimo registro a convertir. Al terminar la conguracin: o 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, bloqueando as la modicacin de los bits de conguracin de los registros de control o o ADC12CTL0, ADC12CTL1 y ADC12MCTL0 a ADC12MCTL15. Para iniciar la conversin, poner en 1 el bit ADC12SC del registro ADC12MCTL0. o

4.2

Programa de ejemplo Conversin unica, canal unico. o

Slo se convertir un unico canal una unica vez. El registro seleccionado para hacer la o a conversin es el ADC12MCLT0, por lo tanto el resultado se obtiene en el registro ADC12MEM0. o En esta ocasin, se ha congurado de antemano la referencia de voltaje para el canal a o convertir, que es el voltaje de alimentacin V+ = 3.6[V] y V- = 0[V]. La rutina de conversin slo o o o elige qu canal convertir, no pudiendo modicarse la referencia de voltaje. La rutina de conversin e o inicia y espera a que termine el ciclo de la conversin, retornando el resultado obtenido. o Rutina de inicializacin: o void ADC INIT SIMPLE(void) { P6SEL |= 0x00FF; //8 lsb Puerto 6 para conversor ADC12 P6DIR &= 0xFF00; //8 lsb Puerto 6 como entradas (anlogas) a 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 conversin o }

Seminario de Computadores I, 2004

23

ADC12

Ejemplo: Conversin unica, secuencia de canales o

Rutina de conversin. Se llama con el argumento del canal a convertir. o 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 conversin o ADC12CTL0 |= ADC12SC; //inicia conversin o while (ADC12CTL0 & ADC12SC); //espera trmino e de la conversin, o sea espera que bit ADC12SC = 0 o return ADC12MEM0; }

4.3

Programa de ejemplo Conversin unica, secuencia de canales. o

Funcin de inicializacin para secuencia de 4 conversiones utilizando los registros ADC12MCTL0 o o a ADC12MCTL3, cada conversin es generada apenas termina la conversin anterior. El resulo o tado de las conversiones se guardan en variables globales llamadas ResultadoADC[0] a ResultadoADC[3]. Las diferencias con la inicializacin de la conversin de un unico canal se muestran en rojo. o o 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 conversin se realiza apenas la anterior haya terminado o 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;// ltimo canal de la secuencia u ADC12IE = 0x00; ADC12CTL0 |= ENC; // habilita conversin o }

Seminario de Computadores I, 2004

24

ADC12

Ejemplo: Conversin unica, secuencia de canales o

Funcin de conversin. Se llama con argumento de los cuatro canales por convertir. Los o o 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 conversin o ResultadoADC[1]=ADC12MEM1; //se almacenan en variables ResultadoADC[2]=ADC12MEM2; // globales ResultadoADC[3]=ADC12MEM3; }

Seminario de Computadores I, 2004

25

Anda mungkin juga menyukai