Descargar

Microcontroladores PIC


Partes: 1, 2

  1. Introducción
  2. Controlador y microcontrolador
  3. Diferencias entre microprocesador y microcontrolador
  4. Selección del microcontrolador
  5. Recursos comunes a todos los microcontroladores
  6. Microcontroladores PIC
  7. Las gamas de PIC
  8. Registros. Organización de la memoria de datos
  9. Registros específicos
  10. Lenguaje ensamblador
  11. Programación de microcontroladores

Introducción

En este capítulo se establecen las razones que han llevado a la elección de un microcontrolador frente a un microprocesador y se intentan recoger todos los conocimientos y herramientas necesarias para programar los microcontroladores PIC de la compañía Microchip. Estos microcontroladores han sido elegidos para realizar las tareas de unidad de control y gestión de las comunicaciones PC<->RPC por su bajo precio, altas capacidades, por lo sencillo que es el lenguaje ensamblador y por la facilidad para programar el micro sin necesidad de recurrir a programadores comerciales.

Controlador y microcontrolador

Recibe el nombre de controlador el dispositivo que se emplea para el manejo de uno o varios procesos. Por ejemplo, el controlador que regula el funcionamiento de un horno dispone de un sensor que mide constantemente su temperatura interna y, cuando traspasa los límites prefijados, genera las señales adecuadas que accionan los actuadores que intentan llevar el valor de la temperatura dentro del rango estipulado.

Aunque el concepto de controlador ha permanecido invariable a través del tiempo, su implementación física ha variado frecuentemente. Hace tres décadas, los controladores se construían exclusivamente con componentes de lógica discreta, posteriormente se emplearon los microprocesadores, que se rodeaban con chips de memoria y E/S sobre una tarjeta de circuito impreso. En la actualidad, todos los elementos del controlador se han podido incluir en un chip, el cual recibe el nombre de microcontrolador. Realmente consiste en un sencillo pero completo computador contenido en el corazón (chip) de un circuito integrado.

Un microcontrolador dispone normalmente de los siguientes componentes:

  • Procesador o CPU (Unidad Central de Proceso).

  • Memoria RAM para los datos.

  • Memoria para el programa tipo ROM/EEPROM/FLASH.

  • Líneas de Entrada/Salida para comunicarse con el exterior.

  • Diversos módulos para el control de periféricos (temporizadores, Puertos Serie y Paralelo, Conversores Analógico/Digital, Conversores Digital/Analógico, generador de PWM …).

El microcontrolador es en definitiva un circuito integrado que incluye todos los componentes de un miniordenador. Debido a su reducido tamaño es posible montar el controlador en el propio dispositivo al que gobierna. En este caso el controlador recibe el nombre de controlador empotrado (embedded controller).

Diferencias entre microprocesador y microcontrolador

El microprocesador es un circuito integrado que contiene la Unidad Central de Proceso (CPU), también llamada procesador, de un ordenador.

edu.redLas patas 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. 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.

Un microcontrolador es un sistema cerrado que ya contiene la memoria y el interfaz con los periféricos.

edu.red

Si sólo se dispusiese de un modelo de microcontrolador, éste debería tener muchos recursos para poderse adaptar a las exigencias de las diferentes aplicaciones, lo cual en muchos casos supondría 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 potentes. 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.

Selección del microcontrolador

Antes de seleccionar un microcontrolador es imprescindible analizar los requisitos de la aplicación:

  • Procesamiento de datos: puede ser necesario que el microcontrolador realice cálculos críticos en un tiempo limitado. En ese caso debemos asegurarnos de seleccionar un dispositivo suficientemente rápido para ello. Por otro lado, habrá que tener en cuenta la precisión de los datos a manejar: si no es suficiente con un microcontrolador de 8 bits, puede ser necesario acudir a microcontroladores de 16 ó 32 bits, o incluso a hardware de coma flotante. Una alternativa más barata y quizá suficiente es usar librerías para manejar los datos de alta precisión.

  • Entrada / Salida: para determinar las necesidades de Entrada/Salida del sistema es conveniente dibujar un diagrama de bloques del mismo, de tal forma que sea sencillo identificar la cantidad y tipo de señales a controlar. Una vez realizado este análisis puede ser necesario añadir periféricos hardware externos (multiplexores, decodificadores…) o cambiar a otro microcontrolador más adecuado a ese sistema.

  • Consumo: algunos productos que incorporan microcontroladores están alimentados con baterías y su funcionamiento puede ser tan vital como activar una alarma antirrobo. Lo más conveniente en un caso como éste puede ser que el microcontrolador esté en estado de bajo consumo pero que despierte ante la activación de una señal (una interrupción) y ejecute el programa adecuado para procesarla.

  • Memoria: para detectar las necesidades de memoria de nuestra aplicación debemos separarla en memoria volátil (RAM), memoria no volátil (ROM, EPROM, etc.) y memoria no volátil modificable (EEPROM,FLASH).

  • Ancho de palabra: el criterio de diseño debe ser seleccionar el microcontrolador de menor ancho de palabra que satisfaga los requerimientos de la aplicación. Usar un microcontrolador de 4 bits supondrá una reducción en los costes importante, mientras que uno de 8 bits puede ser el más adecuado si el ancho de los datos es de un byte. Los microcontroladores de 16 y 32 bits, debido a su elevado coste, deben reservarse para aplicaciones que requieran sus altas prestaciones (Entrada/Salida potente o espacio de direccionamiento muy elevado).

  • Diseño de la placa: la selección de un microcontrolador concreto condicionará el diseño de la placa de circuitos. Debe tenerse en cuenta que quizá usar un microcontrolador barato encarezca el resto de componentes del diseño.

Los microcontroladores más populares se encuentran, sin duda, entre las mejores elecciones:

8048 (Intel). Es el padre de los microcontroladores actuales, el primero de todos. Su precio, disponibilidad y herramientas de desarrollo hacen que todavía sea muy popular.

8051 (Intel y otros). Es sin duda el microcontrolador más popular. Fácil de programar, pero potente. Está bien documentado y posee cientos de variantes e incontables herramientas de desarrollo.

80186, 80188 y 80386 EX (Intel). Versiones en microcontrolador de los populares microprocesadores 8086 y 8088. Su principal ventaja es que permiten aprovechar las herramientas de desarrollo para PC.

68HC11 y 68HC12 (Motorola y Toshiba). Es un microcontrolador de 8 bits potente y popular con gran cantidad de variantes.

683xx (Motorola). Surgido a partir de la popular familia 68k, a la que se incorporan algunos periféricos. Son microcontroladores de altísimas prestaciones.

PIC (MicroChip). Familia de microcontroladores que gana popularidad día a día. Fueron los primeros microcontroladores RISC. Serán los empleados en este proyecto.

Es preciso resaltar en este punto que existen innumerables familias de microcontroladores, cada una de las cuales posee un gran número de variantes.

Recursos comunes a todos los microcontroladores

Al estar todos los microcontroladores integrados en un chip, su estructura fundamental y sus características básicas son muy parecidas. Todos deben disponer de los bloques esenciales Procesador, memoria de datos y de instrucciones, líneas de E/S, oscilador de reloj y módulos controladores de periféricos. Sin embargo, cada fabricante intenta enfatizar los recursos más idóneos para las aplicaciones a las que se destinan preferentemente.

En este apartado se hace un recorrido de todos los recursos que se encuentran en todos los microcontroladores describiendo las diversas alternativas y opciones que pueden encontrarse según el modelo seleccionado.

  • Arquitectura básica

Aunque inicialmente todos los microcontroladores adoptaron la arquitectura clásica de von Neumann, en el presente se impone la arquitectura Harvard. La arquitectura de von Neumann se caracteriza por disponer de una sola memoria principal donde se almacenan tanto datos como instrucciones. A dicha memoria se accede a través de un sistema de buses único (direcciones, datos y control).

La arquitectura Harvard dispone de dos memorias independientes: una, que contiene sólo instrucciones y otra, sólo datos. Ambas disponen de sus respectivos sistemas de buses de acceso y es posible realizar operaciones de acceso (lectura o escritura) simultáneamente en ambas memorias.

Los microcontroladores PIC usan la arquitectura Harvard.

  • Procesador (CPU).

Se encarga de direccionar la memoria de instrucciones, recibir el código OP 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 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 filosofí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 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úan como macros.

  • RISC: Tanto la industria de los ordenadores como la 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 ejecutan en un ciclo (en realidad en cuatro, pero secuencialmente, de forma que a cada ciclo de reloj se termina la ejecución de una instrucción excepto en las instrucciones de salto). 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í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).

  • 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 las instrucciones del programa. Otra parte de la memoria será tipo RAM, volátil, y se destina a guardar las variables y los datos.

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.

Los usuarios de ordenadores están habituados a manejar Megabytes de memoria, pero los diseñadores de aplicaciones con microcontroladores trabajan con capacidades de ROM comprendidas entre 512 bytes y 8 k bytes y de RAM comprendidas entre 20 y 512 bytes (en la gama media de microcontroladores, en la alta se superan estas cifras).

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. 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 de programa.

  • 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 superficie 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. 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 de un PC. No disponen de ventana de cristal en la superficie. Los microcontroladores dotados de memoria EEPROM pueden grabarse y borrarse cuantas veces se quiera sin ser retirados del circuito en el que se instalen. Para ello se usan "grabadores en circuito" que confieren una gran flexibilidad y rapidez a la hora de realizar modificaciones 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. Este tipo de memoria es relativamente lenta.

  • 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, además de poder ser programada a nivel bajo de tensión.

  • Puertos de Entrada/Salida.

Los puertos de entrada/salida de un microcontrolador permiten la comunicación con los periféricos externos. Además, muchas de las patas que configuran el puerto suelen tener varias funciones multiplexadas, como por ejemplo ser puerto de E/S y entrada analógica al convertidor A/D.

  • El reloj del microcontrolador.

Todos los microcontroladores disponen de un circuito oscilador que genera una onda cuadrada de alta frecuencia, que proporciona los impulsos de reloj usados en la sincronización de todas las operaciones del sistema.

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 (dos condensadores del orden de los picofaradios), un resonador cerámico (no hacen falta condensadores) o una red R-C.

Aumentar la frecuencia de reloj supone disminuir el tiempo en que se ejecutan las instrucciones, pero ello va acompañado de un incremento del consumo de energía.

  • Recursos especiales de los microcontroladores.

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, se minimizará el coste.

Los principales recursos específicos que incorporan los microcontroladores son:

• Temporizadores o "Timers".

• Perro guardián o "Watchdog".

• Protección ante fallo de alimentación o "Brownout".

• Estado de reposo o de bajo consumo.

• Conversor A/D.

• Conversor D/A.

• Comparador analógico.

• Modulador de anchura de pulsos o PWM.

• Puertos de E/S digitales.

• Puertos de comunicación serie/paralelo.

  • 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 una interrupción.

Cuando se desean contar acontecimientos que se materializan por cambios de nivel o flancos en alguna de las patas del microcontrolador, el mencionado registro se va incrementando o decrementando al ritmo de dichos impulsos.

  • Perro guardián o "Watchdog"

Cuando el ordenador 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. El Perro guardián consiste en un temporizador que, cuando se desborda y pasa por 0, provoca un reset automáticamente en el sistema.

Se debe diseñar el programa de trabajo que controla la tarea de forma que refresque o inicialice al Perro guardián antes de que provoque el reset. Si falla el programa o se bloquea, no se refrescará al Perro guardián y, al completar su temporización provocará el reset del micro.

  • 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 se sobrepasa dicho valor.

  • Estado de reposo ó de bajo consumo

Son abundantes las situaciones en las 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 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. Al activarse una interrupción provocada por un evento externo, el microcontrolador se despierta y reanuda su trabajo.

  • Conversor A/D

Los microcontroladores que incorporan un Conversor A/D (Analógico/Digital) pueden procesar señales analógicas cuyo valor oscile entre la tensión de alimentación y el 0 (para otro tipo de señales hará falta una etapa previa de adaptación de la señal). Suelen disponer de un multiplexor que permite aplicar a la entrada del conversor varias señales analógicas en distintas patas del circuito integrado.

  • Conversor D/A

Transforma datos digitales en su correspondiente señal analógica, que saca al exterior por una de las patas del micro. La inclusión de un conversor D/A en un micro es mucho más rara (y cara) que la de un conversor A/D. La salida analógica tiene una limitación de corriente y de amplitud, por lo que en muchas ocasiones será necesaria una etapa de salida (amplificador + potencia).

  • 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 patas del micro. La salida del comparador proporciona un nivel lógico 1 ó 0 según la señal de entrada sea mayor o menor que la de referencia. 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 pulsos o PWM

Son circuitos que proporcionan en su salida pulsos de tensión de ancho variable (modificable por software), muy usados en la regulación de velocidad de motores y aplicaciones de electrónica de potencia.

  • Puertos de E/S digitales

Todos los microcontroladores destinan algunas de sus patas a proporcionar 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 los Puertos pueden configurarse como Entrada o como Salida cargando un 1 ó un 0 en el bit correspondiente de un registro destinado a su configuración. Muchos micros tienen la capacidad de generar interrupciones cuando cambia la entrada de alguna de las líneas. Eso es especialmente útil cuando el micro está en estado de bajo consumo, que así puede ser despertado por un evento externo en una de sus patas.

  • Puertos de comunicación

Los puertos de comunicación dotan al microcontrolador de la posibilidad de comunicarse con dispositivos externos, buses de microprocesadores, buses de sistemas, buses de redes y otros elementos bajo distintas normas y protocolos. Algunos modelos de micros disponen de recursos que permiten directamente esta tarea, entre los que destacan:

  • UART, adaptador de comunicación serie asíncrona.

  • USART, adaptador de comunicación serie síncrona y asíncrona

  • Puerto paralela esclavo para poder conectarse con los buses de otros microprocesadores.

  • USB (Universal Serial Bus), que es un bus serie de alta velocidad.

  • Bus I2C, que es un interfaz serie de dos hilos desarrollado por Philips.

  • CAN (Controller Area Network), para permitir la comunicación de los distintos sistemas de un automóvil.

Microcontroladores PIC

Características de los microcontroladores PIC de Microchip®.

  • Introducción.

Los PIC tienen muchas características que han hecho que se hagan extremadamente populares en los últimos años: la velocidad, el precio, la facilidad de uso, la información abundante, las herramientas de apoyo…

Para las aplicaciones más habituales la elección de una versión adecuada de PIC es la mejor solución; sin embargo, otras familias de microcontroladores son más eficaces en aplicaciones específicas, especialmente si en ellas predomina una característica concreta, que puede estar muy desarrollada en otra familia.

Las razones de la excelente acogida que tienen los PIC son las siguientes:

  • Sencillez de manejo: Tienen un juego de instrucciones reducido; 35 en la gama media, que una vez aprendidas pueden ser usadas en cualquier otro microcontrolador PIC.

  • Buena información, fácil de conseguir y económica.

  • Precio: Su coste es inferior al de sus competidores.

  • Poseen una elevada velocidad de funcionamiento. Buen promedio de parámetros: velocidad, consumo, tamaño, alimentación, código compacto, etc.

  • Herramientas de desarrollo fáciles y baratas. Muchas herramientas software se pueden descargarr libremente a través de Internet desde Microchip (http://www.microchip.com).

  • Existe una gran variedad de herramientas hardware que permiten grabar, depurar, borrar y comprobar el comportamiento de los PIC, tanto comerciales como no comerciales.

  • Diseño rápido.

  • La gran variedad de modelos de PIC permite elegir el que mejor responde a los requerimientos de la aplicación.

Una de las razones del éxito de los PIC se basa en su utilización. Cuando se aprende a manejar uno de ellos, conociendo su arquitectura y su repertorio de instrucciones, es muy fácil emplear otro modelo.

  • Arquitectura.

La arquitectura del procesador sigue el modelo Harvard. En esta arquitectura, la CPU se conecta de forma independiente y con buses distintos con la memoria de instrucciones y con la de datos.

La arquitectura Harvard permite a la CPU acceder simultáneamente a las dos memorias. Además, propicia numerosas ventajas al funcionamiento del sistema como se irán describiendo.

  • Segmentación.

Se aplica la técnica de segmentación ("pipe-line") en la ejecución de las instrucciones.

La segmentación permite al procesador realizar al mismo tiempo la ejecución de una instrucción y la búsqueda del código de la siguiente. De esta cada ciclo termina de ejecutarse una instrucción (un ciclo de instrucción equivale a cuatro ciclos de reloj).

Las instrucciones de salto ocupan dos ciclos al no conocer la dirección de la siguiente instrucción hasta que no se haya completado la de bifurcación.

  • Formato de las instrucciones.

Todas las instrucciones de los microcontroladores de la gama baja tienen una longitud de 12 bits. Las de la gama media tienen 14 bits y más las de la gama alta. Esta característica es muy ventajosa en la optimización de la memoria de instrucciones y facilita enormemente la construcción de ensambladores y compiladores.

  • Juego de instrucciones.

Procesador RISC (Computador de Juego de Instrucciones Reducido).

Los modelos de la gama baja disponen de un repertorio de 33 instrucciones, 35 los de la gama media y casi 60 los de la alta.

  • Arquitectura basada en un banco de registros

Esto significa que todo el sistema (puertos de E/S, temporizadores, conversores A/D, etc.) son accesibles mediante registros.

  • Diversidad de modelos de microcontroladores con prestaciones y recursos diferentes

La gran variedad de modelos de microcontroladores PIC permite que el usuario pueda seleccionar el más conveniente para su proyecto.

  • Herramientas de soporte potentes y económicas

La empresa Microchip y muchas otras, ponen a disposición de los usuarios numerosas herramientas para desarrollar hardware y software. Son muy abundantes los programadores, los simuladores software, los emuladores en tiempo real, Ensambladores, Compiladores C, Intérpretes y Compiladores BASIC, etc.

La arquitectura Harvard y el "pipelining" son los principales recursos en los que se apoya el elevado rendimiento que caracteriza estos dispositivos programables, mejorando dos características esenciales:

  • 1. Velocidad de ejecución.

  • 2. Eficiencia en la compactación del código.

Las gamas de PIC

Para resolver aplicaciones sencillas se precisan pocos recursos, en cambio, las aplicaciones grandes requieren muchos. Siguiendo esta filosofía Microchip construye diversos modelos de microcontroladores orientados a cubrir, de forma óptima, las necesidades de cada proyecto. Así, hay disponibles microcontroladores sencillos y baratos para atender las aplicaciones simples y otros más completos y más costosos para las de mucha envergadura.

Microchip dispone de cuatro familias de microcontroladores de 8 bits para adaptarse a las necesidades de la mayoría de los clientes potenciales.

  • La gama enana: PIC12C(F)XXX de 8 patas

Se trata de un grupo de PIC de reciente aparición que ha acaparado la atención del mercado. Su principal característica es su reducido tamaño, al disponer todos sus componentes de 8 patas. Se alimentan con un voltaje de corriente continua comprendido entre 2,5 V y 5,5 V, y consumen menos de 2 mA cuando trabajan a 5 V y 4 MHz. El formato de sus instrucciones puede ser de 12 o de 14 bits y su repertorio es de 33 o 35 instrucciones, respectivamente.

edu.red

Diagrama de conexiones de los PIC12Cxxx de la gama enana.

Aunque los PIC enanos sólo tienen 8 patas, pueden destinar hasta 6 para líneas de E/S para periféricos porque disponen de un oscilador interno RC.

En la Tabla se presentan las principales características de los modelos de esta subfamilia. Los modelos 12C5xx pertenecen a la gama baja, siendo el tamaño de las instrucciones de 12 bits; mientras que los 12C6xx son de la gama media y sus instrucciones tienen 14 bits. Los modelos 12F6xx poseen memoria Flash para el programa y EEPROM para los datos.

edu.red

edu.red

Diagrama de patitas de los PIC de la gama baja que responden a la nomenclatura PIC16C54/56.

Se trata de una serie de PIC de recursos limitados, pero con una de las mejores relaciones coste/prestaciones. Hay versiones con encapsulados de 18 y 28 patas y pueden alimentarse a partir de una tensión de 2.5 V, lo que les hace ideales en las aplicaciones que funcionan con pilas teniendo en cuenta su bajo consumo (menos de 2 mA a 5 V y 4 MHz). Tienen un repertorio de 33 instrucciones de 12 bits. No admiten ningún tipo de interrupción y la Pila sólo dispone de dos niveles.

Al igual que todos los miembros de la familia PIC16/17, los componentes de la gama baja se caracterizan por poseer los siguientes recursos:

  • Sistema POR ("Power On Reset"). Todos los PIC tienen la facultad de generar una autoreinicialización o autoreset al conectarles la alimentación.

  • Perro guardián (Watchdog o WDT).Temporizador que produce un reset automáticamente si no es recargado antes que pase un tiempo prefijado.

  • Código de protección. Cuando se procede a realizar la grabación del programa, puede protegerse para evitar su lectura. También disponen los PIC de posiciones reservadas para registrar números de serie, códigos de identificación, prueba, etc.

edu.red

Características de los modelos PIC16C(R)5X de la gama baja

  • Líneas de E/S de alta corriente.Las líneas de E/S de los PIC pueden proporcionar o absorber una corriente de salida comprendida entre 20 y 25 mA.

  • Modo de reposo (Bajo consumo o "sleep"). Ejecutando una instrucción (SLEEP), la CPU y el oscilador principal se detienen y se reduce notablemente el consumo.

Para terminar el comentario introductorio sobre los componentes de la gama baja conviene destacar dos restricciones importantes:

  • 1. La pila o "stack" sólo dispone de dos niveles lo que supone no poder encadenar más de dos subrutinas.

  • 2. Los microcontroladores de la gama baja no admiten interrupciones.

  • Gama media. PIC16CXXX/PIC16FXXX con instrucciones de 14 bits

edu.red

PIC16F873 de la gama media.

Es la gama más variada y completa de los PIC. Abarca modelos con encapsulado desde 18 patas hasta 68, cubriendo varias opciones que integran abundantes periféricos. Dentro de esta gama se halla el «fabuloso PIC16X84» y sus variantes.

En esta gama sus componentes añaden nuevas prestaciones a las que poseían los de la gama baja, haciéndoles más adecuados en las aplicaciones complejas. Admiten interrupciones, poseen comparadores de magnitudes analógicas, convertidores A/D, puertos serie y diversos temporizadores.

El repertorio de instrucciones es de 35, de 14 bits cada una y compatible con el de la gama baja. También dispone de interrupciones y una Pila de 8 niveles que permite el anidamiento de subrutinas. En la Tabla se presentan las principales características de los modelos de esta familia.

edu.redCaracterísticas relevantes de los modelos PIC16X8X de la gama media.

Encuadrado en la gama media también se halla la versión PIC14C000, que soporta el diseño de controladores inteligentes para cargadores de baterías, pilas pequeñas, fuentes de alimentación ininterrumpibles y cualquier sistema de adquisición y procesamiento de señales que requiera gestión de la energía de alimentación. Los PIC 14C000 admiten cualquier tecnología de las baterías como Li-Ion, NiMH, NiCd, Ph y Zinc.

El temporizador TMR1 que hay en esta gama tiene un circuito oscilador que puede trabajar asíncronamente y que puede incrementarse aunque el microcontrolador se halle en el modo de reposo ("sleep"), posibilitando la implementación de un reloj en tiempo real.

Las líneas de E/S tienen resistencias de "pull-up" activadas por software.

  • Gama alta: PIC17CXXX con instrucciones de 16 bits.

Se alcanzan las 58 instrucciones de 16 bits en el repertorio y sus modelos disponen de un sistema de gestión de interrupciones vectorizadas muy potente. También incluyen variados controladores de periféricos, puertos de comunicación serie y paralelo con elementos externos, un multiplicador hardware de gran velocidad y mayores capacidades de memoria, que alcanza los 8 k palabras en la memoria de instrucciones y 454 bytes en la memoria de datos.

Quizá la característica más destacable de los componentes de esta gama es su arquitectura abierta, que consiste en la posibilidad de ampliación del microcontrolador con elementos externos. Para este fin, las patas sacan al exterior las líneas de los buses de datos, direcciones y control, a las que se conectan memorias o controladores de periféricos. Esta facultad obliga a estos componentes a tener un elevado numero de patitas comprendido entre 40 y 44. Esta filosofía de construcción del sistema es la que se empleaba en los microprocesadores y no suele ser una práctica habitual cuando se emplean microcontroladores. En la tabla se muestran las características más relevantes de los modelos de esta gama, que sólo se utilizan en aplicaciones muy especiales con grandes requerimientos.

edu.red

Características relevantes de los modelos PIC17XX de la gama alta.

La gama media de los PIC.

Comentaremos en detalle la gama media ya que los microcontroladores que se han usado en el proyecto, el 16F84 y el 16F873, pertenecen a la misma. Se explicarán aquí los detalles básicos en castellano pero se puede encontrar más información (en inglés) en el CD adjunto: D:Capitulo316F87316F873.pdf y D:Capitulo316F8416F84.pdf

Registros. Organización de la memoria de datos

La ampliación de recursos en los PIC forzó en los catalogados como de gama media una nueva estructura y la modificación de algunas instrucciones (partiendo, claro está, de la gama baja). Una de las diferencias fundamentales es, precisamente, la ampliación de memoria de registros, a los que se unieron algunos nuevos de sistema, y la accesibilidad a parte de los mismos que antes quedaban ocultos, como OPTION o TRIS.

De este modo se optó por dos bancos de registros de 128 posiciones cada uno, la mayoría de los cuales son de propósito general. Estos dos bancos son compartidos por toda la gama media, si bien en algunos microcontroladores (como el 16F873) el número de bancos es 4.

Registros específicos

  • PC. Direccionamiento del programa: El PC consta de 13 bits, con lo que es posible direccionar hasta 8K palabras, separadas en bancos de 2K. El byte de menos peso de la dirección se guarda en el registro PCL, sito en la posición 0x02 del banco 0, mientras los 5 bits de más peso se guardan en los 5 bits de menos peso del registro PCLATH (dirección 0x08). Puesto que las instrucciones CALL y GOTO sólo cuentan con 11 bits, sus saltos serán relativos a la página en la que estemos.

  • STATUS. Registro de estado. En el se encuentran los flags de acarreo, cero, power down, timer out, selección de banco (RP1:RP0) y selección de bancos para direccionamiento indirecto.

  • OPTION. Registro de opciones. Permite configurar el divisor de frecuencia, tipo de flanco de la interrupción, y resistencias de pull-up del puerto B.

  • INTCON. Registro de Interrupciones. Permite activar las interrupciones y comprobar la interrupción que ha saltado.

Los registros PIE1 y PIR1 están relacionados con el comparador, así como CMCON y VRCON. El registro FSR es utilizado junto al INDF para direccionamiento indirecto.

Los registros TMR0, (TMR1), PORTA, PORTB, (PORTC, PORTD) TRISA Y TRISB (TRISC, TRISD) permiten controlar los timer y los puertos.

Se han explicado los registros básicos compartidos por toda la gama. Cuando se desee usar un periférico del micro (USART, conversor A/D, PWM…), habrá que mirar la configuración específica en el archivo 16Fx.pdf correspondiente.

Lenguaje ensamblador

Habiendo escogido los diseñadores de PIC la filosofía RISC, el juego de instrucciones es reducido (33 instrucciones en la gama baja), siendo éstas, además, sencillas y rápidas, puesto que casi todas se ejecutan en un único ciclo de máquina (equivalente a 4 del reloj principal). Sus operandos son de gran flexibilidad, pudiendo actuar cualquier objeto como fuente y como destino (ortogonales).

Posee tres tipos bien diferenciados de direccionamiento, estos son:

1º Inmediato: El valor del dato está incluido en el propio código OP, junto a la instrucción.

2º Directo: La dirección del dato está incluido en el propio código OP, junto a la instrucción.

3º Indirecto: La dirección de la memoria de datos que guarda el operando está contenida en un registro. Se guarda la dirección deseada en el registro FSR y se lee y escribe en el registro apuntado por el contenido de FSR a través del registro INDF.

Se explicarán a continuación las instrucciones de la gama media, si bien se pueden emplear perfectamente instrucciones compuestas (mnemónicos) o macros, que son instrucciones que se ensamblan como varias instrucciones ( así, BNZ k -Branch on No Zero- se ensambla como BTFSS 3,2 y GOTO k). Para más información consultar la ayuda del programa MPLAB (incluido en el CD) en la sección MPASM's User Guide, apéndice B, o bien en el manual de ayuda de GPASM (incluido en el CD).

Hay tres tipos de instrucciones:

– Instrucciones orientadas a bytes o a registros.

– Instrucciones orientadas a bits.

– Instrucciones de control y con literales.

Notas:

– En las instrucciones orientadas a registros, f representa un registro y d representa el destino. Si d es 0 el resultado de la operación se almacena en el registro de trabajo (W), si d es 1 el resultado se almacena en f.

– En las instrucciones orientadas a bits b representa en binario la posición (0-7) del bit deseado dentro del byte (0 es el LSB).

– En las instrucciones con literales k representa una constante o literal.

x es un valor indeterminado que puede ser 0 o 1.

– Al ejecutarse, algunas instrucciones afectan a determinados flags, lo cual es muy útil. Por ejemplo, para comparar dos cantidades, una en W y otra en f, las restamos SUBWF f,0 y comprobamos si el flag Z (cero) se ha puesto a 1 (cantidades iguales) o si es 0 (cantidades distintas).

edu.red

Juego de instrucciones de 14 bits.

  • Directive Language (código de precompilación).

Las directivas son comandos de ensamblador que aparecen en el código fuente pero que no se traducen directamente en códigos de operación. Se usan para controlar el proceso de compilación: entradas, salidas y colocación de los datos.

Son parte del lenguaje de directivas las instrucciones:

-SETo PROCESSOR. Permite elegir el tipo de procesador.

-ORG. Da una dirección origen desde la cual se empezarán a almacenar las instrucciones. Muy útil para poder dividir el código en varios archivos, dando a cada uno un origen distinto.

-CONSTANT. Permite definir constantes.

-INCLUDE. Sirve para incluir otros archivos .ASM o .C .

-__CONFIG. Permite configurar ciertos bits de configuración (habilitar o deshabilitar protección de código, Watch-Dog, Brown-Out Reset …).

Para más información consultar la ayuda del MPLAB en la sección MPASM's User Guide, Capítulo 5.

  • Macros.

Las Macros son conjutos de instrucciones y directivas definidas por el usuario que son evaluadas sólo cuando sean llamadas por el código ensamblador. Las Macros aceptan argumentos, haciendo que sean muy flexibles y se pueda aproximar su uso al de las funciones en C.

Sintaxis:

<label> macro [<arg1>,<arg2> …, <argn>] ; el código va aquí endm <label> es el nombre con el que será llamado el macro desde el código fuente (<label> [<arg1>,<arg2> …, <argn>]).

Cada vez que aparezca el argumento en el macro, será sustituido con el valor que se le ha dado al llamar al macro.

Si se desean poner etiquetas dentro de un macro (para hacer saltos dentro del mismo) es muy importante que sean definidas como variables locales dentro del macro.

Para más información consultar la ayuda del MPLAB en la sección MPASM's User Guide, Capítulo 7.

  • Uso de plantillas. Archivos *.inc .

Al incluir las siguientes líneas :

list p=16f873 ; list directive to define processor

#include ; processor specific variable definitions

o bien :

list p=16f84 ; list directive to define processor

#include ; processor specific variable definitions

Partes: 1, 2
Página siguiente