viernes, 31 de mayo de 2013

Unidad 4. 
Microcontroladores.

Qué es un Microcontrolador
Muchos de los sistemas digitales pueden diseñarse empleando procesadores o microcontroladores, la selección del dispositivo depende del tipo de aplicación y la diferencia básica que existe entre estos dos dispositivos se explica a continuación:
o    Los procesadores son empleados para procesar información. A manera de ejemplo, con un procesador se podría hallar todas las personas en Bogotá entre edades de 15 y 30 años, de sexo femenino, y ordenados por el Apellido. Los procesadores usan un conjunto de instrucciones útiles para procesar datos, lo cual los hace muy versátiles para manejar información.
o    Los microcontroladores son utilizados como su nombre lo indica para controlar. Son muy utilizados para implementar controles automáticos. Como ejemplo, un microcontrolador puede sensar la temperatura de un proceso, compararla con un valor almacenado en memoria y tomar la decisión de encender un equipo de calefacción si la temperatura baja de cierto valor, y además de ello mostrar el valor en un display.
Los microcontroladores generalmente tienen instrucciones especiales que permiten controlar procesos como el indicado anteriormente y otros más complejos; todo depende de la habilidad del programador para generar el código para manejar el proceso. Un microcontrolador es simplemente un procesador con memoria ROM y RAM, puertos de E/S y otros dispositivos de propósito especial como conversores A/D, contadores, temporizadores y puertos de comunicación, o en otras palabras es un microcomputador con funciones especiales. En la figura 11.7.1 se indica la estructura interna típica de un microcontrolador.


Figura 11.7.1. Estructura típica de un microcontrolador

Estos dispositivos generalmente incluyen variedad de funciones especiales que se pueden utilizar gracias a los dispositivos internos incluidos dentro de ellos. Entre las características mas relevantes de un microcontrolador, se pueden enunciar las siguientes:
o    La memoria de programa generalmente es una Flash EEPROM.
o    Tiene puertos de Entrada y Salida (Configurables por software).
o    Poseen contadores de propósito especial.
o    Tiene incluido un reloj del sistema que permite contabilizar tiempo.
o    Algunos modelos incluyen conversores A/D.
o    Tiene Memoria EEPROM para almacenar datos.
o    Tiene puerto de comunicaciones.
o    Manejan velocidades de operación hasta 20 MHz.
o    Algunos de estos dispositivos tienen puerto de comunicaciones serial.
o    Tienen entradas para interrupción.
o    La programación es rápida.
o    Las herramientas de desarrollo son económicas y se encuentran disponibles en a red, las cuales incluyen el ensamblador y simulador.
Los microcontroladores se pueden encontrar en varias aplicaciones que se relacionen con medida, almacenamiento, control, cálculo entre otras. También se pueden encontrar dentro de los teclados, módems, impresoras y otros periféricos. Como se puede notar los microcontroladores son dispositivos muy versátiles que pueden ser utilizados en muchas aplicaciones, donde todo el potencial se encuentra en la programación.
Microcontroladores disponibles en el mercado
En esta sección se describen algunos microcontroladores populares que pueden ser empleados para infinidad de aplicaciones. Lo más recomendable en la selección de un microcontrolador es tener disponible un buen juego de herramientas de desarrollo y que su costo no sea tan elevado, además de ello también es importante tener acceso a la documentación del dispositivo para conocer su arquitectura y funciones. Para iniciarse en la programación de estos dispositivos generalmente son recomendables los microcontroladores de INTEL, MOTOROLA y MICROCHIP entre otros, de los cuales se consiguen con facilidad sus herramientas de desarrollo y documentación. A continuación de dará una breve descripción de los dispositivos de cada una de estas Marcas.
FAMILIA 805X, 80186 - INTEL
Los microcontroladores de la serie 8051, son la segunda generación después del 8048. Este dispositivo es muy poderoso y fácil para programar. Tiene arquitectura Harvard, es decir, que los la memoria de datos y programa se encuentran por separado en su estructura. La memoria del programa es de 64K y la memoria de datos es de 128 bytes y 256 bytes para los 8052. Hay disponible gran cantidad de software de desarrollo para los microcontroladores de esta familia que puede ser encontrado en Internet.
La tercera generación de estos microcontroladores son los de la familia 80C196, los cuales manejan palabras de 16 bits. Entre las principales características de estos dispositivos se pueden enumerar las siguientes: efectúan operaciones de multiplicación y división el hardware multiplica y divide, 6 modos de direccionamiento, Sistema de E/S de alta velocidad, Conversor A/D, módulo de comunicación serial, 8 fuentes de interrupción, generador de PWM, Watchdog Timer.
Existe también el microcontrolador 80386 EX, el cual tiene toda la potencialidad de un procesador 80386 pero con dispositivos adicionales que lo convierten en un microcontrolador muy potente y versátil. Este dispositivo tiene puerto serial, modos de ahorro de energía, contadores y temporizadores, memoria DRAM y fuentes de interrupción.
FAMILIA 68HC11 - MOTOROLA
El 68HC11 es un microcontrolador de 8 bits. Este microcontrolador tiene bus de direcciones interno de 16 bits con un juego de instrucciones similar al de sus predecesores de las familias 6801, 6805 y 6809. La arquitectura de estos microcontroladores es Von-Newman, es decir, que las direcciones y los datos comparten el mismo espacio en memoria. Dependiendo de la variedad, los 68HC11 tienen EEPROM incorporada, RAM, entradas y salidas digitales, temporizadores, conversor A/D, generador de PWM, contadores de pulsos, puerto de comunicaciones seriales sincrónicas y asincrónicas, entre otras funciones.
PIC16C - MICROCHIP
Los microcontroladores de Microchip fueron los primeros dispositivos RISC. RISC significa que el dispositivo tiene un número reducido de instrucciones, lo cual implica simplicidad en su arquitectura y bajo costo. Aunque estos microcontroladores tienen pocas instrucciones (33 para el PIC16CXX) en la actualidad son muy utilizados por su facilidad de programación y costo reducido.
Estos dispositivos son de arquitectura Harvard, por lo cual teien buses de datos y direcciones separados. Los beneficios que tiene este dispositivo frente a los demás es su sencillez, lo cual permite fabricarlo en chips muy pequeños, con la ventaja adicional de consumir muy poca energía.

Estos dispositivos son muy populares y generalmente se encuentran en aplicaciones en revistas de electrónica e Internet. Actualmente existen varias familias de este microcontrolador entre las cuales se pueden destacar la PIC16C5X, PIC16CXX, y la PIC17CXX, que también se pueden conseguir con memoria Flash en las familias PIC16FXXX


     Arquitectura.

Arquitectura Von Neumann
La arquitectura tradicional de computadoras y microprocesadores está basada en la arquitectura Von Neumann, en la cual la unidad central de proceso (CPU), está conectada a una memoria única donde se guardan las instrucciones del programa y los datos. El tamaño de la unidad de datos o instrucciones está fijado por el ancho del bus que comunica la memoria con la CPU. Así un microprocesador de 8 bits con un bus de 8 bits, tendrá que manejar datos e instrucciones de una o más unidades de 8 bits (bytes) de longitud. Si tiene que acceder a una instrucción o dato de más de un byte de longitud, tendrá que realizar más de un acceso a la memoria. Y el tener un único bus hace que el microprocesador sea más lento en su respuesta, ya que no puede buscar en memoria una nueva instrucción mientras no _nalicen las transferencias de datos de la instrucción anterior. Resumiendo todo lo anterior, las principales limitaciones que nos encontramos con la arquitectura Von Neumann son:
1. La limitación de la longitud de las instrucciones por el bus de datos, que hace que el microprocesador tenga que realizar varios accesos a memoria para buscar instrucciones complejas.
2. La limitación de la velocidad de operación a causa del bus único para datos e instrucciones que no deja acceder simultáneamente a unos y otras, lo cual impide superponer ambos tiempos de acceso.



Arquitectura Harvard
La arquitectura Harvard tiene la unidad central de proceso (CPU) conectada a dos memorias (una con las instrucciones y otra con los datos) por medio de dos buses diferentes. Una de las memorias contiene solamente las instrucciones del programa (Memoria de Programa), y la otra sólo almacena datos (Memoria de Datos). Ambos buses son totalmente independientes y pueden ser de distintos anchos. Para un procesador de Set de Instrucciones Reducido, o RISC (Reduced Instrucción Set Computer), el set de instrucciones y el bus de memoria de programa pueden diseñarse de tal manera que todas las instrucciones tengan una sola posición de memoria de programa de longitud. Además, al ser los buses independientes, la CPU puede acceder a los datos para completar la ejecución de una instrucción, y al mismo tiempo leer la siguiente instrucción a ejecutar. Ventajas de esta arquitectura:
1. El tamaño de las instrucciones no esta relacionado con el de los datos, y por lo tanto puede ser optimizado para que cualquier instrucción ocupe una sola posición de memoria de programa, logrando así mayor velocidad y menor longitud de programa.
2. El tiempo de acceso a las instrucciones puede superponerse con el de los datos, logrando una mayor velocidad en cada operación.
Una pequeña desventaja de los procesadores con arquitectura Harvard, es que deben poseer instrucciones especiales para acceder a tablas de valores constantes que pueda ser necesario incluir en los programas, ya que estas tablas se encontraran físicamente en la memoria de programa (por ejemplo en la EPROM de un microprocesador).



El microcontrolador PIC 16F84 posee arquitectura Harvard, con una memoria de datos de 8 bits, y una memoria de programa de 14 bits.
En la Figura 5 vemos la arquitectura interna organizada en bloques interconectados, en donde se incluye la memoria RAM, la memoria EEPROM, los puertos de entrada y salida (I/O), etc.

El procesador
Es el elemento más importante del microcontrolador y determina sus principales características, tanto a nivel hardware como software. Se encarga de direccionar la memoria de instrucciones, recibir el código OP de la instrucción en curso, su decodi_cación y la ejecución de la operación que implica la instrucción, así como la búsqueda de los operandos y el almacenamiento del resultado. Existen tres orientaciones en cuanto a la arquitectura y funcionalidad de los procesadores actuales.

CISC
Un gran número de procesadores usados en los microcontroladores están basados en la _losofía CISC (Computadores de Juego de Instrucciones Complejo). Disponen de más de 80 instrucciones máquina en su repertorio, algunas de las cuales son muy so_sticadas y potentes, requiriendo muchos ciclos para su ejecución. Una ventaja de los procesadores CISC es que ofrecen al programador instrucciones complejas que actúan como macros, es decir,

RISC
Tanto la industria de los computadores comerciales como la de los microcontroladores están decantándose hacia la _losofía RISC (Computadores de Juego de Instrucciones Reducido). En estos procesadores el repertorio de instrucciones máquina es muy reducido y las instrucciones son simples y, generalmente, se ejecutan en un ciclo.

La sencillez y rapidez de las instrucciones permiten optimizar el hardware y el software del procesador.

SISC
En los microcontroladores destinados a aplicaciones muy concretas, el juego de instrucciones, además de ser reducido, es especí_co, o sea, las instrucciones se adaptan a las necesidades de la aplicación prevista. Esta filosofía se ha bautizado con el nombre de SISC (Computadores de Juego de Instrucciones Específico).




Según la arquitectura interna de la memoria del microcontrolador se puede distinguir entre:
·         Microcontroladores con arquitectura Von Neumann.
·         Microcontroladores con arquitectura Harvard.

   CPU.
·  Arquitectura del procesador o UCP.
Según la filosofía de la arquitectura del procesador se puede distinguir entre:
·         Microcontroladores CISC.
·         Microcontroladores RISC.
·         Microcontroladores SISC.
Un microcontrolador basado en la filosofía CISC (Computadores de Juego de Instrucciones Complejo) dispone de más de 80 instrucciones máquina en su repertorio, algunas de las cuales son muy sofisticadas y potentes, requiriendo muchos ciclos para su ejecución.
Una ventaja de los procesadores CISC es que ofrecen al programador instrucciones complejas que actúa como macros.
Tanto la industria de los computadores comerciales como los de los microcontroladores están decantándose hacia la filosofía RISC (Computadores de Juego de Instrucciones Reducido). En estos procesadores el repertorio de instrucciones máquina es muy reducido y las instrucciones son simples y, generalmente, se ejecuta en un solo ciclo.
La sencillez y rapidez de las instrucciones permiten optimizar el hardware y el software del procesador.
En los microcontroladores destinados a aplicaciones muy concretas, el juego de instrucciones, además de ser reducido, es específico, o sea, las instrucciones se adaptan a las necesidades de la aplicación prevista. Esta filosofía se ha bautizado con el nombre de SISC (Computadores de Juego de Instrucciones Específico).


Terminales del microcontrolador y sus respectivas funciones:
Ésta sería la disposición de sus terminales y sus respectivos nombres...

Encapsulado DIP - PIC16C84/F84
Patas 1, 2, 3, 17 y 18 (RA0-RA4/TOCKI): Es el PORT A. Corresponden a 5 líneas bidireccionales de E/S (definidas por programación). Es capaz de entregar niveles TTL cuando la alimentación aplicada en VDD es de 5V ± 5%. El pin RA4/TOCKI como entrada puede programarse en funcionamiento normal o como entrada del contador/temporizador TMR0. Cuando este pin se programa como entrada digital, funciona como un disparador de Schmitt (Schmitt trigger), puede reconocer señales un poco distorsionadas y llevarlas a niveles lógicos (cero y cinco voltios). Cuando se usa como salida digital se comporta como colector abierto; por lo tanto se debe poner una resistencia de pull-Up (resistencia externa conectada a un nivel de cinco voltios, ...no te preocupes, mas abajo lo entenderás mejor). Como salida, la lógica es inversa: un "0" escrito al pin del puerto entrega a la salida un "1" lógico. Este pin como salida no puede manejar cargas como fuente, sólo en el modo sumidero.

Pata 4 (MCLR / Vpp): Es una pata de múltiples aplicaciones, es la entrada de Reset (master clear) si está a nivel bajo y también es la habilitación de la tensión de programación cuando se está programando el dispositivo. Cuando su tensión es la de VDD el PIC funciona normalmente.

Patas 5 y 14 (VSS y VDD): Son respectivamente las patas de masa y alimentación. La tensión de alimentación de un PIC está comprendida entre 2V y 6V aunque se recomienda no sobrepasar los 5.5V.

Patas 6, 7, 8, 9, 10, 11, 12, 13 (RB0-RB7): Es el PORT B. Corresponden a ocho líneas bidireccionales de E/S (definidas por programación). Pueden manejar niveles TTL cuando la tensión de alimentación aplicada en VDD es de 5V ± 5%. RB0 puede programarse además como entrada de interrupciones externas INT. Los pines RB4 a RB7 pueden programarse para responder a interrupciones por cambio de estado. Las patas RB6 y RB7 se corresponden con las líneas de entrada de reloj y entrada de datos respectivamente, cuando está en modo programación del integrado.

Patas 15 y 16 (OSC1/CLKIN y OSC2/CLKOUT): Corresponden a los pines de la entrada externa de reloj y salida de oscilador a cristal respectivamente.
.: Ahora un poco de electrónica:
Esto comienza a ponerse interesante, no crees...?, ok sigamos... Como estos dispositivos son de tecnología CMOS, todos los pines deben estar conectados a alguna parte, nunca dejarlos al aire porque se puede dañar el integrado. Los pines que no se estén usando se deben conectar a la fuente de alimentación de +5V, como se muestra en la siguiente figura...
4.1.1                 Espacio de Memoria.
Memoria
En los microcontroladores la memoria de instrucciones y datos está integrada en el propio chip. Una parte debe ser no volátil, tipo ROM, y se destina a contener el programa de instrucciones que gobierna la aplicación. Otra parte de memoria será tipo RAM, volátil, y se destina a guardar las variables y los datos.
Hay dos peculiaridades que diferencian a los microcontroladores de los computadores personales:
  • No existen sistemas de almacenamiento masivo como disco duro o disquetes. Como el microcontrolador sólo se destina a una tarea en la memoria ROM, sólo hay que almacenar un único programa de trabajo.
  • La RAM en estos dispositivos es de poca capacidad pues sólo debe contener las variables y los cambios de información que se produzcan en el transcurso del programa. Por otra parte, como sólo existe un programa activo, no se requiere guarda r una copia del mismo en la RAM pues se ejecuta directamente desde la ROM.
Los usuarios de computadores personales están habituados a manejar Megabytes de memoria, pero, los diseñadores con microcontroladores trabajan con capacidades de ROM comprendidas entre 512 bytes y 8 k bytes y de RAM comprendidas entre 20 y 512 bytes.
Según el tipo de memoria ROM que dispongan los microcontroladores, la aplicación y utilización de los mismos es diferente. Se describen las cinco versiones de memoria no volátil que se pueden encontrar en los microcontroladores del mercado.
ROM con máscara
Es una memoria no volátil de sólo lectura cuyo contenido se graba durante la fabricación del chip. Si tenemos idea de cómo se fabrican los circuitos integrados, sabremos de donde viene el nombre. Estos se fabrican en obleas que contienen varias decenas de chips. Estas obleas se fabrican a partir de procesos fotoquímicos, donde se impregnan capas de silicio y oxido de silicio, y según convenga, se erosionan al exponerlos a la luz. Como no todos los puntos han de ser erosionados, se sitúa entre la luz y la oblea una mascara con agujeros, de manera que donde deba incidir la luz, esta pasará. Con varios procesos similares pero más complicados se consigue fabricar los transistores y diodos micrométricos que componen un chip. Ahora ya sabes de donde viene la máscara y no te acostarás sin saber una cosa más. El elevado coste del diseño de la máscara sólo hace aconsejable el empleo de los microcontroladores con este tipo de memoria cuando se precisan cantidades superiores a varios miles de unidades.
OTP
El microcontrolador contiene una memoria no volátil de sólo lectura programable una sola vez por el usuario.
OTP (One Time Programmable). Es el usuario quien puede escribir el programa en el chip mediante un sencillo grabador controlado por un programa desde un PC. La versión OTP es recomendable cuando es muy corto el ciclo de diseño del producto, o bien, en la construcción de prototipos y series muy pequeñas. Tanto en este tipo de memoria como en la EPROM, se suele usar la encriptación mediante fusibles para proteger el código contenido.

EPROM
Los microcontroladores que disponen de memoria EPROM (Erasable Programmable Read OnIy Memory) pueden borrarse y grabarse muchas veces. La grabación se realiza, como en el caso de los OTP, con un grabador gobernado desde un PC. Si, posteriormente, se desea borrar el contenido, disponen de una ventana de cristal en su super_cie por la que se somete a la EPROM a rayos ultravioleta durante varios minutos. Las cápsulas son de material cerámico y son más caros que los microcontroladores con memoria OTP que están hechos con material
plástico.

EEPROM, E2PROM o E2PROM
Se trata de memorias de sólo lectura, programables y borrables eléctricamente EEPROM (Electrical Erasable Programmable Read OnIy Memory). Tanto la programación como el borrado, se realizan eléctricamente desde el propio grabador y bajo el control programado de un PC. Es muy cómoda y rápida la operación de grabado y la de borrado. No disponen de ventana de cristal en la superficie. Los microcontroladores dotados de memoria EEPROM una vez instalados en el circuito, pueden grabarse y borrarse cuantas veces se quiera sin ser retirados de dicho circuito. Para ello se usan "grabadores en circuito"que confieren una gran flexibilidad y rapidez a la hora de realizar modi_caciones en el programa de trabajo. El número de veces que puede grabarse y borrarse una memoria EEPROM es finito, por lo que no es recomendable una reprogramación continua. Son muy idóneos para la enseñanza y la Ingeniería de diseño. Se va extendiendo en los fabricantes la tendencia de incluir una pequeña zona de memoria EEPROM en los circuitos programables para guardar y modificar cómodamente una serie de parámetros que adecuan el dispositivo a las condiciones del entorno. Este tipo de memoria es relativamente lenta, como ya veremos más adelante.

FLASH
Se trata de una memoria no volátil, de bajo consumo, que se puede escribir y borrar. Funciona como una ROM y una RAM pero consume menos y es más pequeña. A diferencia de la ROM, la memoria FLASH es programable en el circuito. Es más rápida y de mayor densidad que la EEPROM. La alternativa FLASH está recomendada frente a la EEPROM cuando se precisa gran cantidad de memoria de programa no volátil. Es más veloz y tolera más ciclos de escritura/borrado. Las memorias EEPROM y FLASH son muy útiles al permitir que los microcontroladores que las incorporan puedan ser reprogramados en circuito, es decir, sin tener que sacar el circuito integrado de la tarjeta. Así, un dispositivo con este tipo de memoria incorporado al control del motor de un automóvil permite que pueda modi_carse el programa durante la rutina de mantenimiento periódico, compensando los desgastes y otros factores tales como la compresión, la instalación de nuevas piezas, etc. La reprogramación del microcontrolador puede convertirse en una labor rutinaria dentro de la puesta a punto.

4.1.2                 Entrada/ Salida.
Puertas de Entrada y Salida
Las puertas de Entrada y Salida (E/S) permiten comunicar al procesador con el mundo exterior, a través de interfaces, o con otros dispositivos. Estas puertas, también llamadas puertos, son la principal utilidad de las patas o pines de un microprocesador. 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.

Periféricos digitales de entrada.
§ Pulsadores.
Estos dispositivos permiten introducir un nivel lógico en el momento que se les acciona, pasando al nivel contrario cuando se deja de hacerlo (vuelven a la posición de reposo).

En el esquema de la izquierda de la Figura 6-14 la línea de entrada (IN) recibe un nivel
lógico alto cuando el pulsador está reposo y un nivel lógico bajo cuando se acciona. El
pulsador de la derecha funciona al revés.



Hay multitud de detectores, finales de carrera y sensores digitales que funcionan de la
misma manera que los pulsadores.
§ Interruptores.
Los interruptores tienen dos estados estables y hay que accionarlos para cambiar de uno a
otro. El interruptor admite el estado abierto y el estado cerrado. Las formas de conectar un
interruptor a una entrada del microcontrolador son iguales a las de la figura 6-14,
sustituyendo el pulsador por el interruptor.
Todos los circuitos electromecánicos (pulsadores, interruptores,...)
originan un fenómeno denominado “rebotes”: las láminas se abren y
se cierran varias veces en el momento de la transición (Figura 6-15).
El efecto que produce es semejante a abrir y cerrar el interruptor o
pulsador varias veces, por lo que puede provocar resultados
erróneos.



El efecto de los rebotes se puede solucionar bien mediante software, o bien por hardware.
En la Figura 6-16 se muestran dos circuitos hardware antirrebotes. El circuito de la izquierda
emplea un condensador y el de la derecha un flip-flop R-S.



Periféricos digitales de salida
§ Diodos LED.
El diodo led es un elemento que se emplea como indicador luminoso. Cuando la diferencia
de potencial entre su ánodo y su cátodo supere un determinado valor umbral el diodo led se
encenderá. Las líneas de los PIC pueden suministrar suficiente corriente como para
encender a un diodo led, por eso se pueden conectar directamente a través de una
resistencia como muestra la Figura 6-17. Si empleamos la conexión de la izquierda de la
figura, el diodo led se encenderá al poner a ‘1’ la salida del microcontrolador, mientras que
con la conexión de la derecha lo hará cuando la salida se ponga a ‘0’.



En ocasiones, los diodos u otro tipo de carga necesitan más corriente que la que pueden
entregar las líneas de los PIC. En ese caso es necesario intercalar una etapa amplificadora.
§ Relés
La activación y desactivación de un relé brinda la oportunidad de poder controlar cargas
mucho mayores (más corriente) porque pueden ser controladas por los contactos de dicho
relé (Figura 6-18).
Cuando la línea de salida, OUT, aplica un nivel alto a la base del transistor Darlington (etapa amplificadora) hace que conduzca y se active el relé. Al cerrarse los contactos del relé se controla una carga mayor. El valor de la resistencia depende del tipo de relé y del transistor.





4.1.3                 Características especiales.
Reloj principal
Todos los microcontroladores disponen de un circuito oscilador que genera una onda cuadrada de alta frecuencia, que configura los impulsos de reloj usados en la sincronización de todas las operaciones del sistema. Esta señal del reloj es el motor del sistema y la que hace que el programa y los contadores avancen.
Generalmente, el circuito de reloj está incorporado en el microcontrolador y sólo se necesitan unos pocos componentes exteriores para seleccionar y estabilizar la frecuencia de trabajo. Dichos componentes suelen consistir en un cristal de cuarzo junto a elementos pasivos o bien un resonador cerámico o una red R-C.
Aumentar la frecuencia de reloj supone disminuir el tiempo en que se ejecutan las instrucciones pero lleva aparejado un incremento del consumo de energía y de calor generado.

RECURSOS ESPECIALES
Cada fabricante oferta numerosas versiones de una arquitectura básica de microcontrolador. En algunas amplía las capacidades de las memorias, en otras incorpora nuevos recursos, en otras reduce las prestaciones al mínimo para aplicaciones muy simples, etc. La labor del diseñador es encontrar el modelo mínimo que satisfaga todos los requerimientos de su aplicación. De esta forma, minimizará el coste, el hardware y el software. Los principales recursos específicos que incorporan los microcontroladores son:
  • Temporizadores o Timers.
  • Perro guardián oWatchdog.
  • Protección ante fallo de alimentación o Brownout.
  • Estado de reposo o de bajo consumo (Sleep mode).
  • Conversor A/D (Analógico ->Digital).
  • Conversor D/A (Digital ->Analógico).
  • Comparador analógico.
  • Modulador de anchura de impulsos o PWM (PulseWide Modulation).
  • Puertas de E/S digitales.
  • Puertas de comunicación.
A continuación pasamos a ver con un poco más de detalle cada uno de ellos
Temporizadores o Timers
Se emplean para controlar periodos de tiempo (temporizadores) y para llevar la cuenta de acontecimientos que suceden en el exterior (contadores).
Para la medida de tiempos se carga un registro con el valor adecuado y a continuación dicho valor se va incrementando o decrementando al ritmo de los impulsos de reloj o algún múltiplo hasta que se desborde y llegue a 0, momento en el que se produce un aviso. Cuando se desean contar acontecimientos que se materializan por cambios de nivel o flancos en alguna de las patitas del microcontrolador, el mencionado registro se va incrementando o decrementando al ritmo de dichos impulsos. Vaya, nos hemos metido en términos de microcontroladores demasiado pronto. Bueno, con el fin de aclarar que es un registro, anticipamos que es un valor numérico en una posición fija de memoria. Un ejemplo: esto es igual que el segundero de nuestro reloj digital, este va aumentando hasta que llega a 60 segundos, pero en la pantalla pone 00, esto quiere decir que se desborda. Pero cuando cambia da un aviso y se incrementan los minutos. En este ejemplo, el registro es el segundero; estos son fijos ya que sabemos que son los de la derecha del todo y no se van a cambiar.

Perro guardián oWatchdog
Cuando el computador personal se bloquea por un fallo del software u otra causa, se pulsa el botón del reset y se reinicia el sistema. Pero un microcontrolador funciona sin el control de un supervisor y de forma continuada las 24 horas del día. El Perro Guardián consiste en un contador que, cuando llega al máximo, provoca un reset automáticamente en el sistema.
Se debe diseñar el programa de trabajo que controla la tarea de forma que resetee al Perro Guardián de vez en cuando antes de que provoque el reset. Si falla el programa o se bloquea (si cae en bucle in_nito), no se refrescará al Perro guardián y, al completar su temporización, provocará el reset del sistema.

Protección ante fallo de alimentación o Brownout
Se trata de un circuito que resetea al microcontrolador cuando el voltaje de alimentación (VDD) es inferior a un voltaje mínimo (brownout). Mientras el voltaje de alimentación sea inferior al de brownout el dispositivo se mantiene reseteado, comenzando a funcionar normalmente cuando sobrepasa dicho valor. Esto es muy útil para evitar datos erróneos por transiciones y ruidos en la línea de alimentación

Estado de reposo ó de bajo consumo
Son abundantes las situaciones reales de trabajo en que el microcontrolador debe esperar, sin hacer nada, a que se produzca algún acontecimiento externo que le ponga de nuevo en funcionamiento. Para ahorrar energía, (factor clave en los aparatos portátiles), los microcontroladores disponen de una instrucción especial (SLEEP en los PIC), que les pasa al estado de reposo o de bajo consumo, en el cual los requerimientos de potencia son mínimos. En dicho estado se detiene el reloj principal y se congelan sus circuitos asociados, quedando sumido en un profundo sueño. Al activarse una interrupción ocasionada por el acontecimiento esperado, el microcontrolador se despierta y reanuda su trabajo. Para hacernos una idea, esta función es parecida a la opción de Suspender en el menú para apagar el equipo (en aquellos PCs con administración avanzada de energía)

Conversor A/D (CAD)
Los microcontroladores que incorporan un Conversor A/D (Analógico/Digital) pueden procesar señales analógicas, tan abundantes en las aplicaciones. Suelen disponer de un multiplexor que permite aplicar a la entrada del CAD diversas señales analógicas desde las patillas del circuito integrado.

Conversor D/A (CDA)
Transforma los datos digitales obtenidos del procesamiento del computador en su correspondiente señal analógica que saca al exterior por una de las patillas del chip. Existen muchos circuitos que trabajan con señales analógicas.

Comparador analógico
Algunos modelos de microcontroladores disponen internamente de un Amplificador Operacional que actúa como comparador entre una señal fija de referencia y otra variable que se aplica por una de las patitas de la cápsula. La salida del comparador proporciona un nivel lógico 1 ó 0 según una señal sea mayor o menor que la otra. También hay modelos de microcontroladores con un módulo de tensión de referencia que proporciona diversas tensiones de referencia que se pueden aplicar en los comparadores.

Modulador de anchura de impulsos o PWM
Son circuitos que proporcionan en su salida impulsos de anchura variable, que se ofrecen al exterior a través de las patitas del encapsulado.

Puertos digitales de E/S
Todos los microcontroladores destinan parte de su patillaje a soportar líneas de E/S digitales. Por lo general, estas líneas se agrupan de ocho en ocho formando Puertos.
Las líneas digitales de las 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. Otra vez más nos volvemos a meter con unos, ceros y registros paciencia que pronto llega lo mejor.

Puertas 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 redes 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.(Ej: Puerto Serie)
  • 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 por Bosch e Intel para el cableado de dispositivos en automóviles. En EE.UU. se usa el J185O.
Tanto el I2C en televisores, como el Bus CAN en automóviles, fueron diseñados para simplificar la circuitería que supone un bus paralelo de 8 líneas dentro de un televisor, así como para librar de la carga que supone una cantidad ingente de cables en un vehículo.


4.2   Programación.
     Modelo de programación.
Modelo de programación
El modelo de programación es un diagrama de bloques simplificado en el que sólo aparecen los elementos que el programador puede manejar mediante el conjunto de instrucciones.
En el MC68000 se dispone de 16 registros de 32 bits de propósito general (D0-D7, A0-A7), un puntero contador de programa (PC) de 32 bits, y un registro de códigos de condición (CCR) de 8 bits.
Los primeros 8 registros (D0-D7) se utilizan como registros de datos para bytes (8 bits), words (16 bits) y long words (32 bits).
Los registros del segundo bloque de 8 (A0-A7) pueden ser utilizados como punteros de pila o como bases de direcciones. En concreto el registro A7 es adoptado por el microprocesador como puntero de la pila del sistema. Además, los registros de direcciones pueden ser utilizados en operaciones con words y long words.
Todos los registros pueden utilizarse como registros índice.
                                                                       Registro de datos

Registros de direcciones
(USP) Puntero de pila de usuario

Puntero de programa



CCR Registro de códigos de condición    



Esquema de los registros del MC68000.

En estado supervisor se dispone de otros dos registros: Por una parte, el puntero de la pila del supervisor (SSP Supervisor Stack Pointer) que sustituye al USP y por tanto se establece como A7 en modo supervisor. Además se dispone del registro de estado (SR Status Register) que es una ampliación del CCR.

                                                               Puntero de pila de supervisor



Registro de estado   



Estos registros son exclusivos del modo supervisor.

EL REGISTRO DE ESTADO (SR)
Es un registro de 16 bits. El formato del registro de estado es el siguiente:

T

S


I2
I1
I0



X
N
Z
V
C
Estructura del registro de estado (SR).
Esta dividido lógicamente en sus dos bytes, el byte alto denominaod BYTE del SISTEMA, y el byte bajo, REGISTRO de CODIGOS DE CONDICION.
  • BYTE del SISTEMA: sólo puede ser modificado desde el modo supervisor, posee 5 bits significaativos que controlan el funcionamiento del microprocesador. La función específica de cada bit es:
    • T : BIT DE TRAZA, Cuando este bit está a 1, la CPU entra en el modo de ejecución paso a paso. Después de ejecutarse una instrucción se genera una excepción, que dará paso a la correspondiente subrutina. Util para prueba y depuración.
    • S: BIT de ESTADO, Cuando este bit está a 1 el microprocesador opera en modo supervisor, cuando está a 0, en modo usuario. Este bit permite el paso de modo supervisor a modo usuario.
    • I2,I1,I0 : MASCARA DE INTERRUPCION, Estos 3 bits constituyen el nivel de la máscara de interrupción. Esto quiere decir que, para que una interrupción sea atendida, debe ser de un nivel superior al indicaado por estos 3 bits.
  • REGISTRO DE CODIGOS DE CONDICION (CCR): Solo son significativos los 5 bits más bajos. Cada uno de estos bits, llamados "flags", tiene la función de señalar la ocurrencia de un hecho concreto:
  • C : BIT DE ACARREO, Sirve para notificar que el resultado de uan operación aritmética supera el número de bits de los operandos. Depende de la instrucción concreta como se verá afectado el bit C y la interpretación correcta de su valor. Tambiésn se modifica por instrucciones de rotación y desplazamiento. Otras instrucciones lo ponen a 0.
  • V : BIT de DESBORDAMIENTO. Tiene sentido cuando se trabaja con valores numéricos con signo (en complemento a 2 con el bit mas significativo reservado para el signo) y se pone a 1 cuando el resultado de una operación no se puede almacenar en el numero de bits que permite la representación del numero
  • Z : BIT de CERO, Se pone a 1 cuando el resultado de una operación o de una transferencia de datos es cero.
  • N: BIT DE SIGNO, Contiene el valor del bit más significativo del resultado de una operación aritmética ó lógica.
  • X: BIT DE EXTENSION, Utilizado en operaciones de precisión múltiple , toma el valor del bit C, salvo en operaciones de rotación extendida.

 Conjunto de instrucciones.
ADD - Add Binary

ADD

Suma Binaria


Operación

Fuente + Destino -> Destino

Sintaxis en Ensamblador

1- ADD <ea>,Dn
2- ADD Dn,<ea>

Atributos

Tamaños=(Byte, Word, Long)

Descripción

Suma el operando fuente con el operando destino, y guarda el resultado en el operando destino. El tamaño de los operandos puede elegirse entre Byte, Word y Long. El Modo de la instrucción que diferencia entre las dos sintáxis (1 o 2) indica que operando es el fuente y cual es el destino asi como los tamaños de los operandos.

Registro de Códigos de Condición

X   N   Z   V   C
*   *   *   *   *
N: Se pone a 1 (Set) si el resultado es negativo. Se pone a 0 (Cleared) en otro caso.
Z: Se pone a 1 (Set) si el resultado es cero. Se pone a 0 (Cleared) en otro caso.
V: Se pone a 1 (Set) si se genera desbordamiento (overflow). Se pone a 0 (Cleared) en otro caso.
C: Se pone a 1 (Set) si se genera acarreo. Se pone a 0 (Cleared) en otro caso.
X: Toma el mismo valor que el C.

Codificación Binaria

1
1
0
1
Reg. Datos
Modo Operación
Dirección Efectiva
La Suma binaria admite dos Modos :
  1. Modo 1 si se utiliza ADD <dir. efectiva>,Dx
  2. con el Campo Modo Operacion = 000, 001, 010 Según sea BYTE, WORD y LONG.
  1. Modo 2 si se utiliza ADD Dx, <dir. efectiva>
  2. con el Campo Modo Operacion = 100, 101, 110 Según sea BYTE, WORD y LONG.
Los operandos pueden ser tamaño Byte, Word, o Long.

ABCD - Add Decimal with Extend
ADDA - Add Address
ADDI - Add Immediate

ADDI

Suma Inmediata



Operación

Dato Inmediato + Destino -> Destino

Sintaxis en Ensamblador

ADDI #<data>,<ea>

Atributos

Tamaño=(Byte, Word, Long)

Descripción

Suma el dato inmediato al operando destino, y almacena el resultado en el operando destino. El tamaño del operando puede ser Byte , Word o Long. El tamaño del dato inmediato se hace igual al del operando

Registro de Códigos de Condición

X   N   Z   V   C
*   *   *   *   *
N: Se pone a 1 (Set) si el resultado es negativo. Se pone a 0 (Cleared) de otro modo.
Z: Se pone a 1 (Set) si el resultado es cero. Se pone a 0 (Cleared) en otro caso.
V: Se pone a 1 (Set) si se genera desbordamineto (overflow). Se pone a 0 (Cleared) en otro caso.
C: Se pone a 1 (Set) si se genera acarreo. Se pone a 0 (Cleared) en otro caso.
X: Toma el mismo valor que el C.

Codificación Binaria

El campo Tamaño distingue entre :
  1. BYTE = 00
  1. WORD = 01
  1. LONG = 10
Los operandos son tamaño Byte,Word o Long
0
0
0
0
0
1
1
0
Tamaño
Modo
Registro
WORD = Palabra (16 bits) BYTE = Byte ( 8 bits)
Palabra larga = LONG (32 bits)

ADDQ - Add Quick

ADDQ

Suma Rapida



Operación

Dato Inmediato + Destino -> Destino

Sintaxis en Ensamblador

ADDQ #<data>,<ea>

Atributos

Tamaño=(Byte, Word, Long)

Descripción

Suma el dato inmediato al operando destino y queda el resultado en destino. El rango de valores del dato inmediato es de 1 a 8. El tamaño de la operación puede especificarse como Byte, Word o Long.
En operaciones de tamaño Word o Long está también permitido usar registros de direcciones, en cuyo caso el registro de códigos de condición no se ve afectado. Cuando se suma el registro de direcciones, se emplea el tamaño total del registro de direcciones independientemente del tamaño de operación.

Registro de Códigos de Condición

X   N   Z   V   C
*   *   *   *   *
N: Se pone a 1 (Set) si el resultado es negativo. Se pone a 0 (Cleared) de otro modo.
Z: Se pone a 1 (Set) si el resultado es cero. Se pone a 0 (Cleared) en otro caso.
V: Se pone a 1 (Set) si se genera desbordamineto (overflow). Se pone a 0 (Cleared) en otro caso.
C: Se pone a 1 (Set) si se genera acarreo. Se pone a 0 (Cleared) en otro caso.
X: Toma el mismo valor que el C.

Los códigos de condición no se alteran si el operando destino es un registro de direcciones

Codificación Binaria

1
1
0
0
Dato
0
Tamaño
Dir. Efectiva
Modo
Registro
El campo Tamaño distingue entre :
  1. BYTE = 00
  1. WORD = 01
  1. LONG = 10
La operación puede ser tamaño Byte,Word o Long
   Modos de direccionamiento.


La codificación de instrucciones del 68000 contiene dos tipos de datos: la operación a realizar y la localización de los operandos. Esta localización de operandos puede hacerse de una de las tres siguientes formas:

'Especificación de registro'. En la codificación de la instrucción hay un campo en el que se determina un número de registro.
'Dirección efectiva'. Este sistema se verá detalladamente a continuación.
'Referencia implícita'. Por definición de la operación a realizar está implícito el uso de determinados registros.
Los 14 modos de direccionamiento se agrupan en seis tipos básicos:
1.-Direccionamiento directo a registro
* Directo a registro de datos
* Directo a registro de direcciones
2.- Direccionamiento absoluto
* Absoluto corto
* Absoluto largo
3.- Direccionamiento relativo al puntero de programa
* Relativo con desplazamiento
* Relativo con índice y desplazamiento
4.-Direccionamiento indirecto
* Indirecto
* Indirecto con postincremento
* Indirecto con predecremento
* Indirecto con índice y desplazamiento
5.- Direccionamiento inmediato
* Inmediato
* Inmediato rápido
6.- Direccionamiento implícito
* Registro implícito

Modos de direccionamiento.

La codificación de instrucciones puede ocupar desde una word hasta cinco. En la primera word se especifica la operación a realizar y el tamaño de los operandos.


Cuando no se utiliza direccionamiento por dirección efectiva, la word de operación puede llevar también la especificación de registros. En caso de utilizar el método de dirección efectiva se necesitan otras words de extensión que en alguna ocasión pueden ser hasta cuatro.
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0

word de operación
( especifica la operación y el modo )
operando inmediato o extensión de dirección efectiva de origen
( si es necesario, una o dos words )
dirección efectiva del destino
( si es necesario, una o dos words )
Formato de las instrucciones

La mayoría de los direccionamientos en el 68000 se realizan mediante el método de 'dirección efectiva'. Este método consiste en codificar dentro de la word de operación el tipo de direccionamiento a usar según la pauta de la siguiente figura.



Codificación de la dirección efectiva
Codificación:
MODO DE DIRECCIONAMIENTO
Notación
MODO
Registro

Directo por registro de datos.
Dn
000
número

Directo por registro de direcciones
An
001
número

Indirecto por registro de direcciones.
(An)
010
número

idem con postincremento.
(An)+
011
número

idem con predecremento.
-(An)
100
número

idem con desplazamiento.
(d16,An)
101
número

idem con índice y desplazamiento.
(d8,An,Xm)
110
número

Absoluto corto
xxx.W
111
000

Absoluto largo
xxx.L
111
001

PC con desplazamiento
(d16,PC)
111
010

PC con indice y desplazamiento
(d8,PC,Xn)
111
011

Inmediato
#<dato>
111
100

Direccionamientos por dirección efectiva




   Lenguaje ensamblador.
Estructura general de un programa en ensamblador.
En una programa escrito en lenguaje ensamblador, además de las 35 instrucciones que
interpreta el procesador también se colocan directivas, que son comandos para realizar ciertas
operaciones con el programa. A continuación se comentan las partes que generalmente hay en
un programa:
1º. Modelo de procesador y sistema de numeración.
Los programas comienzan con la directiva list que referencia el modelo de microcontrolador.
También se suele especificar el tipo de numeración que se empleará con la directiva radix.
Lo usual es emplear el sistema hexadecimal, en el que los valores se expresan precedidos
de “0x”. En los ejemplos que se desarrollarán a lo largo del tema comenzaremos el
programa ensamblador con las siguientes directivas (detrás del punto y coma se pueden
añadir comentarios):
List p=16F84 ;Se utiliza el microcontrolador PIC16F84
Radix hex ; Se usará el sistema hexadecimal
2º. Variables.
Las posiciones de la memoria de datos se utilizan para guardar operandos y resultados,
además de almacenar registros especiales.
Para que al programador le sea más sencillo confeccionar el programa, en lugar de hacer
referencia a las posiciones de la memoria donde se encuentran los datos que va a emplear,
a cada una de estas posiciones se le asocia un nombre. La directiva equ relaciona un
nombre con la dirección que se asigna, así el programador trabaja con nombres y el
compilador traduce automáticamente éstos a las direcciones correspondientes. Por ejemplo
el registro que contiene la información de estado se encuentra en la dirección 0x03, el
puerto de entrada A en 0x05, etc.. Si queremos emplear nombres de variables para estas
direcciones de memoria escribiríamos:
ESTADO equ 0x03 ;La etiqueta “ESTADO” está asociada a la dirección 0x03
PUERTAA equ 0x05 ;La etiqueta “PUERTAA” está asociada a la dirección 0x05
3º. Origen del programa.
Antes de comenzar a escribir instrucciones máquina debe definirse la dirección de la
memoria de programa a partir de la cual se desea comenzar a cargar el programa. Para ello
se emplea la directiva org. En los PIC el origen del programa siempre se pone en la
dirección 0x00 porque es donde comienza a ejecutarse el programa después de hacer un
reset. Definiremos el origen de la siguiente manera:
org 0x00 ;Inicio de programa
Cuando el programa maneja interrupciones, no se comienza a cargar el programa desde la
dirección 0x00, porque si se genera una interrupción el programa que la atiende comienza
en la dirección 0x04 (vector de interrupción). En este caso lo que se suele hacer es poner
en la dirección 0x00 un salto a una dirección de la memoria de programa posterior al vector
de reset, por ejemplo saltaríamos a una posición etiquetada como INICIO que se encuentra
en la dirección 0x05.

org 0x00 ;La siguiente instrucción estará al inicio de la memoria
goto INICIO ;Salta a la dirección etiquetada con INICIO
org 0x05 ;La siguiente instrucción estará en la dirección 0x05
INICIO
-------
-------
end
4º. Cuerpo del programa y final.
Tras indicar la dirección donde se comenzará a cargar el programa, sigue el cuerpo del
mismo compuesto por las instrucciones máquina y los operandos de éstas.
El código se estructura en columnas. La primera columna se utiliza para las etiquetas que
se emplean para hacer referencia a partes del programa y nos permiten realizar saltos a
estas partes (como INICIO en el ejemplo anterior). Las siguientes columnas contienen el
campo de instrucciones, el campo de datos y el campo de comentarios. Los comentarios
comienzan con ; ).
Al final del programa se coloca la directiva end.

4.3 APLICACIONES

COMO SISTEMA INDEPENDIENTE
Un microcontrolador dispone normalmente de los siguientes componentes:
  • Procesador o UCP (Unidad Central de Proceso).
  • Memoria RAM para Contener los datos.
  • Memoria para el programa tipo ROM/PROM/EPROM.
  • Líneas de E/S para comunicarse con el exterior.
Diversos módulos para el control de periféricos (temporizadores, Puertas Serie y Paralelo, CAD:
  • Generador de impulsos de reloj que sincronizan el funcionamiento de todo el sistema
  • Conversores Analógico/Digital, CDA: Conversores Digital/Analógico, etc.)
 COMO SUBSISTEMA DE UNA COMPUTADORA
El microprocesador es un circuito integrado que contiene la Unidad Central de Proceso (UCP), también llamada procesador, de un computador. La UCP está formada por la Unidad de Control, que interpreta las instrucciones, y el Camino de Datos, que las ejecuta.
Las patitas de un microprocesador sacan al exterior las líneas de sus buses de direcciones, datos y control, para permitir conectarle con la Memoria y los Módulos de E/S y configurar un computador implementado por varios circuitos integrados. Se dice que un microprocesador es un sistema abierto porque su configuración es variable de acuerdo con la aplicación a la que se destine. (Figura 1.1.)
Figura 1.1. Estructura de un sistema abierto basado en un microprocesador. La disponibilidad de los buses en el exterior permite que se configure a la medida de la aplicación.
Si sólo se dispusiese de un modelo de microcontrolador, éste debería tener muy potenciados todos sus recursos para poderse adaptar a las exigencias de las diferentes aplicaciones. Esta potenciación supondría en muchos casos un despilfarro. En la práctica cada fabricante de microcontroladores oferta un elevado número de modelos diferentes, desde los más sencillos hasta los más poderosos. Es posible seleccionar la capacidad de las memorias, el número de líneas de E/S, la cantidad y potencia de los elementos auxiliares, la velocidad de funcionamiento, etc. Por todo ello, un aspecto muy destacado del diseño es la selección del microcontrolador a utilizar.

No hay comentarios:

Publicar un comentario