Está en la página 1de 9

Curso sobre Microcontroladores

Familia HC9S08 de Freescale

Por Ing. Daniel Di Lella EduDevices www.edudevices.com.ar


e-mail: info@edudevices.com.ar
Responsable Area Educacin ELKO / ARROW www.elkonet.com
e-mail: ddilella@elkonet.com

Captulo 5.
Entrega N 10

ADC10 - A/D Converter Conversor Analgico / Digital.


El avance de la tecnologa ha hecho posible que hoy en da, no sea extrao contar con
un mdulo conversor Analgico / Digital en un MCU moderno. Tal es la necesidad de
las aplicaciones del mercado actual, que ya no basta con que el mdulo conversor
A/D sea un dispositivo por defecto en un microcontrolador, sino que adems se le
pide cada vez ms resolucin, bajo consumo, flexibilidad de operacin y relativa
rapidez de funcionamiento. El mdulo conversor A/D de la familia HC9S08 es el
resultado de la mejora continua de los mdulos conversores A/D utilizados en otras
familias como la HC705, HC908, HC11.
En este captulo se mostrar como configurar el mdulo ADC, identificar tcnicas para
maximizar la precisin de las conversiones A/D y escribir un programa para realizar
conversiones A/D. Tambin se vern ejemplos de la vida real con aplicaciones tpicas
donde el ADC puede ser utilizado.
Caractersticas del mdulo ADC10 tpico de la familia HC9S08.
La familia HC9S08 utiliza el mdulo ADC10 que es un conversor A/D de 10 bits de
resolucin el cual puede configurarse para obtener 8 bits o 10 bits de resolucin con
justificacin a la derecha en el resultado.

Todos los ADC de esta familia utilizan el mtodo de aproximaciones sucesivas


lineales.
Si el lector desea profundizar en al teora de funcionamiento de este tipo de conversores,
sugerimos consultar con el manual de referencia de la familia HC11
(MC68HC11RM.PDF) incluido en el CD ROM de la placa PLUGIN_AW o disponible
en el sitio web de Freescale Semiconductor (www.freescale.com).
Todos los mdulos ADC soportan los modos de conversin simple (Single Conversion
Mode) y modo de conversin continua (Continuous Conversion Mode). En el modo de
conversin simple, la conversin se completa entre la escritura del registro de estado y
control del mdulo ADCSC1 (ADC Status and Control Register 1).
En el modo de conversin continua, la entrada analgica se convierte continuamente y
el resultado se escribe en los registros de datos del mdulo (ADCRH y ADCRL).
En este modo, el dato obtenido de la conversin previa es sobre escrito
independientemente si el dato ha sido ledo o no.
El ADC ofrece dos maneras diferentes de monitorear el estado de conversin completa.
Dependiendo del modo de conversin se puede usar software para hacer un polling
del valor del Flag (verificar por soft que el bit se encuentre encendido) COCO
(Complete Conversion) o se puede configurar que el ADC genere un pedido de
interrupcin cuando la conversin se haya completado.
A diferencia de otros mdulos ADC, en la familia HC9S08 el ADC10 es capaz de
funcionar en los estados de bajo consumo WAIT y STOP3, mejorando la
perfomance de las mediciones al reducir el ruido generado por el MCU al reducir la
actividad de este. Cuando se efectuan conversiones con resoluciones de 10 o ms Bit se
hace muy importante mantener estable y con el menor ruido posible la alimentacin del
mdulo A/D para evitar el bailoteo de los bits menos significativos en el resultado de
la conversin, por lo que desactivar al CPU, principal generador de ruidos es
fundamental para obtener lecturas estables cuando se trabaja con mucha resolucin.
Una caracterstica nica del mdulo conversor de esta familia es la capacidad de
generar un disparo por hardware del inicio de la conversin sin la necesidad de la
intervencin directa del programa del usuario, lo que otorga mayor independencia al
mdulo.
Otra de las caractersticas nicas de este mdulo es la funcin de Comparacin
Automtica con interrupcin. Esto permite que el usuario pueda comparar si el
resultado de una conversin es mayor, menor, o igual a un valor programado. Si la
comparacin es exitosa, la diferencia entre el resultado de la conversin y el valor pre
programado a comparar es almacenado en los registros de datos del mdulo.
El mdulo ADC posee un prescaler de la entrada de reloj que permite optimizar las
conversiones a las diferentes fuentes de reloj disponibles (cristales, osciladores internos,
FLL, etc.).

Lneas Externas del ADC.


Se tomar como ejemplo la configuracin del mdulo ADC del MC9S08QG8 que es un
dispositivo de 16 pines en encapsulado PDIP. La siguiente figura nos muestra la
asignacin de pines del dispositivo elegido.

Lneas del ADC


compartidas con los
Ports A y B adems
de otras funciones.

Este MCU incluye un mdulo ADC de 8 canales de entrada, mientras que otros
dispositivos pueden contener ms o menos canales que el QG8. Por ejemplo, el
MC9S08AW60CFUE incluido en la placa de personalizacin PLUGIN_AW, contiene
un mdulo ADC de 16 canales. Sugerimos al lector consultar el manual de datos del
dispositivo HC9S08 elegido para obtener mayor informacin acerca del ADC
disponible.
Como se puede observar en la figura, y como es comn en la mayora de los MCUs
modernos, las lneas externas del ADC estn compartidas con puertos I/O de
propsitos generales y muchas veces con lneas de otros mdulos y funciones.
En el QG8 las lneas ADP0 a ADP7 estn compartidas con los puertos I/O del puerto A
(PTA0 a PTA3) y del puerto B (PTB0 a PTB3).
Al igual que sucede en los ADC de la familia HC908, el usuario puede seleccionar la
lnea externa del canal elegido configurando los bits de seleccin del canal analgico de
entrada en el registro de estado y control ADCSC1 (ADCH4 a ADCH0).
Las lneas no utilizadas quedarn bajo el control lgico de los puertos de I/O y del
usuario.

Configuracin Elctrica del mdulo.


La configuracin elctrica del mdulo ADC debe estar en concordancia con las seales
analgicas a medir. Este mdulo posee lneas separadas de alimentacin como
VDDAD y VSSAD que permiten, cuando ello es posible, conectar el mdulo a
distintas fuentes de alimentacin (las del propio MCU u otras). Para el QG8, al ser un
dispositivo de muy pocos pines fsicos, estas lneas estn conectadas internamente a
VDD y VSS respectivamente.
Adicionalmente a las lneas de alimentacin analgica, el mdulo ADC posee
conexiones para dos lneas de referencia de tensin.
La lnea de referencia alta es VREFH y la baja es VREFL. En el QG8, ambas
lneas estn conectadas en forma interna a VDD y a VSS respectivamente, lo que hace
muy fcil la configuracin elctrica de ADC de este dispositivo, como se puede
observar en la siguiente figura.

Algunos dispositivos de la familia HC9S08 (sobre todo, los de muchos pines fsicos)
poseen lneas dedicadas para VDDAD, VSSAD, VREFH y VREFL.
Por ejemplo, como en el MC9S08AW60CFUE contenido en la placa PLUGIN_AW.

Conectar VDDAD a la misma


tensin que VDD.
Usar filtro externo prximo al pin.
Rutear VDDAD con cuidado.
Conectar VSSAD al mismo
potencial que VSS.

Separar VREFH y VREFL.


Conectar VREFH a VDDAD.
Conectar VREFL a VSSAD.

Conexiones del mdulo ADC para un MC9S08xxx, como el MC9S08AW60CFUE.

Conversin de la tensin de entrada VADVIN.


Una vez que el mdulo se ha configurado segn lo que se ha explicado anteriormente, el
mismo se encuentra listo para efectuar la conversin del valor analgico de entrada al
mdulo VADVIN a un valor digital. La seal de tensin de entrada es leda desde el
canal de entrada seleccionado en el registro de estado y control ADCSC1.
El resultado de la conversin depende del valor de VADVIN.
Tanto las lneas VREFH como VDDAD estn conectadas a VDD, mientras VREFL y
VSSAD estn conectadas a VSS, por lo que la seal de entrada al mdulo VADVIN
no debe exceder los valores de alimentacin del mismo. Si los valores de entrada
estn entre VREFH y VREFL, el ADC convierte la tensin de entrada usando una
conversin lineal. Para una resolucin de10 bits, los valores estarn comprendidos en
el rango de $0000 a $03FF que representan los 1024 resultados posibles.
Cuando VADVIN es igual o mayor a VREFH el resultado de la conversin ser
$03FF, mientras que si VADVIN es menor o igual a VREFL el resultado de la
conversin ser $0000.

Registros del Mdulo ADC.


ADC status and control register 1 (ADCSC1)
ADC status and control register 2 (ADCSC2)
ADC data result registers (ADCRH, ADCRL)
ADC compare value registers (ADCCVH, ADCCVL)
ADC configuration register (ADCCFG)
ADC pin control registers (APCTL1) (APCTL2, APCTL3)
Como puede observar el lector, en el mdulo ADC10 de la familia HC9S08 cuenta
con ms cantidad de registros para configurar su funcionamiento que en la familia
HC908.
Esto se debe a que en este mdulo se disponen de ms prestaciones que en el de la
familia HC908. Aqu veremos los pertenecientes al QG8, sugerimos al lector consultar
en el manual de datos del MCU HC9S08 elegido para conocer las particularidades que
pudieran existir.
Independientemente del HC9S08 utilizado, los principios aqu descriptos son vlidos
para el control y monitoreo de las operaciones del ADC en cualquier dispositivo.
Utilizando el Registro 1 de Estado y Control (ADCSC1) el usuario puede habilitar /
deshabilitar el mdulo, configurar el canal de entrada analgico, el modo de conversin
y monitorear el estado del bit COCO indicador de conversin completa.
Con el Registro 2 de Estado y Control (ADCSC2) el usuario puede monitorear el
progreso de la conversin, seleccionar el disparo de la conversin, y controlar la funcin
compare (comparacin) del ADC.

Los Registros de Datos (ADCRHy ADCRL) contendrn el resultado de la conversin


del valor analgico de entrada del canal elegido.
Los Registros de Comparacin (ADCCVH y ADCCVL) contendrn el valor a
comparar (10 / 8 Bits) con el valor de la conversin cuando se habilite la funcin
Atomtic Compare.
El Registro de Configuracin (ADCCFG) sirve para seleccionar la velocidad y la
configuracin de energa, la fuente de reloj, el divisor del reloj, y el tiempo de muestreo
del mdulo ADC.
Finalmente, los registros de Control del pin (APCTL1, APCTL2, APCTL3)
constituyen una de las diferencias de este mdulo con el de la familia HC908, ya que
permite habilitar o deshabilitar pin a pin cada uno de los pines del MCU que son
compartidos por los puertos I/O como canales de entrada para la funcin A/D. Por
ejemplo, para el QG8 solo el registro APCTL1 es necesario, ya que este dispone de 8
canales A/D, mientras que en el MC9S08AW60CFUE se utilizan los registros
APCTL1 y APCTL2 pues este MCU posee 16 canales A/D.

Diagrama en Bloques del mdulo ADC para el MC9S08AW60CFUE.

Registro de Estado y Control 1 (ADCSC1).

Veamos ahora bit a bit las funciones del registro de Estado y Control 1.

COCO:
El Flag de conversin completa (Conversion Complete, COCO) es un bit de solo lectura
que se pone a 1 cada vez que una conversin se completa. Este bit se limpia cuando se
escribe el registro ADCSC1.
AIEN:
El bit AIEN (A/D Interrupt Enable) cuando es forzado a 1 habilita la generacin de
una interrupcin cuando una conversin se completa. Al mismo tiempo, los registros de
datos contienen el valor de la conversin. La seal de interrupcin permanecer
pendiente mientras el bit COCO est en 1.
ADCO:
Con el bit ADCO (A/D Continuous Conversion) permite seleccionar el modo de trabajo
del mdulo conversor. Cuando se pone a 1, se configura al mdulo para trabajar en
modo continuo. Cuando este bit est en 0, se configura al mdulo para trabajar en
modo simple conversin.
ADCH (ADCH0 / ADCH4):
Los restantes bits del registro ADCSC1 se utilizan para seleccionar el nmero de canal
de entrada A/D activo. Si todos los bits de seleccin son forzados a 1, se consigue
apagar el mdulo para ahorrar energa, sin embargo, cada vez que se efecta una
conversin, el mdulo se coloca en modo de bajo consumo en forma automtica cada
vez que se completa una conversin.
No todos los canales posibles de ser seleccionados estn implementados en los distintos
dispositivos HC9S08, por ejemplo, en el QG8, solo 8 canales estn implementados en
forma fsica, mientras que en el MC9S08AW60CFUE se disponen de 16 canales A/D.

Como se puede observar en las distintas tablas de seleccin, algunas posiciones


permiten acceder a funciones especiales del mdulo ADC.
Por ejemplo, en el dispositivo QG8, seleccionando el canal AD27 le permite al usuario
monitorear la referencia interna (Bandgap) que posee el mdulo ADC. Esta
referencia interna de tensin es muy estable con la temperatura y en un grado
independiente de la alimentacin del MCU. Esta referencia de tensin fija, le permite al
usuario comparar el resultado de la conversin con el resultado de la medicin de la
tensin de alimentacin para determinar el estado de la misma. Esta caracterstica
puede ser utilizada para monitorear la vida til de la batera de una aplicacin porttil.

Tabla de Asignacin de canales del ADC en el MC9S08AW60CFUE.

Tabla de Asignacin de canales del ADC en el MC9S08QG8.

Continuar.......
Nota de Redaccin: El lector puede descargar este captulo y captulos anteriores del
curso desde la seccin Artculos (Curso_HC9S08) en el sitio web de EduDevices
(www.edudevices.com.ar )