Microchip proporciona un entorno de desarrollo freeware llamado MPLAB que incluye un simulador software y un ensamblador. Otras empresas desarrollan compiladores C y BASIC. Microchip también vende compiladores para los PICs de gama alta ("C18" para la serie F18 y "C30" para los dsPICs) y se puede descargar una edición para estudiantes del C18 que inhabilita algunas opciones después de un tiempo de evaluación.
Para el lenguaje de programación Pascal existe un compilador de código abierto, JAL, lo mismo que PicForth para el lenguaje Forth. GPUTILS es una colección de herramientas distribuidas bajo licencia GPL que incluye ensamblador y enlazador, y funciona en Linux, MacOS y Microsoft Windows. GPSIM es otra herramienta libre que permite simular diversos dispositivos hardware conectados al PIC.
Uno de los más modernos y completos compiladores para lenguaje C es [mikroC], que es un ambiente de desarrollo con editor de texto, bibliotecas con múltiples funciones para todos los módulos y herramientas incorporadas para facilitar enormemente el proceso de programación.
Arquitectura central
La arquitectura del PIC es sumamente minimalista. Esta caracterizada por las siguientes prestaciones:
- Área de código y de datos separadas (Arquitectura Harvard).
- Un reducido número de instrucciones de largo fijo
- La mayoría de las instrucciones se ejecutan en un solo ciclo de ejecución (4 ciclos de clock), con ciclos de único retraso en las bifurcaciones y saltos.
- Un solo acumulador (W), cuyo uso (como operador de origen) es implícito (no está especificado en la instrucción).
- Todas las posiciones de la RAM funcionan como registros de origen y/o de destino de operaciones matemáticas y otras funciones.[Una pila de hardware para almacenar instrucciones de regreso de funciones.
- Una relativamente pequeña cantidad de espacio de datos direccionable (típicamente, 256 bytes), extensible a través de manipulación de bancos de memoria.
- El espacio de datos está relacionado con el CPU, puertos, y los registros de los periféricos.
- El contador de programa esta también relacionado dentro del espacio de datos, y es posible escribir en él (permitiendo saltos indirectos).
Programación del PIC
Para transferir el código de un ordenador al PIC normalmente se usa un dispositivo llamado programador. La mayoría de PICs que Microchip distribuye hoy en día incorporan ICSP (In Circuit Serial Programming, programación serie incorporada) o LVP (Low Voltage Programming, programación a bajo voltaje), lo que permite programar el PIC directamente en el circuito destino. Para la ICSP se usan los pines RB6 y RB7 (En algunos modelos pueden usarse otros pines como el GP0 y GP1 o el RA0 y RA1) como reloj y datos y el MCLR para activar el modo programación aplicando un voltaje de 13 voltios. Existen muchos programadores de PICs, desde los más simples que dejan al software los detalles de comunicaciones, a los más complejos, que pueden verificar el dispositivo a diversas tensiones de alimentación e implementan en hardware casi todas las funcionalidades. Muchos de estos programadores complejos incluyen ellos mismos PICs preprogramados como interfaz para enviar las órdenes al PIC que se desea programar. Uno de los programadores más simples es el TE20, que utiliza la línea TX del puerto RS232 como alimentación y las líneas DTR y CTS para mandar o recibir datos cuando el microcontrolador está en modo programación. El software de programación puede ser el ICprog, muy común entre la gente que utiliza este tipo de microcontroladores. Entornos de programación basados en interpretes BASIC ponen al alcance de cualquiera proyectos que parecieran ser ambiciosos.
PICs más comúnmente usados
- PIC12C508/509 (encapsulamiento reducido de 8 pines, oscilador interno, popular en pequeños diseños como el iPod remote).
- PIC12F629/675
- PIC16F84 (Considerado obsoleto, pero imposible de descartar y muy popular)
- PIC16F84A (Buena actualización del anterior, algunas versiones funcionan a 20 MHz, compatible 1:1)
- PIC16F628A
- PIC16F88 (Nuevo sustituto del PIC16F84A con más memoria, oscilador interno, PWM, etc que podría convertirse en popular como su hermana).
- La subfamilia PIC16F87X y PIC16F87XA (los hermanos mayores del PIC16F84 y PIC16F84A, con cantidad de mejoras incluidas en hardware. Bastante común en proyectos de aficionados).
- PIC16F886/887 (Nuevo sustituto del 16F876A y 16F877A con la diferencia que el nuevo ya se incluye oscilador interno).
- PIC16F193x (Nueva gama media de PIC optimizado y con mucha RAM, ahora con 49 instrucciones por primera vez frente a las 35 de toda la vida).
- PIC18F2455 y similares con puerto USB 2.0
- PIC18F2550 manejo de puertos USB 2.0 y muy versatil.
- PIC18F452
- PIC18F4550
- dsPIC30F2010
- dsPIC30F3014
- dsPIC30F3011 (Ideales para control electrónico de motores eléctricos de inducción, control sobre audio, etc).
- PIC32 (Nueva gama de PIC de 32 bits, los más modernos ya compatible con USB 2.0).
PIC16F84
El PIC16F84 es un microcontrolador de la familia PIC, fabricada por la empresa MicrochipEstructura
Se trata de uno de los microcontroladores más populares del mercado actual, ideal para principiantes, debido a su arquitectura de 8 bits, 18 pines, y un set de instrucciones RISC muy amigable para memorizar y fácil de entender, internamente consta de:
- Memoria Flash de programa (1K x 14).
- Memoria EEPROM de datos (64 x 8).
- Memoria RAM (68 registros x 8).
- Un temporizador/contador (timer de 8 bits).
- Un divisor de frecuencia.
- Varios puertos de entrada-salida (13 pines en dos puertos, 5 pines el puerto A y 8 pines el puerto B).
- Manejo de interrupciones (de 4 fuentes).
- Perro guardián (watchdog).
- Bajo consumo.
- Frecuencia de reloj externa máxima 10MHz. (Hasta 20MHz en nuevas versiones). La frecuencia de reloj interna es un cuarto de la externa, lo que significa que con un reloj de 20Mhz, el reloj interno sería de 5Mhz y así pues se ejecutan 5 Millones de Instrucciones por Segundo (5 MIPS)
- No posee conversores analógicos-digital ni digital-analógicos.
- Pipe-line de 2 etapas, 1 para búsqueda de instrucción y otra para la ejecución de la instrucción (los saltos ocupan un ciclo más).
- Repertorio de instrucciones reducido (RISC), con tan solo 30 instrucciones distintas.
- 4 tipos distintos de instrucciones, orientadas a byte, orientadas a bit, operación entre registros, de salto.
Usos
En los últimos años se ha popularizado el uso de este microcontrolador debido a su bajo costo y tamaño. Se ha usado en numerosas aplicaciones, que van desde los automóviles a decodificadores de televisión. Es muy popular su uso por los aficionados a la robótica y electrónica.
Puede ser programado tanto en lenguaje ensamblador como en Basic y principalmente en C, para el que existen numerosos compiladores.Cuando se utilizan los compiladores Basic,es posible desarrollar ùtiles aplicaciones en tiempo récord,especialmente dirigidas al campo domèstico y educacional.
El PIC 16C84 es un microcontrolador de la familia MICROCHIP, totalmente compatible con el PIC 16F84.
Su principal característica es que posee memoria "EEPROM" en lugar de memoria Flash, pero su manejo es
igual. Con respecto al PIC16F84, este microcontrolador presenta dos diferencias:
La memoria de datos tiene menor tamaño, aquí se tienen 32 registros de propósito general (el mapa de
memoria de datos llega hasta 2Fh).
·
En el momento de programar el microcontrolador, el fusible de selección del temporizador de
arranque (Power Up Timer) trabaja de forma inversa, es decir, si en el PIC 16F84 se selecciona la
opción "Low" para activarlo, en el PIC 16C84 se debe seleccionar "High".
·
Este microcontrolador ha sido reemplazado de forma gradual por el PIC 16F84, por lo tanto, los diseños que
lo utilicen como elemento de control deben ser actualizados. Aunque, como se ve, es un proceso casi
transparente.
Este microcontrolador se basa en la Arquitectura Harvard, en la cual el programa y los datos se pueden
trabajar desde memorias separadas, lo que posibilita que las instrucciones y los datos posean longitudes
diferentes. Esta misma estructura es la que permite la superposición de los ciclos de búsqueda y ejecución de
las instrucciones, lo cual se ve reflejado en una mayor velocidad del microcontrolador.
No hay comentarios:
Publicar un comentario