You are on page 1of 16
7. Implementacidn de los temporizadores/contadores: ATMegaClassic 7.1. Introducci6n El archivo ATMegaClassic.java encapsula parte de la funcionalidad comin que comparten los micros de la familia ATMega del fabricante Atmel, En concreto, implementa los diferentes tipos de temporizadores/contadores que se soportan os dispositivos. Basados en una sefial de sincronismo (bien sea la propia del sistema 0 una externa), estos médulos se utilizan para medir intervalos de tiempo. Son capaces de generar interrupciones para denotar que ha transcurrido cierto perfodo y, a la vez, generar pulsos que puedan ser empleados para controlar otros elementos internos o externos al microcontrolador. Dentro de la gama. ATMega, se definen dos tipos fundamentales sobre los que se apoyan los distintos temporizadores/contadores implementados en cada MCU: de 8 y de 16 bits. La tnica diferencia entre ellos es el rango de operacién que, evidentemente, es mayor para el caso de 16 bits que para el de 8 bits. Para el caso del ATMegal281 existen cuatro, dispositivos basados en los anteriores: Timer0 (8 bits), Timer] (16 bits), Timer? (8 bits) y Timer3 (16 bits). Aunque cada uno de ellos posee earacteristicas propias, comparten la mayorfa de la funcionalidad bésica: subsistemas integrados, modos de operacién, etc en En este capitulo se hace una presentacién de los cuatro tipos de temporiza- dores/contadores que se incluyen en el ATMega281 [16] (caracterfsticas, registros, modos de operacién, etc.) A continuacién, se indican las principales razones por las que ha habido que realizar modificaciones sobre ATMegaClassic.java para que se adapte al propdsito de este proyecto. Por iiltimo, se presenta el eédigo incluido en este archivo. En él se definen, en primer lugar, los dos tipos basicos y, posterior mente, se implementan cada uno de los temporizadores/contadores que incluye el ATMegal281 93 Capitulo 7___Implementacién de los temporizadores/contadores: ATMegaClassic 7.2. Descripcién de los temporizadores/contadores del ATMegal281 7.2.1. TimerO Este elemento es un médulo temporizador/contador de 8 bits de propésito general con dos unidades de comparacién independientes y soporte para modulacién de ancho de pulso. Permite la ejecucién de programas con precisién (gestién por eventos) y generacién de pulsos. Su funcionamiento esta determinado por una serie de registros que controlan todos sus pardmetros: modo de operacién, cuenta actual, interrupciones, ete. Entre ellos cabe destacar: + TCNTO: Registro de 8 bits que se utiliza para levar la cuenta del Timer0. El valor minimo desde donde comienza es 0x00 y el maximo donde se resetea es OxFF » OCROA y OCROB: Son dos registros de 8 bits cuyo contenido se compara continuamente con el valor del contador (TCNTO). Una coincidencia ent TCNTO y OCOA 0 OCOB se puede usar para provocar una interrupeién y generar asimismo una forma de onda en el pin de salida correspondiente (OCOA 0 OCOB) + TIMSKO: Registro de mascara de interrupcién, Gracias a él se pueden activar /desactivar las interrupciones asociadas al Timer0. Son tres las posibles interrupciones que se pueden generar y que estén asociadas al Timerd: TOIEO (Interrupcién de desbordamiento de cuenta del Timer0), OCIE0A (Interrupcién de unidad de comparacién A) y OCIEOB (Interrupcién de unidad de comparacién B) + TIFRO: Registro de banderas de interrupcién. Cualquier interrupcién que se produzca relacionada con el temporizador se refleja en él. Las tres posibles banderas son: TOVO (Bandera de desbordamiento de cuenta del Timer0), OCFOA (Bandera de unidad de comparacién A) y OCFOB (Bandera de unidad de comparacién B). TCCROA y TCCROB: Registro de control del Timer0. Controla difere: pardmetros de configuracién tales como el modo de operacién, el valor maximo de cuenta y la forma de onda generada en el pin de salida OCOA tes El Timer est formado por una serie de bloques funcionales bésicos que lo dotan de distintas capacidades. Dos de ellos son los més relevantes y se pasa a describirlos brevemente a continuacién: * Unidad de cuenta: Es la componente principal del Timer0. Dependiendo del modo de operacién seleccionado, el contador se incrementa, decrementa od contadores del ATMega1281 7.2 Descripeién de los temporizadores © reinicia con cada pulso de la sefial de reloj que lo controla, Esta. seiial de reloj puede ser externa o interna y se elige a través de tres bits (CS2:0) del registro TCCROB (registro de control B del Timer0). Si no se ninguna fuente de reloj, el temporizador se desactiva. La secuencia de conteo se determina mediante los bits WGM00, WGM01 y WGMO2 que se encuentran en los registros TCCROA y TCCROB, bits que seleccionan entre los distintos modos de operacién del contador. Las formas de onda generadas se presentan en los pines OCOA y OCOB. Cuando el temporizador se desborda, se genera la interrupeién TOVO, Su configuracién varia con el modo de operacién escogido y puede ser utilizada como interrupcién de la CPU, elecciona + Unidad de comparacién: En este médulo, el comparador de 8 bits esta continuamente comparando el valor del registro TCNTO con el contenido de los rogistyos de comparacién OCROA y OCROB. Cuando se igualan, el comparador indica que se ha producide dicha coincidencia mediante las banderas OCFOA y OCFOB. Si sus respectivas interrupciones estén activas, se generard una interrupcién, que le puede servir a la CPU para conocer que se ha producido esta circunstancia y actuar en consecuencia, Asimismo, la activacién de OCF0A u OCFOB sirve al generador de formas de onda para generar una sefial de salida conforme al modo de operacién establecido y el modo de comparacién de salida. El modo de operacién, que es la manera en la que se comporta el dispositivo, se controla mediante una serie de bits contenidos en los registros TCCROA y TCCROB. Hay tres modos fundamentales de operacién: * Modo normal (cuenta). En este modo, el contador siempre se esta incrementando. En el momento en que llega al maximo valor posible (0xFF), se reinicia a su valor mds bajo (0x00) y comienza de nuevo. En este punto, la bandera TOVO se activa indicando que el contador se ha reiniciado y se genera, si se encuentra habilitada, la interrupcién TOIE0. Como se ha comentado, el contador no detiene su cuenta en ningtin momento. * Modo comparacién. El Timer0 posee dos unidades de comparacién independientes, la A y la B, Son exactamente iguales, asi que lo que se va a explicar para una, sera equivalente para la otra. La explicacién se va a contrar en la primera, la unidad A. En este modo, el registro OCROA se emplea para manipular la resolucién del contador. Cuando la cuenta (contenido de TCNTO) es igual al valor indicado en OCROA, el contador se resetea situacién se indica mediante la bandera OCFOA y se generaré la interrupcién correspondiente (si esta permitida mediante el bit OCIEVA). Este modo de operacién es muy itil para generar pulsos de una frecuen determinada gracias a que es posible conmutar la salida de la unidad de comparacién

You might also like