Está en la página 1de 9

Unidad IV. Microcontroladores. Un microcontrolador es un circuito integrado compuesto por una unidad de procesamiento, memoria y E/S.

Cuya arquitectura responde al modelo Von Neumann o Harvard y que comprenden un Conjunto Complejo de Instrucciones (CISC) o un nmero Reducido de Instrucciones (RISC). Son utilizados para la automatizacin de procesos y las caractersticas de capacidad de procesamiento, tamao y tipo de memoria, as como el nmero de terminales o puertos, son determinadas por la aplicacin. La Figura 4.1 muestra el esquema bsico de la arquitectura Von Neumann de un microcontrolador.

Figura 4.1. Modelo Von Neumann de un microcontrolador. En la actualidad existe en el mercado un importante nmero de empresas dedicadas al desarrollo y produccin de microcontroladores, entre las que destacan: Atmel Microchip Nec Corporation Texas Instruments Freescale (Motorola) Intel National Semiconductor Etc.

Las cuales desarrollan dispositivos con unidades de procesamiento que operan arquitecturas de 8, 16, 32, o 64 bits y diversas capacidades en la velocidad de operacin. As como diversos tamaos de memoria RAM, EEPROM y Flash. Poseen un determinado nmero de puertos, de los cuales algunos son de entrada, salida y bidireccionales. Adems de comprender dispositivos E/S internos como lo son: Timmers, convertidores ADC, contadores, comparadores, moduladores PWM, etc.

4.1 Arquitectura. En sta seccin se analiza la estructura de un microcontrolador de 8 bits y se describen los terminales, CPU, espacio de memoria, entrada y salida, as como dispositivos internos. En ste curso se analizan los uCs de la compaa Freescale y familia HC908, debido a la semejanza de stos con los modelos de otras compaas. 4.1.1 Terminales. A travs de los terminales de entrada, salida y bidireccionales, un uC puede ser programado y puesto en operacin para efectuar las tareas para las cuales sea requerido. El nmero de terminales disponibles en los uC depende del modelo analizado. Existen uC de diversas compaas con 8,16,20,32,64,etc terminales. Un dispositivo con mayor nmero de terminales, implica un uC con ms puertos de E/S, un mayor nmero de dispositivos internos de propsito especfico y generalmente un mayor tamao de memoria. Los terminales de conexin de un uC, son empleados para establecer contacto con el exterior del circuito integrado en operaciones de grabado de la memoria ROM interna (memoria de programa), Reset del sistema, Interrupciones Externas (IRQ), conexin del oscilador externo (OSC), alimentacin del sistema (VDD y VSS), entrada de seales analgicas (AD), salida de seales cuadradas (TCH), etc. ** En la presentacin de uCs se muestran los dispositivos con las terminales de conexin. 4.1.2 CPU. De la misma forma que en un procesador para un sistema de cmputo, el CPU de un uC posee una Unidad Aritmtico-Lgica, una unidad de control y una serie de registros de propsitos especficos. La ALU es utilizada para efectuar operaciones entre dos operandos de tipo aritmtico suma y resta y lgico AND, OR y NOT. Los resultados de estas operaciones son alojadas en registros acumuladores y de banderas. La unidad de control se encarga de generar seales que controlan la ALU y el contenido de los registros internos. Recibe informacin de cdigo a travs del bus de datos, y determina la instruccin a ser ejecutada. Los registros internos al CPU son celdas de memoria que no forman parte de la memoria del sistema (FLASH y RAM de cdigo o disponibles para aplicaciones) y su tamao es de 8 o 16 bits. Un uC opera con una serie de registros internos al CPU denominados: Acumulador, ndice, Apuntador de Pila, Apuntador de Programa y Cdigo de condicin. El registro acumulador de 8 bits es utilizado para contener los operandos y los resultados en operaciones Aritmtico-Lgicas.

El registro ndice de 8 y 16 bits contenidos en una parte alta (H) y una baja (X), es utilizado por el usuario para el direccionamiento de memoria interna o externa. El registro apuntador de pila de 16 bits es utilizado para contener la direccin de la siguiente localidad de la memoria de pila. El registro contador de programa de 16 bits es utilizado para contener las direcciones de la siguiente instruccin a ser ejecutada o el siguiente operando a ser empleado. El registro de cdigo de condicin es denominado comnmente como el registro de banderas o Flags. Este registro de 8 bits contiene un bit de enmascarado de interrupcin y 5 bits de bandera que contienen el resultado de la instruccin ejecutada.

La bandera de Overflow (V), indica que el resultado de una operacin de complemento a dos, ha generado un desbordamiento. Las instrucciones de salto signado, utilizan esta bandera. La bandera Medio Acarreo (H), es puesta en 1 cuando un acarreo ocurre entre el 4 y 5 bit (bits 3 y 4). Es utilizada en operaciones de suma de tipo ADD y ADC, adems de ser empleada en sumas de nmeros BCD. La bandera de interrupcin (I), es utilizada para deshabilitar las interrupciones enmascarables. Escribiendo un 1 en este bit, se deshabilitan las interrupciones enmascarables. La bandera de Negativo (N) es puesta en 1 cuanto una operacin movimiento de datos produce resultados negativos. aritmtica, lgica o

La bandera de Cero (Z) es puesta en 1 cuanto una operacin aritmtica, lgica o movimiento de datos produce un resultado de 00H. La bandera de Acarreo (C), es puesta en 1 cuando una operacin de suma produce un acarreo fuera del 8 bit del acumulador, o en operaciones de sustraccin cuando la operacin requiere un prstamo.

4.1.3 Espacio de memoria. En los uC de la familia HC08 es posible direccionar hasta 64KB de memoria de tipo RAM, ROM y Flash. Cada regin de memoria especifica un nmero de localidades de 8 bits que contienen

informacin acerca de los registros de E/S, memoria de cdigo y datos, reas reservadas para el sistema, memoria auxiliar, y regiones no disponibles. Memoria RAM. La memoria RAM de un uC de la familia HC08 comprende localidades de memoria de 8 bits que contiene informacin del estado y configuracin de los registros de E/S; como lo son los puertos de E/S, oscilador, dispositivos internos (Timmer, ADC, Comparador, etc). As como localidades de memoria RAM disponibles para la aplicacin y espacios reservados del sistema. Memoria ROM. El espacio de memoria ROM es reducido y es utilizado para monitoreo del sistema. Comprende adems una regin de memoria auxiliar. Memoria Flash. La memoria Flash es el tipo de memoria de mayor volumen dentro de un uC. Es utilizada para almacenar el cdigo y datos que definen una aplicacin. Almacena las tablas de vectores de interrupcin, protecciones para los registros, reas reservadas, entre otros. Cada modelo de uC posee un mapa de memoria donde se especifica el tamao y el intervalo de direccionamiento de las memorias RAM y Flash disponibles. El tamao y las regiones de memoria disponibles para el usuario en los modelos QY4 y QT4 son las siguientes. Memoria RAM: 128 bytes con direcciones $0080-$00FF. Memoria Flash: 4096 bytes con direcciones $EE00-$FDFF.

4.1.4 Entrada/Salida. Los puertos de entrada y salida establecen una interface de comunicacin entre el uC y el exterior. Cada modelo de uC posee un determinado nmero de puertos de entrada o salida y puertos bidireccionales. Generalmente los puertos de los uC son denominados puertos A, B, C, etc. Y estn comprendidos por un determinado nmero de bits dentro de un registro de 1 byte. En el caso del uC QY4, se tiene un puerto A de 6 bits, de los cuales 5 son bidireccionales y uno de entrada, un puerto B de 8 bits bidireccionales. El uC QT4 tiene solamente un puerto A de 6 bits (5 bidireccionales y uno de entrada). Cada puerto tiene asignado un registro denominado Registro de Datos de Direccin (DDR) en el cual se define, generalmente al inicio del programa de aplicacin, la direccin de cada uno de los bits bidireccionales de un puerto. Es decir, a travs del DDR se programan los bits de un puerto como salidas si en ste registro se escribe un valor de 1 o como entradas si se escribe un valor de 0. De la misma forma, cada puerto tiene un registro denominado Habilitador de Entrada Pullup (PUE). Y es utilizado para que cada bit de un puerto que ha sido configurado como entrada, reconozca un valor de 1 lgico, cuando su terminal no se encuentra conectada a una seal digital que indique si la entrada del dato es 1 o 0. Cada bit de un puerto es habilitado en configuracin Pullup si se escribe un 1 en ste registro.

4.1.5 Caractersticas especiales. La mayora de los uC, incorporan una serie de dispositivos especiales que son utilizados por las aplicaciones. En ste curso se analizan los dispositivos Timmer (Temporizador) y los Convertidores Analgico-Digital (ADC). 4.1.5.1 Temporizador. El temporizador es un Modulo de Interface de Tiempo provisto de dos canales que es utilizado para establecer una referencia de tiempo en los procesos de captura de datos de entrada (Input Compare) y salida (output compare), as como la generacin de seales Moduladas por Ancho de Pulso (PWM). El temporizador es configurado a travs de una serie de registros para definir un modo de operacin. En la localidad de memoria $0021 (TCNTH) y $0022 (TCNTL), se encuentra alojado un Registro Contador de libre corrimiento de 16 bits, que emplea la frecuencia del bus para incrementar su cuenta en una unidad. A travs del registro de Estado y Control (TSC, $0020) se activa al contador, se habilita una interrupcin por sobre-flujo (overflow), y se selecciona un pre-escalamiento para el ajuste del periodo de incremento en el contador.

Un registro TMODH y TMODL es utilizado para establecer una cuenta de tiempo apoyada en el contador, denominada Mdulo. De esta forma, cuando el contador rebaza el valor de estos registros, se genera una interrupcin por sobre-flujo, indicando que el tiempo preestablecido ha sido rebasado. En varias aplicaciones, el registro Modulo es utilizado para definir el periodo de una seal cuadrada. El temporizador est provisto de dos canales CH0 y CH1 empleados para la generacin de seales (Output Compare) o para la deteccin de seales externas (Input Compare). En el modo Input Compare, el temporizador puede capturar el tiempo en el cual ocurre un evento externo a travs del pin o canal relacionado al canal en cuestin. Transfiriendo el valor instantneo del registro contador (TCNTH y TNCTL) a los registros del canal en cuestin (TCHxH y TCHxL). En el modo Output Compare, el temporizador es utilizado para generar seales con polaridad, duracin y frecuencia determinados. Cuando el contador rebasa el valor programado en los registros del canal (TCHxH y TCHxL), la seal de salida del canal puede ser puesta en 1, 0 o conmutar el estado del pin o terminal relacionado al canal en cuestin.

4.1.5.2 Convertidor Analgico-Digital. Un convertidor analgico-digital es un dispositivo empleado para relacionar una cantidad analgica (voltaje) en un cdigo digital, a travs de un muestreo de la seal analgica. Los ADC son utilizados para obtener un equivalente digital de un voltaje proveniente de un sensor, transductor, etc, o cualquier elemento que suministre una cantidad analgica y sta requiera ser procesada por medios digitales. En los microcontroladores es comn encontrar ADCs del tipo de aproximaciones sucesivas, de tal forma que una seal analgica es recibida por un puerto analgico, para ser convertida a un valor digital. El cdigo digital obtenido es relacionado con la cantidad analgica a travs de una expresin de resolucin. Definiendo entonces como resolucin aquel valor analgico que provoque un cambio de una unidad en la salida digital del convertidor ADC. La resolucin de un ADC se encuentra en funcin al nmero de bits con el que opera el dispositivo a travs de la expresin 4.1. (4.1) Donde es el voltaje de escala completa (full scale) y n es el nmero de bits del convertidor.

De sta forma si el voltaje tiene un valor de 5 V y se utiliza un convertidor de 8 bits, la resolucin es de 0.0195 V o 19.5 mV.

La expresin 4.2 indica entonces el valor digital de salida obtenido para un valor analgico de entrada. (4.2) Ejemplo 4.1 Calcule el valor digital de salida, si un convertidor ADC de 8 bits alimentado con un voltaje Vfs de 5 V, recibe una seal analgica de entrada de 3.5 V.

Los uC tienen una serie de terminales relacionadas a los puertos de E/S, los cuales son configurados, a travs de los registros ($003C) del ADC para ser utilizados como entradas. En stos registros, se define de igual forma si el ADC efecta una sola conversin o un nmero continuo de conversiones. Tambin se define si se genera o no una interrupcin al trmino de cada conversin. El dato digital obtenido cuando una conversin ha sido efectuada se encuentra en el registro ADR ($003E) y est disponible para su lectura.

4.2 Programacin. La programacin de los microcontroladores representa la elaboracin de un programa en un determinado lenguaje que comprende una serie de instrucciones que el procesador debe ejecutar, con el objetivo de efectuar un proceso de informacin. Una serie de instrucciones y de datos son almacenados en memoria de cdigo y datos para efectuar ste procesamiento de informacin. Los microcontroladores utilizan un conjunto de instrucciones definido por su arquitectura, que ste utiliza para la ejecucin de los programas. 4.2.1 Conjunto de instrucciones. Los microcontroladores de la familia H908 emplean un conjunto de instrucciones de tipo CISC, a travs del cual se indica al procesador cual es la instruccin a ejecutar y cules son los elementos internos a ser utilizados. Cada instruccin que se ejecuta en un microcontrolador contiene informacin acerca del modo de direccionamiento de memoria y el nmero de ciclos que sta tarda en ser ejecutada. Pueden contener la direccin de origen y/o destino de datos contenidos en memoria. El tipo de instruccin y sus caractersticas, son descritas en las hojas de datos de los microcontroladores. Las cuales son puestas a disposicin por el fabricante.

4.2.2 Modos de direccionamiento. Los CPU08 utilizan 16 modos de direccionamiento para el acceso a los datos y son utilizados para definir como el CPU encuentra los datos requeridos para ejecutar una instruccin. Los 16 modos de direccionamiento son: Inherente Inmediato Directo Extendido Indexado sin offset Indexado con 8 bits de offset Indexado con 16 bits de offset Stack pointer 8 bits de offset Stack pointer 16 bits de offset Relativo Memoria a memoria Inmediato a directo Directo a directo Indexado a directo con pos incremento Directo a indexado con pos incremento Indexado con pos incremento Indexado con 8 bits de offset y con pos incremento

El modo de direccionamiento inherente las instrucciones no requieren el acceso a memoria, ya que algunas de ellas actan sobre datos alojados en los registros del CPU. La mayora de ellas son de un tamao de 1 byte. Ejemplos: ASLA, CLC, CLRA, DIV, MUL, etc. El modo de direccionamiento inmediato es utilizado para asignar un nmero a las instrucciones que as lo requieran a travs del signo #. Dependiendo del registro involucrado en la operacin ste nmero puede ser de 1 o 2 bytes, mientras que las instrucciones (opcode) son de 1 byte. Ejemplos: LDA #$FF, ADC #$56, CBEQA #$77,AQUI , CMP #$00, LDHX #$1000, CPHX #$0000, etc. En el modo de direccionamiento directo se puede tener acceso a las primeras 256 ($00-$FF) localidades de memoria. Las instrucciones directas generalmente estn compuestas de dos bytes , el primer byte es el opcode y el segundo es la direccin del operando. Una caracterstica importante es que la direccin del operando continua siendo de 2 bytes, pero se asume que el byte alto es $00. Ejemplos: ADC, AND, BCLR, BRSET, CMP, DBNZ, STA, etc.

En el modo de direccionamiento extendido las instrucciones pueden accesar cualquier direccin de los 64 kB del mapa de memoria. Todas las instrucciones extendidas son de 3 bytes, el primer byte es el opcode, el segundo y tercero son el ms y menos significante para operar la direccin, respectivamente. Cuando se utiliza el ensamblador, el programador no requiere distinguir cuando una instruccin es directa o extendida. El ensamblador automticamente selecciona la forma mas corta de la instruccin. Ejemplos: ADC, AND, CMP, LDA, STA, etc. Las instrucciones indexadas sin offset son instrucciones de 1 byte, que accesan datos con direccionamiento variable, utilizando el registro ndice H:X. Las instrucciones indexadas son utilizadas en el acceso a tablas de datos. Ejemplos: JMP ,X (Salto incondicionado indicado por el registro H:X). En las direcciones indexadas con offset de 8 bits, se utiliza al registro ndice para direccionar el ksimo elemento de una tabla de n elementos. Utilizando los registros H:X para direccionar cualquier direccin del mapa de memoria. Son instrucciones de dos bytes donde el byte siguiente al opcode indica la direccin base (inicial) y mediante la suma de los registros H:X se obtiene la direccin efectiva (final) en memoria. Ejemplo JMP $FF,X (Salto incondicional a la direccin $FF + H:X). Las direcciones con offset de 16 bits, operan de forma similar a las de 8 bits, se utilizan 3 bytes de los cuales los dos ltimos son sumados a los registros ndice H:X. Ejemplo : JMP $FFFF,X (Salto incondicional a la direccin $FFFF + H:X). En el modo relativo se utilizan instrucciones de salto para obtener una direccin efectiva resultante cuando se cumple una condicin de salto condicional. El CPU obtienen la direccin de salto de cdigo agregando al apuntador de instrucciones un nmero comprendido dentro del rango -128 a 127, el cual es definido en byte siguiente al opcode de la instruccin relativa. Ejemplo: BEQ, BGE, BLE, etc. En los modos de direccionamiento memoria a memoria, inmediato a directo y directo a directo, se efecta una transferencia de datos sin la intervencin del acumulador. Ejemplos: MOV #$DD,$60, MOV $60,$80. Los modos de direccionamiento con pos incremento, utilizan el registro X (H:X) para efectuar una transferencia indexada de datos. Cuando dicha transferencia ha sido efectuada, se incrementa el valor contenido en H:X en una unidad. Ejemplos MOV ADR,X+ , MOV X+, TSC

También podría gustarte