3. Microcontrolador Un microcontrolador es un circuito integrado que en su interior contiene una unidad central de procesamiento (CPU), unidades de memoria (RAM y ROM), puertos de entrada y salida y periféricos. Estas partes están interconectadas dentro del microcontrolador, y en conjunto forman lo que se le conoce como microcomputadora.
3.1 Características generales
Un microcontrolador típico tendrá un generador de reloj integrado y una pequeña cantidad de memoria de acceso aleatorio y/o ROM/EPROM/EEPROM/flash, ROM/EPROM/EEPROM/flash, con lo que para hacerlo funcionar todo lo que se necesita son unos pocos programas de control y un cristal de sincronización. Los microcontroladores disponen generalmente también de una gran variedad de dispositivos de entrada/salida, como convertidor analógico digital, temporizadores, UARTs y buses de interfaz serie especializados. Frecuentemente, Frecuentemente, estos dispositivos integrados pueden ser controlados por instrucciones de procesadores especializados. Los modernos microcontroladores frecuentemente incluyen un lenguaje de programación integrado, como el lenguaje de programación BASIC que se utiliza bastante con este propósito. 3.1.1 Introducción
Los componentes de un microcontrolado microcontroladorr son:
El registro de Instrucción (RI) El acumulador (ACC) El registro de estado (STATUS) El contador de programa (PC) El registro de direcciones de datos (RDD) El puntero de pila (SP)
Memoria del controlador
La arquitectura tradicional de computadoras y microcontroladores se basa en el esquema propuesto por John Von Neumann, en el cual la unidad central de proceso, o CPU, esta conectada a una memoria única que contiene las instrucciones i nstrucciones del programa y los datos. El tamaño de la unidad de datos o instrucciones esta fijado por el ancho del bus de la memoria. La arquitectura conocida como Harvard, consiste simplemente en un esquema en el que el CPU esta conectado a dos memorias por intermedio de dos buses separados. Una de las memorias contiene solamente las instrucciones del programa, y es llamada Memoria de Programa. La otra memoria solo almacena los datos y es llamada Memoria de Datos. Ambos buses son totalmente independientes y pueden ser de di stintos anchos.
3.1.2 Familias Familia Intel 8051: El primer microcontrolador fue el 8048 con 8bits de datos, con RAM interna, pero la memoria de programa era externa. En los años 80 nació el 8051, siendo el más difundido a nivel mundial. El 8051 tiene 4 Kbytes de ROM que deben programarse durante su construcción. El 8751 reemplazo la ROM por una EPROM. El 8031 no tiene ROM interna; el programa programa reside en memoria externa. Para la comunicación con la memoria, utiliza 3 de los cuatro puertos entrada / salida. Esta posibilidad de expansión es característica de esta familia.
Familia Motorola: forman parte de aparatos de producción masiva como juguetes, equipos de video, impresoras, electrodomésticos y tienen amplia aplicación en la industria automotriz. Existen cinco familias principales: principales: La 68H05, 68HC08 y 68HC11 de 8 bits; la 68HC12 y 68HC16 son de 16 bits, cada una de ellas con diferente UCP. Por ejemplo la 68hc05,representa a mas de 30 microcontroladores distintos con la misma UCP y de 8 bits.. Éstos incluyen RAM, ROM, puertos I/O, temporizadores, convertidores A/D y memorias PROM o EPROM. Familia Microchip: Estos microcontroladores tienen arquitectura Hardware. Se clasifican en tres grupos, dependiendo de la longitud de palabra de instrucción que pueden manejar (12,14 o 16 bits), tomando las referencias 12XXX, 16XXXX, 17XXX y 18XXX. Lo s fabricantes los definen a los PIC como microcontroladores de 8 bits tipo RISC. Son de bajo costo poco consumo y alta velocidad de operación. Familia ATMEL: Manejan 3 grandes grupos de microcontroladores m icrocontroladores RISC, cuyas UCP, llegan hasta los 32 bits. El 1° grupo tiene la arquitectura basada en el 8051 con memoria de programa FLASH. El 2° grupo es el AT91, los cuales soportan compilados en lenguaje “C”, ensamblador etc. El 3° grupo, AVR”, son arquitectura RISC y UCP U CP de 8 bits y módulos de comunicación USART, SIP, ADC, etc.
Microcontroladores Basic Stamp: Toman como base el microcontrolador PIC los cuales forman un sistema soportados en una placa principal, que les permite programarlos en lenguaje “Basic Stamp”, siendo éste más sencillo que otros (lenguaje de alto nivel).El fabricante de estos sistemas
es PARALLAX INC.
3.1.3 ANCHO DE BUSES y 3.1.4 MEMORIA
3.2. Circuitería alternativa para entrada/salida 3.2.1. Generalidades Líneas o puertos de entradas y salidas (I/O) Están destinadas a soportar los periféricos exteriores que controlan. Son de ambos sentidos, es decir que pueden actuar como entradas o salidas según se las programe y se adaptan con los periféricos, manejando información paralela; se agrupan generalmente en grupos de 8 bits, denominándose el conjunto “Puertas”. La actuación de estas puertas es la de suministrar corriente eléctrica en el estado binario alto, con el nivel de tensión aprox. Al de la fuente de alimentación, y absorber corriente en el estado binario bajo. Existen modelos que soportan comunicación serie, otros disponen de líneas para diversos protocolos de comunicación como I2C, USB etc. Otros terminales de un microcontrolador son dos entradas para alimentación de energía eléctrica (VDD(+) y Vss(-); una entrada para el “reinicio” o “reset”(MCLR#) y dos entradas para el oscilador externo (osc1/CLKIN y osc2/CLKOUT); una entrada para interrupción.
La principal utilidad de las patitas que posee la cápsula que contiene un microcontrolador es soportar las líneas de E/S que comunican al computador interno con los periféricos exteriores. Según los controladores de periféricos que posea cada modelo de microcontrolador, las líneas de E/S se destinan a proporcionar el soporte a las señales de entrada, salida y control. Puertos de E/S digitales Todos los microcontroladores destinan algunas de sus patitas a soportar líneas de E/S digitales. Por lo general, estas líneas se agrupan de ocho en ocho o cho formando Puertos. Las líneas digitales de los Puertos pueden configurarse como Entrada o como Salida cargando un 1 ó un 0 en el bit correspondiente de un registro destinado a su configuración. Puertos de comunicación Con objeto de dotar al microcontrolador de la posibilidad de comunicarse con otros dispositivos externos, otros buses de microprocesadores, buses de sistemas, buses de r edes y poder adaptarlos con otros elementos bajo otras normas y protocolos. Algunos modelos disponen de recursos que permiten directamente esta tarea, entre los que destacan: UART, adaptador de comunicación serie asíncrona. USART, adaptador de comunicación serie síncrona y asíncrona Puerta paralela esclava para poder conectarse con los buses de otros microprocesadores. USB (Universal Serial Bus), que es un moderno bus serie para los PC. Bus I2C, que es un interfaz serie de dos hilos desarrollado por Philips. CAN (Controller Area Network), para permitir la adaptación con redes de conexionado multiplexado desarrollado conjuntamente conjuntamente por Bosch e Intel para el cableado de dispositivos en automóviles. En EE.UU. se usa el J185O. 1.8 Herramientas para el desarrollo de aplicaciones. Uno de los factores que más importancia tiene a la hora de seleccionar un microcontrolador entre todos los demás es el soporte tanto software como hardware de que dispone. Un buen conjunto de herramientas de desarrollo puede ser decisivo en la elección, ya que pueden suponer una ayuda inestimable en el desarrollo del proyecto.
3.2.2. Displays LED, LCD y otros dispositivos de visualización
LED: es un diodo emisor de luz el cual emite luz monocromática que no genera calor, es decir es un componente eléctrico semiconductor. LCD: es una pantalla delgada y plana formada por un numero de pixeles en color o monocromos colocados delante de una fuente de luz o reflectora. reflec tora. OLED: diodo orgánico de emisión de luz se basa en una capa electroluminiscente formada por una película de componentes orgánicos que reaccionan a una determinada estimulación eléctrica generando y emitiendo luz por sí mismos. CODIFICADORES DE POSICIÓN: son aquellos que ofrecen directamente un señal digital a partir de una entrada analógica, su importancia subyace en la demanda de medición de posiciones lineales y angulares para sistemas de control de industrias. CODIFICADOR INCREMENTAL: consta de una regla lineal o en un disco, el cual es movido por la parte cuya posición o velocidad va a ser determinada. Los codificadores de incremento pueden ser de tipo magnético, eléctrico u óptimo. Los codificadores ópticos pueden estar basados en sectores ópticos pueden estar basados en sectores opacos y transparentes (en sectores reflectores y no reflectores). Los codificadores de franjas de interferencia están basados en las figuras fi guras de Moire. Para producirlas mediante un movimiento lineal se puede emplear una regla fija y otra móvil que tenga una serie de rayas inclinadas un respecto ala otra. Los codificadores absolutos entregan una salida codificada que indica la posición del elemento móvil con respecto a una referencia. El elemento móvil cuenta con una zona que permiten distinguir y asignárseles valores de uno o cero. Unidad 4 4.1.1. Modelo de programación MODELO DE PROGRAMACIÓN: Descripción de micros controladores: son circuitos integrados que contienen muchas de las mismas cualidades de una computadora de escritorio, tales como la CPU. Juegos de instrucciones reducidas: es una especificación que detalla las instrucciones que una unidad central de procesamiento puede entender y ejecutar, o el conjunto de todos los comandos implementados por un diseño particular de una CPU. Núcleo: pertenece a las características básicas, que son requeridas, para que el dispositivo funcione. Incluye dispositivos como la CPU, la ALU, el juego de instrucción. Periféricos: son los dispositivos que los diferencian de los microprocesadores.
Funciones o características especiales: son todos aquellos detalles que ayudan a que el micro controlador pueda ser más barato, rentable y flexible. 4.2. Estructura de registros de CPU. Registros visibles al usuario: Permiten al programador de lenguaje de máquina o ensamblador minimizar las referencias a memoria principal optimizando el uso de los registros. Registros de control: Son utilizados por la unidad de control c ontrol para controlar el funcionamiento de la CPU y por programas privilegiados del sistema para controlar la ejecución de programas. Registro de estado: Se utiliza para tomar decisiones en función de operaciones realizadas. 4.3. Modos de direccionamiento Direccionamiento inmediato: - La instrucción contiene al propio objeto. - Se emplea cuando la instrucción contiene un valor constante. - El tamaño del operando viene determinado por el espacio reservado para él en el formato de instrucción.
Direccionamiento directo: Direccionamiento mediante registro - El operando se encuentra contenido en un registro. - Subcampos del campo de operando Mdir CR Direccionamiento directo absoluto - La instrucción contiene la dirección de memoria exacta donde se encuentra el operando. - El operando se encuentra en memoria. - Subcampos del campo de operando • El rango de CD debe ser capaz de direccionar toda la memoria. • Si no es capaz: direccionamiento de página base.
DIRECCIONAMIENTO RELATIVO A REGISTRO - El operando se encuentra en memoria. - La dirección del objeto ha de ser calculada a partir de la suma del contenido de un cierto registro (que funciona como un puntero) y un desplazamiento (contenido en la instrucción). - Subcampos del campo de operando Direccionamiento relativo a registro base - Se emplea como puntero un registro base, que puede ser un registro específico o uno cualquiera de los del banco. - El registro base utilizada se indica en el subcampo CR.
Direccionamiento relativo a contador de programa - Como puntero se emplea el contador de programa. - Este direccionamiento se emplea para acceder a instrucciones (saltos relativos o bucles) o para referenciar datos cercanos al código. - No es preciso preci so introducir el subcampo CR. Direccionamiento relativo a puntero de pila - Pila: estructura de tipo LIFO marcada por • el fondo de la pila • el puntero de pila (*SP), registro que apunta a la última posición ocupada de la
pila - Como puntero del direccionamiento se emplea el puntero de pila. - No es preciso incluir el subcampo CR, y a veces no lleva CD.
DIRECCIONAMIENTO INDEXADO - Similar al direccionamiento direcci onamiento relativo a registro base. • El operando se encuentra en memoria. • Registro índice: se modifica a menudo en la ejecución del programa.
- Subcampos del campo de operando - El registro índice í ndice puede permitir incrementos o decrementos antes o después de obtenerse la dirección del objeto: • Preincremento • Predecremento • Posincremento • Posdecremento
- El incremento o decremento puede depender del tamaño del objeto referenciado. DIRECCIONAMIENTO INDIRECTO - El operando se encuentra en memoria. - La instrucción contiene una dirección que se emplea para leer en memoria una dirección intermedia que será la verdadera dirección del objeto buscado. - Subcampos del campo de operando - Esquema de funcionamiento Mdir
CD (dirección indirecta)
COMBINACIONES DE MODOS BÁSICOS DE DIRECCIONAMIENTO Direccionamiento indirecto a registro - Es similar al direccionamiento indirecto, pero la dirección intermedia está contenida en un registro, no en una posición de memoria. - La instrucción contendrá la referencia al registro. - Subcampos del campo de operando Mdir CR
Coincide con el direccionamiento relativo a registro base sin usar desplazamiento. Combinación de modos indirecto e indexado - Subcampos del campo de operando Mdir
CR
CD (dirección indirecta)
- Preindexado: El contenido del registro índice se suma al de la dirección indirecta en el primer paso de la indirección.
Direccionamiento relativo a registro con índice y desplazamiento - La dirección del objeto se obtiene sumando el contenido de un registro base, un registro índice y un desplazamiento. - Subcampos del campo de operando Mdir
CR1
CR2
CD (desplazamiento)
DIRECCIONAMIENTO PAGINADO Y DIRECCIONAMIENTO SEGMENTADO Direccionamiento paginado - La memoria se encuentra dividida en páginas (bloques de igual longitud). - Las direcciones se componen de dos partes: • Indicador de página (IP): en un registro específico o de propósito general de la máquina. • Dirección de palabra (DP): en el campo CD de la instrucción. - Concatenando IP y DP se obtiene la dirección completa. Direccionamiento segmentado - La memoria se divide divi de en porciones de tamaño variable llamadas segmentos. - Tabla de segmentos: contiene la dirección del comienzo y del final de cada segmento en memoria. - Problemas: fraccionamiento de memoria. - Ventajas: se pueden definir segmentos de tamaño arbitrario.
4.1.1 conjunto de instrucciones
Cualquier microprocesador o microcontrolador ejecuta las instrucciones de un programa en su lenguaje de maquina. El lenguaje o código c ódigo maquina es el constituido por los códigos binarios de las instrucciones que pueden ejecutar el microcontrolador microcontrolador por un lenguaje de “unos” y “ceros”. Para reducir el nivel de dificultad de la programación programación a este “bajo nivel” se crearon los l enguajes
ensambladores. Los PIC de gama media tienen ti enen un lenguaje ensamblador compuesto por 35 instrucciones. Un programa escrito en lenguaje ensamblador no se puede ejecutar directamente en el microcontrolador es necesario traducirlo al lenguaje maquina. Programa fuente - ensamblador de microcontrolador.
programa en lenguaje de maquina --
al programador
Programa fuente - ensamblador -programa en lenguaje de maquina --
programa codificado parcialmente --- enlazador -al programador del microcontrolador .
4.1.2 estructura de las instrucciones En los microcontroladores PIC de gama media un operador puede ser *una dirección de 7 bits de la memoria de datos * una dirección de 11 bits de la memoria de programa * un dato de 8 bits * la dirección de 3 bits de un bit de un registro cualquiera cualquiera de la memoria de datos * la indicación de cual es el destino del resultado de las instrucciones si es el registro W o un registro de la memoria de datos.
4.1.3 modo de direccionar los datos El direccionamiento es inmediato cuando el dato forma parte de la instrucción. El operando de las instrucciones es el propio dato El direccionamiento es directo cuando la dirección del dato se da en la instrucción. El operando de la instrucción es la dirección del dato. El direccionamiento es indirecto cuando la instrucción toma la l a dirección del dato RDD. El operando de la instrucción es la dirección del RDD. La pila se usa para almacenar direcciones de instrucciones y en concreto para recordar la dirección de retorno al programa principal desde una subrutina. Cuando se llama a una subrutina mediante una instrucción call o similar, el valor del contador de programa PC debe retornar al terminar la ejecución se guarda en la pila.