Curso sobre Microcontroladores Familia HC9S08 de Freescale

Curso sobre Microcontroladores Familia HC9S08 de Freescale Por Ing. Daniel Di Lella – EduDevices – www.edudevices.com.ar e-mail: [email protected].

13 downloads 104 Views 242KB Size

Recommend Stories


Curso de Microcontroladores. Familia HC908 Flash Freescale. Parte II ING DANIEL DI LELLA
s e r o d a l o r t n o c o r c i M e d . . o . s h r s a l Cu F 8 0 9 C H a i l i Fam II Parte Curso de Microcontroladores Familia HC908 Flash Frees

Curso de Microcontroladores. Familia HC908 Flash
s e r o d a l o r t n o c o r c i M e d . . o . s h r s a l Cu F 8 0 9 C H a i l i Fam II Parte Curso de Microcontroladores Familia HC908 Flash Motor

Analog To Digital Converter. Module (ADC) Curso de Microcontroladores Familia HC908 Flash de Freescale Parte II ING
Analog To Digital Converter Module (ADC) Curso de Microcontroladores Familia HC908 Flash de Freescale Parte II ING. DANIEL DI LELLA Analog to Di

MICROCONTROLADORES MCS-51
DEPARTAMENTO DE ELECTRONICA Y TELECOMUNICACIONES ESCUELA UNIVERSITARIA DE INGENIERIA TECNICA INDUSTRIAL E INGENIERIA TECNICA EN TOPOGRAFIA VITORIA-GAS

Story Transcript

Curso sobre Microcontroladores Familia HC9S08 de Freescale

Por Ing. Daniel Di Lella – EduDevices – www.edudevices.com.ar e-mail: [email protected] Responsable Area Educación – ELKO / ARROW – www.elkonet.com e-mail: [email protected]

Capítulo 5. Entrega Nº 11

ADC10 - A/D Converter – Conversor Analógico / Digital. Como se había visto en la entrega número 10, el módulo conversor A/D de la familia HC9S08 si bien es muy similar al de la familia HC908 posee mayor cantidad de registros especiales que le dan una mayor funcionalidad al mismo. A continuación detallaremos cada uno de ellos: Registro de Estado y Control 2 (ADCSC2).

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

ADACT: El “flag” de Conversión Activa es un bit de solo lectura que indica cuando una conversión está en progreso. Este flag se pone a “1” cada vez que se inicia una conversión y toma el valor “0” cuando la conversión se ha completado o la misma se ha abortado. ADTRG: Este bit sirve para seleccionar el modo de disparo de una conversión, pudiéndose elegir entre disparo por software o por hardware para iniciar una conversión. Cuando se elige disparo por software (ADTRG = 0), una conversión A/D comienza cuando se escribe en el registro ADCSC1. Si se elige disparo por hardware (ADTRG = 1), una conversión A/D comienza cuando el contador de la Interrupción de Tiempo Real (RTI) efectúa un “overflow”. El período del RTI es configurable vía la frecuencia de entrada del reloj y los bits de prescaler. De esta forma, el usuario puede realizar conversiones A/D a intervalos variables de tiempo dependiendo de la configuración del RTI. El uso del disparo por hardware permite que el usuario pueda iniciar una conversión en los modos RUN, WAIT o STOP3. Estos dos últimos son fundamentales para mantener al MCU en un muy bajo consumo y solo despertarlo a intervalos regulares para realizar la conversión y luego volver al sistema al bajo consumo. ACFE: El bit de habilitación de la Función de Comparación A/D, permite habilitar la función de comparación automática del módulo ADC. La función de comparación toma el resultado de la conversión y lo suma al “complemento a dos” del valor almacenado en los registros ADCCVH y ADCCVL. Esta función, en la realidad, efectúa la diferencia entre el resultado de la conversión y el valor a comparar. Si se cumple la condición de la comparación, el bit COCO se fuerza a “1” y se genera una interrupción si la misma había sido habilitada previamente (AIEN = 1). La diferencia entre el resultado de la conversión y el valor a comparar es almacenada en los registros ADCRH y ADCRL. ACFGT: El bit de Función de Comparación Mayor Que (Compare Funtion Greater Than) define las condiciones de la comparación. Si el bit ACFGT = 0, entonces la función de comparación solo se activa si el resultado de la conversión es MENOR que el valor almacenado en los registros ADCCVH y ADCCVL. Si el bit ACFGT = 1, entonces la función de comparación solo se activa si el resultado de la conversión es MAYOR o IGUAL que el valor almacenado en los registros ADCCVH y ADCCVL. Esta función es ideal para “monitorear” un valor de tensión en modo “background” y solamente interrumpir al MCU cuando se alcanza un valor crítico.

Los BITs 3 y 2 del ADCSC2 no son usados y siempres se leen como “0”. Los BITs 1 y 0 del ADCSC2 son bits RESERVADOS y siempre deben escribirse con “0”. Registros de Resultado de Datos del ADC (ADC Data Result Registers) (ADCRH / ADCRL).

ADCRH – Data Result High Register.

ADCRL – Data Result Low Register.

La familia HC9S08 posee un ADC de 10 Bits de resolución que puede ser configurado para entregar un resultado de 8 Bits o de 10 Bits. El registro ADCRH contiene los dos bit de mayor peso (superiores) de la conversión a 10 Bits. Cuando se configura al módulo ADC para una conversión a 8 Bits, los Bits ADR8 y ADR9 son iguales a “0”. El registro ADCRL contiene los 8 Bits de menor peso (inferiores) de una conversión a 10 Bits y todos los 8 Bits de una conversión, precisamente de 8 Bits. Los registros ADCRH y ADCRL se actualizan luego de cada conversión con la excepción cuando se habilita la función “Compare” y no se alcanza la condición de la comparación.

En el modo de 10 Bits, se implementa un mecanismo de bloqueo que evita sobre – escritura en los registros de datos, de esta forma, al leer primero el registro ADCRH el resultado de las subsecuentes conversiones no se actualiza hasta que no sea leído en registro ADCRL. Si el registro ADCRL no es leído antes de que se complete la próxima conversión, este nuevo dato, producto de la nueva conversión, se pierde. Este mecanismo se denomina “interlocking” y deja de funcionar en el modo de conversión a 8 Bits, ya que no hay interlocking con el registro ADCRH. Si la función “Compare” está habilitada y la condición de comparación es verdadera, el valor de la conversión se suma al “complemento a 2” del valor de comparación almacenado en los registros ADCCVH / ADCCVL y luego es almacenado en los registros de Resultado ADCRH y ADCRL. El valor obtenido de esta forma es la diferencia efectiva entre el resultado de la conversión y el valor a comparar. Registros de Valores de Comparación del ADC (ADC Compare Value Registers) (ADCCVH / ADCCVL) Estos registros mantienen el valor a comparar de 10 Bits para la función “Compare”. El registro ADCCVH mantiene los 2 bits más pesados (superiores) del valor a comparar, mientras que el registro ADCCVL los 8 más bajos (inferiores) del mismo valor, la totalidad de los 8 bits cuando el valor a comparar en de 8 bits. El registro ADCCVH no se usa durante el modo de comparación a 8 Bits.

ADCCVH – Compare Value High Register.

ADCCVL – Compare Value Low Register.

Registro de Configuración del ADC (ADC Configuration Register) (ADCCFG).

El registro ADCCFG se utiliza para seleccionar las configuraciones de velocidad, de consumo, la fuente de reloj, el divisor del reloj y el tiempo de muestreo del módulo ADC. ADLPC: Este bit de configuración de Bajo consumo (Low Power Control) permite controlar la velocidad y el consumo del ADC. Cuando el bit ADLPC = 0, el ADC se configura para correr al mode de alta velocidad. Cuando el bit ADLPC = 1, el ADC se configura para correr en modo bajo consumo. La configuración de bajo consumo reduce la velocidad máxima del reloj en relación de mantener bajo el consumo de energía. En el modo de alta velocidad, la frecuencia máxima del reloj es de 8 Mhz, mientras que en el modo bajo consumo, la frecuencia máxima se reduce a 4 Mhz. ADIV: Los bits de selección del divisor del reloj, permiten la selección del valor del divisor que el ADC utilizará como oscilador interno (ADCK). En la siguiente tabla se muestran los valores del divisor en función de los valores de los bits de selección.

ADLSMP: El bit ADLSMP (Long Sample Time Configuration) de configuración de tiempo de muestreo largo, permite ajustar el tiempo de muestreo. Si el bit ADLSMP = 1, el ADC se configura para tiempos de muestreo largos, lo que otorga una mayor precisión en la conversión. Si el bit ADLSMP = 0, el ADC se configura para tiempos de muestreo cortos, lo que le confiere una alta velocidad de conversión. MODE: Estos bits de selección de MODO, permiten elegir entre en modo de operación a 8 bits o 10 bits del ADC. Configurando los bits MODE a “00” se selecciona el modo de conversión a 8 Bits. Configurando los mismos bits a “10” se selecciona el modo de conversión a 10 Bits. Todas las otras combinaciones de bits están reservadas y no pueden ser utilizadas.

ADICLK: Los bits de selección del reloj de entrada, definen la fuente del reloj de entrada a utilizar para generar el reloj interno del módulo ADC. En el módulo ADC de la familia HC9S08, se pueden elegir 4 diferentes fuentes de reloj (clocks). -

ALTCLK: Reloj Externo. ADACK: Reloj Interno Asincrónico Propio. Bus Clock: La frecuencia de Bus (FBUS) como referencia. Bus Clock / 2: FBUS / 2 como referencia.

Registros de Control de los Pines del ADC (ADC Pin Control Registers) (APCTL1 / APCTL2 / APCTL3).

APCTL1 – ADC Pin Control Registers

APCTL2 – ADC Pin Control Registers.

APCTL3 – ADC Pin Control Registers. Seleccionar un canal de entrada analógico para efectuar la conversión A/D en el registro ADCSC1 utilizando los bits de selección de canal ADCH no es suficiente para asegurar que se podrá convertir la tensión presente en el pin del puerto asociado con el canal A/D a utilizar. Se necesita efectuar 2 tareas para asegurar ello: 1) Deshabilitar el control del MCU del puerto I/O que está siendo utilizado como entrada analógica. 2) Configurar dicho pin para ser utilizado como canal A/D del ADC. Para efectuar estas tareas, solo hay que escribir un “1” en el bit correspondiente al pin a utilizar en el registro de control del pin apropiado. Esta acción asegura que el pin elegido solo sea utilizado como entrada analógica por el módulo ADC independientemente de la configuración del puerto como I/O.

Calculando el Tiempo de Conversión. El tiempo total de conversión del módulo ADC depende de las configuraciones de ADLSMP, MODE y la frecuencia de referencia del ADC (ADCK). Una vez que se ha elegido la fuente de entrada de reloj, se puede calcular la cantidad de tiempo que se toma una conversión simple. Para ello se determina la cantidad de ciclos de reloj en completar la conversión y se dividen estos por la frecuencia de reloj empleada. El proceso de conversión comienza después de escribir el registro ADCSC1, un evento de disparo por hardware (RTI Timeout) o la transferencia del resultado a los registros de datos cuando se ha elegido el mode de conversión continuo. El número de ciclos empleados para cada modalidad y configuración se puede obtener de una tabla del manual técnico del MCU HC9S08 elegido. Por ejemplo, en la siguiente figura se muestra la tabla perteneciente a la familia MC9S08AWxx.

Tiempos de Conversión del módulo ADC en el MC9S08AWxx. Por ejemplo, para una conversión simple a 10 Bits un ADCK = 8 Mhz, ADIV=1, ADLSMP = 0 y FBUS = 8 Mhz, el tiempo de conversión máximo será de 3,5 uS, un tiempo de conversión muy bueno para un MCU de 8 bits.

Mejoras en la precisión de la conversión. La forma más efectiva de mejorar la precisión de una conversión A/D es reducir el ruido que se introduce en el sub-sistema del ADC, por medio del uso de un “layout” (diseño del PCB) muy cuidado, donde se pondrá especial atención a la separación de las señales utilizadas por el módulo ADC de las señales de ruido del sistema. El lector puede consultar numerosas notas de aplicaciones sobre el tema como la AN1705 de Freescale o los boletines técnicos “Buceando” (BC908_4 al BC908_8) contenidos en el CD ROM del EDUKIT08 o bien el sitio web de EduDevices.com.ar (www.edudevices.com.ar ) En ellos encontrará técnicas y recomendaciones de como tratar el ruido en sistemas con microcontroladores, no solo para el A/D funcione correctamente, sino para que el proyecto sea confiable y estable frente a las perturbaciones por ruido. Además de diseñar el sistema cuidando de utilizar “las reglas del buen arte”, en el diseño de la placa del sistema con MCU, el lector deberá tener en cuenta alguno de los siguientes consejos: 1) Después de encender el módulo ADC, se deben efectuar algunos ciclos de demora antes de comenzar con la conversión para estabilizar la alimentación del mismo. 2) Verificar que la impedancia de la señal analógica a medir no sea muy alta (por lo general, no mayor a 20K ohms). Los errorers causados por las corrientes de drenaje del módulo ADC, producen errores en la conversión, que aumentan, cuando la impedancia de la señal de entrada aumenta. 3) El muestreo de una señal por mayor tiempo mejora la precisión en la conversión, por lo que, si ello es posible, debe elegirse el tiempo de muestreo más grande por medio de la configuración del bit ADLSMP y la configuración del ADCK. 4) Si el proyecto lo permite, efectuar múltiples conversiones de una señal y luego promediarlas, mejora la relación señal / ruido y permite obtener conversiones de valores más estables en el tiempo.

Continuará....... Nota de Redacción: El lector puede descargar este capítulo y capítulos anteriores del curso desde la sección “Artículos” (Curso_HC9S08) en el sitio web de EduDevices (www.edudevices.com.ar )

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.