7. Overview of Frameworks
7.2. JSCOOP
En el presente capitulo se presenta de manera ilustrativa a partir de un ejemplo específico el procedimiento a seguir para abordar el desarrollo de programas, tanto en assembler como en C, que manejarán los diferentes módulos y periféricos que ofrecen los microcontroladores de la familia HC08.
El ejemplo propuesto consiste en utilizar uno de los pines de conversión Análogo/Digital del microcontrolador para introducir una señal de voltaje que varíe entre 0 y 5 voltios y a partir de esta señal definir el ciclo útil de una señal PWM generada en el Modulo TIM (TIMER INTERFACE MODULE) con la intención de conectar un LED en este y observar la variación de la intensidad dependiendo de la posición del potenciómetro.
Para empezar con el desarrollo del programa, primero es necesario documentarse sobre el uso de los módulos que se vallan a implementar, en este caso el módulo de conversión análogo digital (ADC) y el módulo temporizador (TIM). Para tal efecto se acude a las hojas de datos del dispositivo a utilizar, en este caso el microcontrolador MC68HC908JK3, en capitulo anterior se presentan las características, configuraciones, registros que utiliza y descripción de funcionamiento del módulo ADC, Igualmente se encuentra la información relevante para el módulo TIM. A partir de esta información y de manera ilustrativa a continuación se extracta información esencial sobre el módulo ADC, si se desea complementar se debe acudir a la hoja de datos.
1.1. Características del ADC (MC68HC908JK3).
12 canales de conversión con entrada multiplexada.
Conversión por aproximaciones lineales.
Resolución de 8 bits.
Conversión única o continua.
Bandera o interrupción de conversión completada.
Reloj de conversión seleccionable. 1.2. Registros del ADC.
Los registros empleados por el ADC son los siguientes:
ADSCR: ADC status and control. Estado y control del ADC. ADR: ADC Data Register. Registro de datos del ADC.
ADICLK: ADC Imput clock Register. Registro de entrada de Reloj. Figura 44: Registros del ADC.
1.3. Descripción funcional del módulo.
El voltaje de entrada al conversor es digitalizado empleando el método de aproximaciones sucesivas, una vez la conversión es realizada, el dato se guarda
en un registro especial del conversor (ADR), a su vez puede o activar una bandera o generar una interrupción dependiendo del registro de configuración del ADC (ADCR).
Si el voltaje de entrada es igual que Vdd (alimentación del uC) la salida es $FF si la entrada es igual a Vss (tierra) la salida del ADC es $00, los voltajes que se encuentren entre Vdd y Vss son convertidos linealmente entre estos valores empleando una resolución de 8 bits. Es importante tener en cuenta que el voltaje de entrada al conversor nunca debe exceder el voltaje de alimentación del uC. Cuando la conversión A/D es continua, los valores digitales son guardados en el registro ADR continuamente sin importar si estos datos han sido leídos o no, después de cada conversión el Bit COCO es puesto en alto („1‟) además puede generar una interrupción en la CPU cuando este Bit se encuentra en un estado lógico bajo; la conversión continúa indefinidamente hasta que el Bit ADCO es puesto en un valor lógico bajo („0‟).
1.4. Registro de Estado y Control (ADSCR).
A continuación se describen la función de los diferentes Bits del registro ADSCR:
AIEN: ADC Interupt Enable Bit.
Cuando se encuentra en „alto‟ se activa la generación de interrupciones después de cada conversión, ésta señal de interrupción cambia su estado lógico a „0‟ cuando el registro de datos es leído o cuando se ha escrito en el registro ADSCR. Una señal de reset pone en estado bajo a este Bit.
1 = Interrupción del ADC habilitada. 0 = Interrupción del ADC deshabilitada.
COCO: Conversions Complete Bit.
Cuando el Bit AIEN se encuentra en „0‟ el Bit COCO es configurado como de solo lectura y es activado (puesto en „1‟) cada vez que se completa una conversión. Este Bit cambia su estado lógico a „0‟ cuando el registro de datos es leído o cuando se ha escrito en el registro ADSCR. Una señal de reset pone en estado bajo a este Bit. Cuando AIEN se encuentre en „1‟, El Bit COCO es de solo lectura y siempre se encuentra en „0‟.
1 = Se completó la conversión (AIEN = 0).
0 = No se ha completado la conversión (AIEN = 0).
Si se encuentra en „1‟ el ADC realizará conversión de datos de manera continua actualizando en ADR cada vez que sea realizada una conversión, en el caso de que se encuentre en „0‟, solo se realiza una conversión. Una señal de reset pone en estado bajo a este Bit.
1 = Conversión continua. 0 = Una sola conversión A/D.
ADCH [4:0]: ADC Chanel Select Bits.
Estos forman un campo de 5 Bits empleados para la selección de uno de los canales del conversor de acuerdo con la siguiente tabla:
Tabla 10: Bits de selección del ADC.
Nota 1: La conversión será nula si se seleccionan canales sin uso.
Nota 2: Los niveles de voltaje suministrados por nodos de referencia interna como se especifica en la tabla son empleados para verificar la operación del ADC tanto durante su producción como para aplicaciones de usuario.
1.5. Registro de Datos (ADR).
En este registro de 8 bits se cargan los valores que generados cada vez que se completa una conversión.
1.6. Registro de selección del Reloj (ADICLK).
Con este registro se configura la frecuencia de reloj con la que el ADC va a trabajar. Emplea un campo de 3 Bits con los que se selecciona la razón de división con la que se genera el reloj interno del ADC. En la siguiente tabla se presentan las configuraciones disponibles.
Tabla 11: Configuración de la razón de división de la Frecuencia de entrada al ADC.
Una vez se ha consultado la documentación del módulo ADC se conoce la forma de configurarlo y utilizarlo, de igual forma para este ejemplo queda como tarea para el estudiante realizar la documentación para el uso del módulo TIM, esta información puede ser encontrada en el Capitulo 8 de las hojas de datos del dispositivo en uso.