[DETRI]
SISTEMAS MICROPROCESADOS ESCUELA POLITECNICA NACIONAL [Escribir el nombre del autor]
12
CAPÍTULO PRIMERO ASPECTOS GENERALES DE LOS MICROCONTROLADORES Objetivo del curso: Los estudiantes entienden los fundamentos de los Sistemas Microprocesados y se encuentran en condiciones de aplicar los conocimientos en el diseño de soluciones sobre la base de los circuitos microcontroladores que pueden ser emplear para resolver problemas de carácter práctico, al saber los conceptos y herramientas para el diseño del software y hardware. 1.1.
Aspectos Generales.
En los sistemas digitales existen básicamente dos maneras de resolver un problema, mediante el diseño y construcción de un circuito para la solución del mismo: utilizando circuitos integrados de larga escala de integración (LSI), mediana (MSI) y pequeña (SSI) escala de integración, que en la actualidad se denominaría utilizando circuitos discretos o la otra alternativa que sería utilizando dispositivos que trabajan sobre la base de un programa almacenado, como es el caso de los microprocesadores y microcontroladores, que corresponden a circuitos de muy alta (VLSI) y ultra alta (ULSI) escala de integración. En el caso particular de los microcontroladores, estos circuitos incluyen dentro de un mismo encapsulado (CI), en los distintos modelos disponibles, la unidad central de procesamiento, memoria de datos, memoria de programa, pórticos de entrada y salida, y una amplia variedad de otros dispositivos internos, son circuitos que pueden ser fácilmente programados para resolver problemas de muy diversa índole. Dentro de las ventajas que ofrece el diseño utilizando microcontroladores, a diferencia del diseño con otro tipo de componentes digitales (discretos), es que la mayoría de las modificaciones requeridas para ampliar sus características u opciones se las puede realizar simplemente cambiando una parte del programa de control que ejecuta el microcontrolador y eventualmente con pequeños cambios en las etapas circuitales de entrada de datos y salida de actuación o indicación, que por el contrario en el diseño tradicional, utilizando componentes denominados discretos, cualquier cambio por pequeño que este sea obliga a realizar un nuevo diseño y la construcción de un nuevo circuito. Básicamente un microcontrolador corresponde a un circuito integrado que dispone en su interior de las unidades funcionales de una computadora, esto es: la Unidad Central de Procesamiento (CPU), memoria de programa, memoria de datos, unidades de E/S y varios circuitos denominados periféricos internos, razón por la cual se lo refiere como una computadora completa en un solo circuito integrado; sin embargo, hay que tener presente que su orientación es distinta y por lo tanto sus aplicaciones también son diferentes de un microprocesador y limitadas al compararlo con una computadora personal. Los microcontroladores son circuitos digitales de muy alta aceptación en el mercado y se los puede encontrar aplicados para facilitar casi todo tipo de actividad humana, entre SISTEMAS MICROPROCESADOS Ing. Oswaldo Buitrón B
1-2
otras aplicaciones en electrodomésticos como lavarropas, hornos microondas, teléfonos, equipos de audio, etc y en casi todo equipo electrónico profesional, en la mayoría de los casos forman parte del dispositivo que controlan. En dependencia de la aplicación que se vaya a dar al circuito microcontrolador, se debe escoger de muchos fabricantes y de cada uno a su vez una muy amplia variedad de circuitos con distintas características que típicamente pueden incluir: circuito de reloj, memoria SRAM y EEPROM de datos, memoria de programa UVEPROM o FLASH, convertidores de analógico a digital, circuitos de temporización, circuitos de comunicación serial UART o USART, buses de interfaz serial especializados, entre otros. Como una ilustración se presenta en la figura N° 1.1 un circuito que incluye un microcontrolador de Atmel.
Figura N° 1.1. Circuito con un microcontrolador ATmel. En el año 1971 el fabricante Intel lanzó al mercado el primer circuito microprocesador, denominado 4004, ver figura N° 1.2, el mismo que constituye el hito de un nuevo tipo de diseño con circuitos que funcionan sobre la base de un programa almacenado, que en la solución incluye unos pocos circuitos adicionales. Desde ese entonces se han ido presentando al mercado una gran cantidad de circuitos microprocesadores y microcontroladores, con estos últimos se simplificó aún más el diseño de las soluciones electrónicas de carácter práctico.
Figura N° 1.2. Microprocesador Intel 4004 SISTEMAS MICROPROCESADOS Ing. Oswaldo Buitrón B
1-3
Como se indicó, en la actualidad es posible encontrar aplicaciones de los microcontroladores en casi todas las actividades que realiza el ser humano, en vista a las potencialidades que sobre la base de sus múltiples circuitos internos ofrecen estos circuitos microcontroladores, características a las que se complementan con la posibilidad de ampliación del circuito con elementos externos, para cuyo propósito los pines del circuito permiten la comunicación con el exterior, con distintos dispositivos, para cumplir el propósito esperado. 1.2.
El computador digital.
Es un dispositivo electrónico digital diseñado para poder realizar el procesamiento de información, el computador digital se encuentra formado por una serie de circuitos y demás componentes y dispositivos relacionados, los mismos que posibilitan la ejecución de una amplia variedad de órdenes que son establecidas por el usuario, al conjunto de esas órdenes llamadas también instrucciones se le denomina un programa, cuyo propósito es la aplicación o utilización del computador para resolver un problema en particular. Como puede observarse en las figuras N° 1.3 y Nº 1.4, la computadora, en términos generales, dispone de varias unidades o etapas circuitales internas y en el caso particular del elemento central o unidad central de procesamiento, que constituye su elemento inteligente, a este se le conoce como un microprocesador, que con sus respectivas diferencias también puede ser un microcontrolador, a los que se les ha agregado otras etapas, el detalle de estos dispositivos se puede observar en las figuras antes indicadas.
Figura N° 1.3. Computador digital Fuente: Material del curso del Ing. Jaime Velarde G. El computador para poder realizar sus tareas internas y ejecutar el programa, dispone además de los siguientes medios para realizar la comunicación o intercambiar información entre sí, a los cuales se los conoce como buses, que corresponden a un grupo de conductores que permiten efectivamente llevar la información entre los distintos bloques o etapas de la computadora digital. SISTEMAS MICROPROCESADOS Ing. Oswaldo Buitrón B
1-4
Es importante destacar que en el caso de los microcontroladores en la actualidad, no están definidos los buses que se indican a continuación en los pines del encapsulado del circuito, ya que estos pines se destinan básicamente a las aplicaciones de entradas y/o salidas de propósito general y alternativamente a los dispositivos periféricos internos del microcontrolador. La razón para no disponer de los buses en los pines están dadas en la mayor integración que sea posible y porque el objetivo fundamental es no desperdiciar líneas de E/S que son uno de los recursos más importantes de los microcontroladores.
ROM Cs
RAM Cs
SALIDAS (O) Bus de direcciones
μC μP CPU
ENTRADAS (I) Bus de control
DEC BIN 3/8
Figura N° 1.4. Microcomputador Bus de datos. Se encuentra conformado por un conjunto de líneas físicas de carácter bidireccional, que se aplican para el envío de instrucciones o datos, entre el microprocesador o microcontrolador y los demás elementos del sistema. Se lo conoce también como el bus externo de datos y el número de líneas que posee es generalmente igual al número de bits que procesa la ALU. Bus de direcciones. Son líneas físicas unidireccionales que parten del microprocesador hacia la memoria y demás dispositivos de entrada/salida (E/S), sirven para enviar la dirección de la localidad o elemento seleccionado para la transferencia de datos con la unidad central de procesamiento, el número de líneas o bits que posee este bus, determina la capacidad máxima de acceso a memoria que tiene el microprocesador o microcontrolador según el caso. Bus de control. Corresponden a un conjunto de líneas físicas unidireccionales, unas que terminan y otras que parten del microprocesador o microcontrolador, sirven para enviar señales que actúan sobre la unidad de control o que parten de esta para dar las órdenes necesarias para controlar a los demás elementos que conforman la microcomputadora, o para informar del estado en que se encuentra la unidad de control, permitiendo de esta manera coordinar el funcionamiento de todo el sistema. SISTEMAS MICROPROCESADOS Ing. Oswaldo Buitrón B
1-5
Microprocesador. A la construcción de la unidad de control y la unidad de lógica y aritmética (ALU) en una sola pastilla de semiconductor o circuito integrado, es a lo que se conoce como microprocesador (uP). Microcontrolador. El desarrollo en la tecnología de fabricación de circuitos integrados permite en la actualidad disponer de circuitos integrados de ultra alta escala de integración, lo que ha permitido que además de la CPU, en la misma pastilla de semiconductor se construyan otras unidades o bloques funcionales como la unidad de memoria de datos y de programa, sistemas de entrada/salida y circuitos periféricos internos desde unidades elementales hasta sistemas complejos, a estos circuitos se les conoce como microcontroladores (uC) o microcomputadoras en un solo circuito integrado. Estos circuitos difieren de los microprocesadores en que en sí ya son una microcomputadora y en el peor de los casos requieren de un mínimo de circuitos externos. Memorias. Los dispositivos microcontroladores disponen internamente de distintos tipos de memorias y de distinta capacidad, lo cual depende del modelo que se requiere para la aplicación en la solución de un problema en particular, sin perder de vista que siendo un recurso definitivamente es limitado y en ningún caso, al menos por ahora, se dispone por ejemplo de capacidades en gigabytes. Los circuitos en referencia disponen de distintos tipos de memoria tanto para datos como para el programa y además utilizan diferentes tecnologías, el uso de la memoria en términos generales depende de las características de la aplicación, a continuación se describen algunos de los dispositivos más comunes: Circuitos con memoria ROM grabada en fábrica. Es una memoria no volátil de sólo lectura, cuyo contenido es grabado durante la fabricación del circuito integrado. La máscara a ser utilizada para la grabación de la información corresponde a la forma como se fabrican los circuitos integrados. El alto precio del diseño de la máscara sólo hace aconsejable el empleo de los microcontroladores, con este tipo de memoria, cuando se requieren varios miles de unidades, para disponer de un costo final razonable. Circuitos con memoria PROM OTP. Es una memoria no volátil de sólo lectura "programable una sola vez" por el usuario, OTP (One Time Programmable). El usuario puede programar el circuito con un grabador controlado por un programa desde un computador. La versión OTP es recomendable para prototipos y diseños que no requieren de cambios posteriores. Circuitos con memoria UVEPROM (Ultra Violet Erasable Programmable Read OnIy Memory), son dispositivos que pueden programarse varias veces, mediante el borrado por medios fotoeléctricos. La grabación se realiza, con la ayuda de un equipo especializado y un programa en un computador. Su utilización ha disminuido SISTEMAS MICROPROCESADOS Ing. Oswaldo Buitrón B
1-6
significativamente al ser circuitos sustituidos por memorias de tecnología más flexible y más barata como las memorias Flash. Circuitos con memoria EEPROM (Electrical Erasable Programmable Read OnIy Memory), son memorias de sólo lectura, programables y borrables eléctricamente. Existe la tendencia de incluir una memoria EEPROM de pequeña capacidad en los circuitos microcontroladores, para guardar especialmente datos o parámetros que son requeridos para la operación del circuito. Hay que tener presente que este tipo de memoria es relativamente lenta. Circuitos con memoria FLASH, la memoria Flash constituyen la tecnología más avanzada al momento y se ha convertido en poco tiempo en una de las más populares tecnologías de almacenamiento de datos, por su gran capacidad de almacenamiento, mucho más rápida que otros dispositivos para el mismo propósito, porque puede retener datos aun cuando el equipo se encuentre apagado y además trabaja a las mismas tensiones que el microcontrolador; por otra parte están diseñadas con componentes que trabajan con niveles muy bajos de fuentes de polarización; este tipo de memoria se la destina normalmente al almacenamiento de los programas. Circuitos con memoria SRAM (RAM estáticas), son memorias que permiten operaciones de lectura y escritura mientras al circuito se encuentra aplicada energía. Las SRAM de tecnología MOS, son las más utilizadas porque tienen capacidades mucho mayores con menor consumo de potencia. La memoria RAM está destinada al almacenamiento de información a ser utilizada por la CPU para realizar cálculos u otro tipo de operaciones lógicas. En el espacio de direcciones de memoria RAM se ubican además los registros de trabajo de la unidad de procesamiento y los de configuración y trabajo de los distintos periféricos del microcontrolador. Es por ello que en la mayoría de los casos, aunque se tenga un espacio de direcciones de un tamaño determinado, la cantidad de memoria RAM de que dispone el programador para almacenar sus datos es menor que la que puede direccionar el procesador. Cuando se requiere aumentar la cantidad de memoria de datos, se debería acoplar dispositivos de memoria externa, esta forma de expandir la memoria de datos está determinada, en la mayoría de lo casos, por el tipo de instrucciones disponibles para el microcontrolador. 1.2.1.
La Unidad Central de Proceso o CPU.1
La unidad central de procesamiento (CPU), llamada simplemente procesador puede estar resuelta sobre la base de un microprocesador y a su vez es el elemento más importante de un microcontrolador, constituye el verdadero cerebro de un sistema microprocesado y es la que determina sus principales características, tanto a nivel de hardware como de software. El propósito de esta etapa del circuito es constituirse en el elemento de control y coordinación de todas las operaciones que puede realizar el sistema. Para poder ejecutar sus actividades se encarga de direccionar la memoria de programa donde están las 1
Este subcapítulo es una adaptación de información tomada de: www.mundopc.net/ginformatico/p
SISTEMAS MICROPROCESADOS Ing. Oswaldo Buitrón B
1-7
instrucciones, así como recibir el código de operación de la instrucción en curso, su decodificación y la ejecución de la operación que implica la instrucción, así como la búsqueda de los datos (llamados operandos) y el almacenamiento del resultado. A un computador se lo define como un sistema electrónico digital, capaz de resolver problemas de forma muy rápida sobre la base de la ejecución de instrucciones, que integran un programa; un circuito básico de las partes o bloques que lo componen se presenta en la figura N° 1.5, con la finalidad de que se tenga una idea preliminar de cómo trabaja el mismo.
Unidad de Memoria ROM │ RAM
CK
Unidad De Control
Unidad de Logical Aritmetica (ALU)
Unidad de Entrada │ Salida (I\ O)
PERIFERICOS
Figura N° 1.5 Diagrama en bloques de un computador 1.2.2. Unidad de control. Es la etapa circuital que se encarga de decodificar o interpretar la instrucción que se encuentra en curso de ejecución; es decir, reconoce de qué instrucción se trata, para establecer el tipo de operaciones a ser ejecutadas. Cuando el microcontrolador o microprocesador lee de la memoria una instrucción, el código de esa instrucción es transferido a esta unidad, por esta forma de trabajo se considera a esta unidad como una de las más importantes en el microcontrolador. Una vez realizada la decodificación, pasa a coordinar a los distintos circuitos que se encuentran involucrados en la ejecución de la instrucción a través de las señales necesarias y en un orden y temporización determinados. Es decir, es la unidad encargada de dar las órdenes necesarias y coordinar a las diversas partes del microcontrolador para poder ejecutar cada una de las instrucciones. En otras palabras se puede decir, que la unidad de control tiene como funciones básicas las siguientes:
Realizar operaciones de lectura de las instrucciones de la memoria de programa. Decodificar o interpretar las instrucciones. Coordinar la ejecución de las instrucciones.
Para realizar su función, la unidad de control dispone entre otros de los siguientes elementos o registros:
Contador de programa Registro de instrucciones
SISTEMAS MICROPROCESADOS Ing. Oswaldo Buitrón B
1-8
Decodificador de instrucciones Circuito de temporización Selección de circuitos
a)
Contador de programa. Este registro, en la generalidad de circuitos microcontroladores, contiene la dirección de memoria de la próxima (siguiente) instrucción a ser ejecutada. Al iniciar la ejecución de un programa su contenido es puesto en el bus de direcciones y generalmente corresponderá a la dirección de la primera instrucción del programa, luego de forma automática va incrementando su valor en uno, o en el número de palabras que tenga la instrucción a ser ejecutada, con excepción de que la instrucción que se está ejecutando sea de salto, en cuyo caso el contador de programa tomará la dirección de la instrucción que se tenga que ejecutar a continuación, una vez ejecutado el salto.
b)
Registro de instrucciones. Contiene el código de operación de la instrucción que se está ejecutando en ese momento y que fue traída desde la memoria de programa. El código de operación (OPCOD) indica qué tipo de operación se va a realizar y eventualmente los operandos que son necesarios (datos sobre los que actúa la instrucción).
c) Decodificador de instrucciones. Es el circuito encargado de interpretar el código de operación de la instrucción en curso, que se encuentra en el registro de instrucciones y generar las órdenes elementales (microórdenes), sobre la base de la información que contiene la ROM, a la que se le conoce como firmware. d) Circuitos de temporización. Son los encargados de proporciona una sucesión de señales a una frecuencia establecida por el reloj interno, que sirven para determinar los instantes en que han de actuar los distintos circuitos involucrados en la ejecución de la instrucción. d) Selección de circuitos. Es el registro encargado de generar las señales necesarias que en forma sincronizada se aplican al resto de elementos y que hacen que se vaya ejecutando paso a paso la instrucción cuyo código está cargado en el registro de instrucción. En la figura Nº 1.6, se pueden observar los circuitos que se está describiendo y que forman parte de un microprocesador en general. 1.2.3. Unidad de lógica y aritmética (ALU). La ALU es el bloque funcional del microcontrolador encargada de ejecutar todas aquellas operaciones matemáticas y de lógica que puede realizar, de acuerdo con su set de instrucciones, que entre otras pueden ser: suma, resta y operaciones lógicas típicas del álgebra de Boole. Estas operaciones se realizan a través de los buses internos que comunica con la unidad de control y registros de datos. La ALU está formada a su vez por los siguientes elementos o circuitos:
Circuito de la ALU
SISTEMAS MICROPROCESADOS Ing. Oswaldo Buitrón B
1-9
Registro temporal Registro acumulador Registro de banderas
a) Circuito de la ALU. Contiene los circuitos electrónicos digitales necesarios para la realización de las operaciones tanto de aritmética, como de lógica con los datos procedentes de los registros de entrada (operandos). Este circuito dispone de las entradas requeridas para seleccionar la operación que debe realizar. b)
Registro temporal. Es un circuito en el que se almacenan los datos también conocidos como operandos, que forman parte de la instrucción y que se encuentran en estos registros antes de la realización de la operación por parte del circuito de la ALU.
8 Bus de Datos
Buffer del Bus de Datos
0
7 Registro de Pila STACK (SP)
Acumulador
Registro Temporal C, AC,OVP,Z
Registro de Instrucciones
Registro de Proposito General
ALU
Registro de Bandera Decodificador De Instrucciones
Circuito de Temporizacion Y control
Registro Indice
15 Seleccion de Registros
0 Contador de Programa (PC)
Buffer del Bus de Direcciones
Bus de 16 Direcciones
Figura N° 1.6. Estructura de un microprocesador
SISTEMAS MICROPROCESADOS Ing. Oswaldo Buitrón B
1-10
c) Registro acumulador. Este registro contiene inicialmente uno de los operandos que intervienen en la operación de aritmética o lógica y una vez ejecutada la misma en este circuito se guarda el resultado, de acuerdo con el fabricante existen circuitos que disponen de más de un acumulador y otros en los cuales no se dispone de acumuladores y las operaciones se realizan con los registros denominados de propósito general. d) Registro de banderas. Se trata de un registro en el que los distintos bits que lo conforman sirven para indicar las condiciones que se dieron en la última operación realizada, por ejemplo, si el resultado fue cero, si hubo carry, si fue negativo, etc; algunos fabricantes le denominan registro de estado. 1.3.
El microcontrolador.
Existen dos tipos de arquitecturas de solución de los microcontroladores, las cuales definen dos formas de trabajo diferentes para la memoria de datos y memoria de programa, son las siguientes: La arquitectura Von Neumann, conocida como CISC (Computadores con un conjunto de Instrucciones Complejo), se caracteriza por estar estructurada sobre la base de un sistema de buses comunes a las distintas etapas circuitales, tanto para direcciones, así como para datos y control, como puede observarse en la figura Nº 1.7., lo cual determina un trabajo con los datos e instrucciones del programa a través de ellos. Estos circuitos disponen de un amplio repertorio de instrucciones que requirieren de varios ciclos de reloj para su ejecución.
Figura Nº 1.7. Arquitectura Von Neumann Fuente: Tomado del poligrafiado del Ing. Jaime Velarde La otra arquitectura es la denominada Harvard, conocida también como RISC (Computadores con un conjunto de Instrucciones Reducido). En estos circuitos la generalidad de las instrucciones requieren de un ciclo de reloj para su ejecución. Por otra parte, la optimización del hardware y mayor eficacia del software se lo ha conseguido por medio del manejo independiente de las dos memorias principales, una que contiene las instrucciones del programa y otra sólo de datos y cada una con buses independientes, como se puede ver en la figura Nº 1.8., mediante esta arquitectura es posible realizar operaciones de acceso (lectura o escritura) simultáneamente en ambas SISTEMAS MICROPROCESADOS Ing. Oswaldo Buitrón B
1-11
memorias; además, la ejecución de las instrucciones se realiza mediante la metodología conocida como pipeline, que permite que mientras se esta buscando una instrucción, en ese mismo ciclo de reloj se está ejecutando otra instrucción. 1.3.1. Recursos Especiales del Microcontrolador. Cada fabricante posee numerosas versiones de circuitos que se desarrollan sobre una arquitectura básica de un microcontrolador. En algunas familias de circuitos se amplía las capacidades de las memorias, en otras se incorporan nuevos recursos como temporizadores, conversores, etc, en otras se reduce las características al mínimo para aplicaciones muy simples, o se reduce el tamaño del circuito para aplicaciones donde el espacio es muy limitado, etc. A este respecto cabe destacar, como ya se indicó, que un microprocesador corresponde a una CPU construida en un solo circuito integrado, mientras que un microcontrolador es un circuito integrado que en una sólo pastilla contiene la CPU, memoria de programa y datos, circuitos de E/S y varios recursos adicionales.
Figura Nº 1.8. Arquitectura Harvard. Fuente: Tomado del poligrafiado del Ing. Jaime Velarde
Puntero de Pila. El Stack o Pila, es un área en la memoria de datos cuyo propósito es disponer de un espacio de memoria para salvar temporalmente datos, especialmente en el trabajo del circuito con subrutinas e interrupciones, para esto se dispone de un registro que permite conocer en que parte de este bloque de memoria se encuentra la información, entonces el registro puntero contiene la dirección de la memoria de datos que corresponde a la última dirección ocupada en la pila o stack. Registro Índice. Los registros índice tienen como finalidad facilitar los acceso a la memoria, sea esta de datos o de programa, para esto un registro contiene una dirección de memoria, sea esta la memoria de datos o la memoria de programa y es utilizado como puntero para hacer más flexible el trabajo con tablas de datos, algunos circuitos poseen varios registros índices, también conocidos como punteros por su aplicación. SISTEMAS MICROPROCESADOS Ing. Oswaldo Buitrón B
1-12
Puertos de Entrada y Salida. La principal utilidad, ventaja e importancia de los pines que posee un circuito microcontrolador, esta orientada a soportar las líneas de E/S que comunican al computador interno con los periféricos exteriores y, según los controladores de periféricos que posea cada modelo de microcontrolador, se destinan a proporcionar el soporte a las señales de entrada, salida y control. Todos los microcontroladores destinan algunos de sus pines a soportar líneas de E/S de tipo digital. Por lo general, estas líneas se agrupan de ocho en ocho formando los denominados Puertos o Pórticos. Las líneas digitales de los Pórticos pueden configurarse como Entrada o como Salida, cargando un 1 ó un 0 en el bit correspondiente de un registro destinado a su configuración. Es importante tener en cuenta que existen puertos paralelos (para especificar varias líneas o pines) y puertos seriales. Modulador de Ancho de Pulsos o PWM. Son circuitos internos de los microcontroladores que proporcionan en su salida señales de frecuencia variable, que se encuentran disponibles al exterior a través de los pines del encapsulado. Dichas señales son útiles para sistemas de control de potencia, como por ejemplo motores, sin embargo hay un grupo de aplicaciones que pueden realizarse con este periférico, dentro de las cuales podemos citar: inversión DC/AC, conversión digital analógica D/A, control regulado de luz (dimming) entre otras.
Puertos de Comunicación. Para que el circuito microcontrolador se pueda comunicar con otros dispositivos, otros buses de microprocesadores, buses de sistemas, buses de redes y poder adaptarlos con otros elementos o dispositivos bajo otras normas y protocolos es necesario que el mismo disponga de unidades o puertos de comunicación, los mismos que normalmente son del tipo serial. Algunos modelos de microcontroladores, que dependen del fabricante en particular, disponen de recursos que permiten directamente esta tarea, entre los que se pueden señalar:
UART, adaptador de comunicación serie asincrónica. USART, adaptador de comunicación serie sincrónica y asincrónica. Puerto paralelo esclavo para poder conectarse con los buses de otros microprocesadores. USB (Universal Serial Bus). Interfase SPI, que corresponde a un puerto serie sincrónico.
Periféricos. En términos generales se los conoce como dispositivos auxiliares, los mismos que se encargan de acondicionar las señales digitales de la computadora y el mundo exterior o viceversa, dentro de ellos se pueden citar a los monitores o pantallas de video, los visualizadores o displays, las impresoras, los modems, los teclados, etc. Al respecto SISTEMAS MICROPROCESADOS Ing. Oswaldo Buitrón B
1-13
cabe destacar que de acuerdo con cada fabricante se define también como periféricos a los circuitos internos que permiten realizar determinadas tareas, tales como la conversión de analógico a digital, temporización, entre otros.
1.4.
El microcomputador.
Un microcomputador puede contener como su elemento central a un microprocesador o un microcontrolador, en este último caso difiere de una CPU normal, debido a que ya de hecho es una computadora completa en vista a que contiene internamente las distintas unidades de un computador, con las limitaciones del caso, razón por la cual es más fácil estructurar un computador en base a un microcontrolador, ya que se requiere para su funcionamiento de un mínimo número de circuitos externos adicionales. Es importante destacar que es una máquina de propósito general, lo que significa que puede realizar tareas muy diversas, de acuerdo a las posibilidades que brinden los lenguajes de programación y el hardware. Un computador en base a un microcontrolador, es una máquina electrónica que recibe y procesa datos para convertirlos en resultados, puede ejecutar con exactitud, rapidez y de forma automática una gran variedad de programas que son ordenados, organizados y sistematizados en función de una aplicación práctica por quien lo programó, los sistemas que están conformados sobre la base de un microcontrolador se aplican a la resolución de problemas preferentemente orientados al control.
1.5.
Desarrollo de un programa.
Los sistemas digitales que trabajan sobre la base de un microprocesador o microcontrolador, requieren para su funcionamiento previamente del desarrollo de un programa que es el que va a realizar el control de la operación general del sistema, es decir, se requiere desarrollar dicho programa el mismo que una vez que ha sido totalmente establecido, es almacenado en la memoria precisamente denominada de programa, de donde es buscado por el microprocesador para ejecutar las funciones y tareas deseadas o programadas. Con el diseño de un programa se busca aplicar un sistema en base a un circuito microcontrolador para encontrar la solución a un determinado problema, el diseño, estructuración y desarrollo del programa involucra normalmente una serie de etapas, como se ilustra en la figura N° 1.9, y que en forma resumida se presentan una explicación a continuación. a) Planteamiento del problema. El punto de partida para el desarrollo del programa corresponde a la definición del problema, esto es lo primero y requiere darle la importancia del caso dentro de los pasos de todo el proceso, ya que permite conocer y delimitar el alcance del resultado que se desea lograr, por tanto debe ser un planteamiento muy claro y concreto de lo que se busca. Puede asegurarse que una definición incorrecta del problema no va a permitir que se encuentre la solución requerida o que el resultado que se logre sea insatisfactorio, SISTEMAS MICROPROCESADOS Ing. Oswaldo Buitrón B
1-14
suele decirse que la correcta definición del problema, ya es por lo menos la mitad de su solución. b) Algoritmo de solución. Se conoce como un algoritmo a un conjunto de operaciones y procedimientos que deben seguirse para resolver un problema en particular, dichas operaciones o actividades se encuentran establecidas en un orden, que es en el cual se deben realizar. El algoritmo es importante para la programación, su diseño o estructuración requiere de la compresión clara del problema a resolver, así como de creatividad y conocimientos básicos de programación. Dentro de las características fundamentales que debe cumplir todo algoritmo, se tiene las siguientes:
Un algoritmo debe ser preciso e indicar el orden secuencial de realización de cada paso. Si se sigue un algoritmo dos veces o más, se debe obtener el mismo resultado cada vez. Un algoritmo debe tener un número definido de pasos, lo que significa que si se sigue el mismo se debe terminar el proceso en algún momento (terminación del programa).
SISTEMAS MICROPROCESADOS Ing. Oswaldo Buitrón B
1-15
Definición del Problema
Establecer el algoritmo De solucion
(editor)
Escribir el Programa En lenguaje mnemonico
No Sintaxis correcta > Si Escribir el programaen lenguaje de maquina (ensamblador)
No
Ensamblado Correcto ? Si Grabar el programa En el circuito
Ejecucion
No
Resultados Correctos ?
Si
Fin
Figura N° 1.9. Etapas para la solución de un problema c) Escritura en lenguaje mnemónico. En esta etapa, el algoritmo propuesto se lo escribe o se lo transforma a un programa que mantiene o permite una relación entre el usuario y el microprocesador; es un lenguaje que puede ser considerado de bajo nivel que trabaja en base a símbolos denominados mnemónicos, que en esencia constituyen los códigos de las operaciones o instrucciones que ejecutará el microprocesador e incluye la información de donde se encuentran los datos con los cuales va a trabajar.
SISTEMAS MICROPROCESADOS Ing. Oswaldo Buitrón B
1-16
Un lenguaje en mnemónico o lista de instrucciones consiste en un conjunto de códigos simbólicos, cada uno de los cuales corresponde a una instrucción, que es reconocida por el circuito. Se le conoce como un lenguaje de programación para trabajar con los microprocesadores (uPs) y microcontroladores (uCs), que se basa en símbolos que pueden ser recordados con facilidad y que pueden ser ensamblados o compilados a lenguaje de máquina mediante un software apropiado. En la escritura en mnemónicos se pueden distinguir las dos partes que forman una instrucción, esto es: INSTRUCCIÓN = CÓDIGO DE OPERACIÓN + OPERANDOS Durante el desarrollo del curso se estudiarán los diferentes tipos de instrucciones, los modos de direccionamiento (que es la forma en que el circuito busca los datos) y se realizará una revisión de todo el repertorio de instrucciones del circuito que se ha tomado como referencia. Es conveniente estudiar todas y cada una de las instrucciones para ir familiarizándose con ellas, entender como definen el funcionamiento del circuito y visualizar la sintaxis de las mismas. Los fabricantes proveen suficiente información para poder realizar estas tareas. d) Escritura en lenguaje de máquina. Una vez que se cuenta con el programa desarrollado en lenguaje mnemónico, o también denominado código fuente, este contiene las instrucciones del programa, además de las etiquetas y directivas que fueron requeridas para estructurar el programa, también contiene los datos conocidos como operandos, o donde se los debe buscar, es importante tener presente que es un lenguaje que los microcontroladores no pueden procesar. Debemos considerar además que los microprocesadores trabajan solamente con lenguaje del más bajo nivel, es decir, trabajan con lo que se conoce como lenguaje de máquina o código objeto, que corresponde a los códigos directamente interpretables o ejecutables por un circuito microprocesador o microcontrolador. Para disponer del programa en lenguaje de máquina, se utiliza un programa denominado ensamblador que es el que posibilita la traducción o transformación de los códigos escritos en lenguaje mnemónico a código de máquina. Es conveniente resaltar que cada microprocesador o familia de microprocesadores, interpreta su propio lenguaje de máquina, el mismo que constituye una referencia para determinar las potencialidades y facilidades que ofrece cada familia de circuitos, de un determinado fabricante. Las instrucciones ya transformadas a código de máquina son almacenadas en la memoria de programa. e) Grabación en memoria. El almacenamiento en la memoria de programa se realiza normalmente utilizando un sistema de grabación que es el que permite transmitir la información (datos e instrucciones) al circuito, sistema que es manejado por un computador y a través de uno de sus puertos se transmite el archivo para su grabación en la memoria. El programa en lenguaje de máquina, también puede ser utilizado como la entrada a un programa de simulación, para poder efectuar las pruebas iniciales de su funcionamiento, SISTEMAS MICROPROCESADOS Ing. Oswaldo Buitrón B
1-17
en este caso puede decirse que corresponde a una prueba fuera de línea o que no corresponde a tiempo real.
1.6.
Ciclo de ejecución de una instrucción.
Como se ha señalado, un programa está constituido por un conjunto ordenado de instrucciones, que constituyen el cuerpo principal del programa, al mismo que se agrega uno o más bloques de ayuda a la estructuración del mismo, así como los datos iniciales necesarios para una correcta ejecución de la secuencia de instrucciones que permitirá al circuito resolver un problema especifico. El proceso básico de ejecución de un programa en un microcontrolador, requiere de dos etapas perfectamente definidas, que se las reconoce como de inicialización, que corresponde a la preparación o desarrollo del programa, la grabación o almacenamiento del mismo en la memoria del circuito y la acción de inicialización de los circuitos internos propiamente dicha, que es la acción conocida como del reset, toda esta parte corresponden a acciones exteriores al circuito. Una vez que el circuito se ha liberado de la acción del reset, se cumple lo que se conoce como el ciclo de la instrucción, por parte del microprocesador o microcontrolador, que es la repetición de los siguientes pasos: Leer de la memoria una instrucción completa del programa (código de operación y operandos), conocida también como fase de búsqueda (fetch), para luego interpretar la instrucción leída y ejecutar dicha instrucción; estas etapas se ilustran en la figura N° 1.10.
Preparacion del Programa
Grabacion en Memoria
Inicializacion
RESET
Busqueda de la instruccion
Ejecucion de la instruccion
Ciclo de la Instruccion
Figura N° 1.10. Etapas de ejecución de un programa Se define como el ciclo de ejecución de una instrucción a todos los pasos internos que sigue el microprocesador o microcontrolador para ejecutar una instrucción. El número de pasos y duración de este ciclo varían de un microprocesador a otro microprocesador ya que depende totalmente de su arquitectura. La mayor parte de las técnicas utilizadas para obtener un mayor rendimiento en la ejecución de las instrucciones están orientadas a modificar la arquitectura para obtener un ciclo de ejecución más rápido. Desde el punto de vista más simple, se considera que el procesamiento de una instrucción se cumple en dos etapas, como se explicó; es decir, primero la CPU lee o busca (trae, fetch) la instrucción desde la memoria y como segundo paso procede a su SISTEMAS MICROPROCESADOS Ing. Oswaldo Buitrón B
1-18
ejecución. La ejecución del programa consiste en la repetición del proceso de traer y ejecutar instrucciones, como se ilustra en la figura N° 1.11. La etapa de traída significa la búsqueda de los distintos datos que conforman una instrucción, es una operación común a todas las instrucciones, y consiste en la lectura de la instrucción de una o más localidades de memoria de programa; esta etapa es similar para todas las instrucciones, se diferencia de una a otra instrucción en el número de lecturas y eventualmente en la manera en que el microcontrolador busca los datos con los cuales va a trabajar (modos de direccionamiento). La ejecución de la instrucción que ha sido traída desde la memoria, supone varias operaciones las cuales dependen de la característica propia u operación que debe realizar cada instrucción. Una vez que ha concluido la búsqueda de la instrucción y se ha completado la misma (código de operación y operandos), el circuito procede a realiza la ejecución de la instrucción que corresponde a la operación indicada en la propia instrucción y que es particular para cada instrucción. En resumen para entender cómo funciona un microprocesador o microcontrolador, se requiere conocer cómo se van ejecutando cada una de las instrucciones del programa que se encuentra almacenado en la memoria, cabe destacar que el conjunto de instrucciones que es capaz de entender y ejecutar un microprocesador o un microcontrolador es particular de ese circuito. 1.7. Definiciones utilizadas en microcomputadores. Para el efecto, conviene tomar como referencia los diagramas de bloques de las figuras, que ya se han presentado en el texto y entre otras se presentan las siguientes definiciones: Computador digital. Sistema electrónico capaz de resolver problemas mediante la ejecución de un conjunto de órdenes o instrucciones, denominado programa. Está diseñado para aceptar datos digitales y realizar operaciones aritméticas y lógicas sobre esos datos y suministrar los resultados de las operaciones a muy altas velocidades. Unidad aritmética y lógica. Corresponde a un conjunto de circuitos digitales que realizan las operaciones tanto lógicas como aritméticas. Unidad de control. Conjunto de circuitos electrónicos digitales que conforman un módulo encargado de buscar e interpretar las instrucciones de un programa, a efecto de lo cual coordina el funcionamiento de las demás unidades que conforman el computador digital, por medio de las señales de control, para conseguir la ejecución de la instrucción.
SISTEMAS MICROPROCESADOS Ing. Oswaldo Buitrón B
1-19
Reset
(PC)
Bus de Add
(PC)
(PC) + 1
Localidad de memoria
Pasa el OpCod Al registro de Instrucciones
Registro μP
Si
Codigo Operacion ?
No
No
Instruccion Completa ?
Si
Pasa el dato a un Registro interno
Ejecucion De la instruccion
Figura N° 1.11. Ciclo de una instrucción
Unidad de memoria. Definida como un recurso del cual dispone un computador donde se almacenan las instrucciones de los programas (memoria solo de lectura) y los datos y resultados que se procesan (memoria de lectura/escritura). Sistema de entrada/salida (I/O). Es el conjunto de circuitos electrónicos que permiten el flujo de la información entre las distintas unidades del computador digital con el mundo exterior mediante los dispositivos periféricos. Periférico. Se lo considera un dispositivo electrónico auxiliar que se encarga de acondicionar entre las señales digitales del computador y el mundo exterior o viceversa. Así por ejemplo: los monitores o pantallas de video, los visualizadores o displays, las impresoras, los modems, los teclados, etc. Bus. Es un grupo de conductores físicos que permiten llevar la información entre los distintos bloques del computador digital.
SISTEMAS MICROPROCESADOS Ing. Oswaldo Buitrón B
1-20
Unidad central de proceso (CPU). Por la estrecha relación en su funcionamiento, la unidad de control y la ALU, siempre se las construyó una junto a la otra, llamándoles en su conjunto la CPU. Microprocesador. La construcción de la CPU en un solo circuito integrado VLSI, se conoce como microprocesador. Microcontrolador. El desarrollo en la tecnología de fabricación de circuitos integrados permite en la actualidad disponer de circuitos integrados VLSI y ULSI, que contienen además de la CPU la unidad de memoria y un sistema de E/S elementales, a los que se les conoce como microcontroladores o microcomputadoras en un solo circuito integrado. Microcomputador. Es un computador digital que utiliza como elemento inteligente para su funcionamiento, un microprocesador o un microcontrolador. Instrucción. Es una orden o comando para que la CPU realice alguna operación. Programa. Corresponde a una secuencia de instrucciones que permiten a la CPU procesar datos y obtener resultados con algún fin específico. Software. Son las instrucciones, programas y demás información que se dispone para una correcta y eficaz utilización de un computador digital. Hardware. Son los circuitos y dispositivos físicos que conforman el computador digital, incluye a sus periféricos. Firmware. Corresponde al software que se encuentra almacenado en una memoria del tipo no volátil (ROM) y es lo que se conoce como la microprogramación.
1.8. Algunas aplicaciones de los microcontroladores son:
En sistemas de comunicación: centrales telefónicas, transmisores, receptores, teléfonos fijos, celulares, fax, etc. En electrodomésticos: lavarropas, hornos de microondas, heladeras, lavavajillas, televisores, reproductores de DVD, minicomponentes, controles remotos, etc. Industria informática: Se encuentran en casi todos los periféricos; ratones, teclados, impresoras, escáner, etc. Domótica: sistemas de alarma y seguridad, control de procesos hogareños a distancia, etc. Automación: climatización, seguridad, ABS, etc. Industria: Autómatas, control de procesos, etc. Otros: Instrumentación, electromedicina, ascensores, calefacción, aire acondicionado, sistemas de navegación, etc.
http://es.wikipedia.org/wiki/Microcontrolador
SISTEMAS MICROPROCESADOS Ing. Oswaldo Buitrón B
1-21