Inicio Artículos La potencia de los periféricos autónomos: lograr un bajo consumo en tiempo...

La potencia de los periféricos autónomos: lograr un bajo consumo en tiempo real

Los periféricos independientes del núcleo (Core Independent Peripherals, CIP) son periféricos autónomos, interconectados e inteligentes. Gracias a los CIP, el microcontrolador ya no necesita interactuar con la CPU para ejecutar las tareas, lo cual ofrece diversas ventajas a la aplicación. Primero, no se necesita la CPU para la comunicación entre periféricos; el núcleo puede permanecer en reposo y no hay que interrumpir el flujo de software. Naturalmente, si el núcleo está en reposo y no se necesita software, el consumo de corriente de la aplicación será más bajo. La CPU es la parte del microcontrolador que consume más corriente; por tanto, el uso de CIP reduce el consumo de energía. En segundo lugar, las CIP no provocan interrupciones y ello permite unas comunicaciones más rápidas en general. Si el núcleo de la CPU está ejecutando software y debe ser interrumpida por el periférico para realizar una acción determinada, necesita mucho tiempo.
La interrupción necesita tres ciclos de reloj + dos ciclos de reloj para el salto relativo y podría utilizar varios ciclos para el cambio de contexto con el fin de guardar los datos en los registros de la pila dependiendo de la aplicación. Los CIP permiten que la comunicación sea mucho más que si hay que interrumpir el núcleo. En tercer lugar, la utilización de CIP acorta el plazo de comercialización. Hay que escribir menos software ya que el propio hardware puede asumir la tarea. Esto reduce el riesgo de que se produzcan errores de software y exige menos validación del software. Por tanto, el tiempo de desarrollo del producto es más corto que si no se utilizan CIP. En los microcontroladores AVR®, todos los CIP están conectados mediante el Sistema de Eventos (Event System), en el cual un multiplexor conecta el generador de eventos y el usuario del evento. Existen eventos síncronos y asíncronos. Los eventos asíncronos necesitan menos de un ciclo de reloj y los eventos síncronos necesitan dos ciclos de reloj. Se pueden conectar numerosos periféricos al sistema de eventos para que sean CIP: temporizadores, contador en tiempo real (Real Time Counter, RTC), temporizador de interrupciones periódicas (Periodic Interrupt Timer, PIT), lógica configurable a medida (Custom Configurable Logic, CCL), comparadores analógicos (Analog Comparator, AC), convertidores A/D, UART (Universal Synchronous/ Asynchronous Receiver/Transmitter) y las E/S de aplicación general (General Purpose Input/Outputs, GPIO).
Utilización de los CIP
Los CIP deben configurarse una sola vez antes de su uso. La CPU ejecuta la instrucción para realizar la inicialización correcta del Sistema de Eventos y de los periféricos necesarios.
Retardo/eliminación de rebote
Algunas aplicaciones siguen utilizando actualmente un botón como entrada y para cada botón se necesita una lógica de eliminación de rebote o un programa de software, obteniendo así una señal estable. Para el microcontrolador AVR resulta sencillo eliminar el rebote por medio de software y se puede llevar a cabo mediante retardos y/o lógica en el programa de software. El software no es complicado, pero emplea recursos de la CPU. Se puede comprobar si el botón ha sido o no presionado mediante sondeo o con una interrupción procedente del controlador de GPIO. En ambos casos hacen falta tiempo y la CPU para completar la eliminación de rebote.
Eliminación de rebote/retardo con el filtro de la CCL
Con los CIP se puede completar la eliminación de rebote sin recurrir a la CPU: lo único que hace falta es la lógica configurable a medida (Custom Configurable Logic, CCL). La GPIO a la que está conectada el botón se configura como generador asíncrono de eventos. La CCL será el usuario del evento. La señal procedente de la patilla de GPIO a la entrada de la CCL se transmitirá sin retardo. La tabla de verdad de la CCL está configurada de manera que la salida es igual a la entrada. La salida de la tabla de verdad está enrutada hacia el filtro (ver Figura 1). Es posible eliminar los impulsos aleatorios (glitches) de la señal de entrada y se puede establecer el retardo del filtro en dos a cinco ciclos de reloj (reloj del periférico o un reloj alternativo) para la señal de salida. Si se utiliza un reloj lento de 32 kHz se puede obtener un retardo de 1,5 ms. También es posible prolongar el tiempo de retardo con un reloj diferente o con un temporizador.
Retardo con un temporizador
 Por ejemplo, se configura el Temporizador/ Contador B (TCB) en modo de disparo único (Single-Shot). Si al temporizador llega una señal de evento empieza a contar hasta que llega a su valor máximo y lo detiene. La salida del TCB está conectada a la CCL. En la CCL se puede efectuar la combinación deseada de la señal de retardo, lo cual permite obtener un retardo muy flexible. Cada nuevo evento que llega al TCB hace que empiece a contar de nuevo.
Generación de tiempo muerto
El tiempo muerto se utiliza en aplicaciones con interruptores en serie entre alimentación y masa. Si ambas se activan al mismo tiempo se produce un cortocircuito. Un ejemplo de ello es la configuración de medio puente utilizada en el control de motores. Dependiendo de la aplicación, el tiempo muerto tendrá lugar entre conmutaciones o entre impulsos PWM (Pulse-Width Modulation). El tiempo muerto entre impulsos PWM es necesario, por ejemplo, en el control sinusoidal y entre conmutaciones para motores CC sin escobillas de 1 polo. El tiempo muerto entre impulsos PWM se puede generar mediante el temporizador TCD (Time Code Display). Para generar tiempo muerto entre conmutaciones se necesitan dos temporizadores, la CCL y el comparador analógico. Las Figuras 2 y 3 representan la lógica de la tabla de verdad de la CCL. El temporizador TCA genera la señal PWM que sirve como base para el control del motor. El comparador analógico se conecta externamente al sensor Hall del motor e internamente por medio del sistema de eventos al temporizador TCB. El temporizador TCB genera la señal de tiempo muerto si obtiene una señal del comparador analógico. La CCL combina la señal de TCA (PWM), TCB (tiempo muerto) y el comparador analógico. Las señales de entrada se pueden seleccionar directamente en la configuración de la CCL y no es preciso utilizar el Sistema de Eventos. Existen conexiones físicas entre estos módulos. La CCL genera a continuación dos PWM (ver Figura 4) para controlar los interruptores del motor, el cual funciona sin que intervenga la CPU. Para más información técnica consulte la nota de aplicación sobre AVR AVR42778.
Señal PWM de apagado automático
Muchas aplicaciones necesitan supervisar el consumo de corriente para que éste no supere un nivel máximo. Esto se puede realizar fácilmente con el comparador analógico, el cual mide la tensión (corriente en la resistencia) por medio de un registro de derivación. Si supera un umbral previamente configurado, la señal PWM se debería detener de inmediato. Los dos ejemplos mostrados a continuación utilizan CIP. La señal de salida de PWM se puede detener cuando se detecta una sobrecorriente sin la intervención de la CPU.
Ejemplo de iluminación LED con TCA y CCL
El Temporizador/Contador A0 genera la PWM para el LED. El comparador analógico se utiliza para detectar la sobrecorriente y la CCL combina estas señales, y en caso de detectarse la PWM se detiene automáticamente. El comparador analógico y TCA0 están conectados mediante el Sistema de Eventos a la CCL. La señal de salida del comparador analógico y la PWM se configuran la tabla de verdad de la CCL (ver Figura 5). La señal PWM se introduce si se forma la señal del evento de manera que el comparador analógico es cero. Si se detecta una sobrecorriente, la señal de evento del comparador analógico es uno y la salida es cero mientras exista una sobrecorriente.
Ejemplo de control de un motor con el TCD
Un motor CC sin escobillas se controla mediante el temporizador TCD, que genera las señales PWM en dos canales + dos canales complementarios para controlar los transistores MOSFET en una configuración de medio puente. El comparador analógico se utiliza para detector la sobrecorriente en motor con una derivación entre el motor y masa. El comparador analógico se conecta mediante el Sistema de Eventos al Temporizador/Contador D0 (TCD). Entre las funciones del TCD se encuentran la gestión de fallos. Si se supera el umbral del comparador analógico (sobrecorriente detectada) se señaliza un evento al TCD y las PWM se detienen automáticamente.
Medida del tiempo de vuelo
La medida del tiempo de vuelo se utiliza para medir la distancia que recorre una señal. La medida empieza cuando señal sale del transceptor y se detiene cuando es detectada por el receptor. Con el tiempo y los m/s conocidos de la señal se puede calcular la distancia. En el ejemplo mostrado a continuación se mide la distancia con una señal de ultrasonidos. Para ello necesitamos los CIP TCA0, TCB0, TCS0, comparador analógico y 2x CCL, y luego calcular el tiempo de vuelo sin recurrir a la CPU. La Figura 6 muestra cómo la Tabla de consulta 1 (LUT1) genera la señal transmitida. TCA Out genera la señal PWM y TCD Out B es la máscara de transmisión. La máscara de transmisión invertida y la PWM tienen lógica AND combinada y a continuación generan la señal transmitida, que se muestra en la tabla de verdad de LUT1. LUT 0 genera la señal reflejada. AC Out indica la actividad en la línea de recepción y TCD Out A es la máscara de recepción. La máscara de recepción invertida y la “línea de recepción” tienen lógica AND y generan la señal reflejada, que se muestra en la tabla de verdad de LUT0.
El circuito biestable SR se reinicializa con la primera señal transmitida e inicia el contador en TCD. Con la señal procedente de la señal reflejada, y cuando se activa el circuito biestable SR, el contador de TCD se detiene. El tiempo de vuelo se almacena ahora en el valor del contador de TCD sin recurrir a la CPU, que solo se necesita para calcular la distancia cuando el tiempo de vuelo se multiplica por velocidad de la señal. Para más información técnica sobre la medida de distancia por ultrasonidos, vea la nota de aplicación sobre AVR AVR42779.
Conclusión
Las nuevas series de microcontroladores ATiny1617/ 1616/1614/817/816/814/417 de Microchip añaden innovadores periféricos independientes del núcleo (Core Independent Peripherals, CIP) a la familia de microcontroladores tinyAVR®. Gracias a estos CIP, una aplicación puede reaccionar en tiempo real, con menos carga de software y un menor consumo de corriente que sin CIP. Los ejemplos mostrados demuestran que los CIP son fáciles de configurar y que su funcionamiento en tiempo real es más rápido y consume menos energía que las soluciones basadas en software. Incluso con microcontroladores de prestaciones mucho más elevadas, este nivel de prestaciones en tiempo real no siempre se puede alcanzar y, si es posible, el consumo sería varias veces superior.