• Los microcontroladores de la serie PIC16 han existido desde hace
muchos años. Aunque estos son excelentes microcontroladores de propósito general, tienen ciertas limitaciones. Por ejemplo, las capacidades de programa y memoria de datos es limitado, la pila es pequeña, y la estructura de interrupción es primitivo, todas las fuentes de interrupción comparten el mismo vector de interrupción. PIC16series microcontroladores tampoco proporcionan apoyo directo a las interfaces de periféricos avanzados, tales como USB, bus CAN, etc., y la interconexión con tales dispositivos no es fácil. El conjunto de instrucciones para estos microcontroladores también es limitada. Por ejemplo, no hay instrucciones de multiplicación o división, y la bifurcación es bastante simple. Microchip Inc. ha desarrollado la serie PIC18 de microcontroladores para uso en aplicaciones de alta pincount, alta densidad y aplicaciones complejas. Los microcontroladores PIC18F ofrecen soluciones costo-efeciente para aplicaciones de uso general escritas en C que utilizan un sistema operativo en tiempo real (RTOS) y requieren un conjunto de protocolos de comunicación como TCP / IP, CAN, USB o ZigBee. Los dispositivos PIC18F proporcionan memoria de programa flash en tamaños de 8 a 128Kbytes y memoria de datos de 256 a 4Kbytes, operando en un rango de 2.0 a 5.0 voltios, a velocidades de DC a 40MHz. LAS CARACTERÍSTICAS BÁSICAS DE LOS MICROCONTROLADORES PIC18F SON: 77 instrucciones Codigo fuente compatible con la serie PIC16 La memoria del programa de direccionamiento hasta 2 Mbytes. Memoria de datos de direccionamiento hasta 4Kbytes. DC a 40MHz de funcionamiento. 8 x 8 hardware multiplier Niveles de prioridad de interrupción. Instrucciones de 16 bits de ancho, ruta de datos de 8 bits de ancho Hasta dos temporizadores / contadores de 8 bits Hasta tres temporizadores / contadores de 16 bits Hasta cuatro interrupciones externas. Capacidad de fuente / sumidero de alta corriente (25 mA). Hasta cinco módulos de captura / comparación / PWM. Módulo maestro de puerto serie síncrono (modos SPI e I2C). Hasta dos módulos USART Puerto esclavo paralelo (PSP) Rápido convertidor de analógico a digital de 10 bits Módulo de detección de bajo voltaje programable (LVD) Reinicio de encendido (POR), temporizador de encendido (PWRT) y temporizador de arranque del oscilador (OST) Temporizador de vigilancia (WDT) con oscilador RC en el chip Programación en circuito ADEMÁS, ALGUNOS MICROCONTROLADORES DE LA FAMILIA PIC18F OFRECEN LAS SIGUIENTES CARACTERÍSTICAS ESPECIALES: Interfaz de bus directo CAN 2.0 Interfaz de bus USB 2.0 directo Interfaz de control LCD directo TCP/IP interfaz ZigBee interfaz Interfaz de control directo del motor • La mayoría de los dispositivos de la familia PIC18F son compatibles en origen entre sí. La Tabla 2.1 presenta las características de algunos de los dispositivos populares en esta familia. Este capítulo ofrece un estudio detallado de los microcontroladores PIC18FXX2. Las arquitecturas de la mayoría de los otros microcontroladores de la familia PIC18F son similares. La familia de microcontroladores 18FXX2 ARQUITECTURA PIC18FXX2 • Como se muestra en la Tabla, la serie PIC18FXX2 consta de cuatro dispositivos. microcontroladores PIC18F2X2 son dispositivos de 28 pines, mientras que los microcontroladores PIC18F4X2 son dispositivos de 40 pines. Las arquitecturas de los dos grupos son casi idénticas excepto que los dispositivos más grandes tienen más puertos de entrada-salida y más canales del convertidor A / D. En esta sección vamos a estar buscando en la arquitectura del microcontrolador PIC18F452 en detalle. Las arquitecturas de otros microcontroladores de la serie PIC18F estándar son similares. • La configuración de pines del microcontrolador PIC18F452 (paquete DIP) se muestra en la Figura. Este es un microcontrolador de 40 pines alojado en un paquete DIL, con una configuración de pines similar a la PIC16F877 popular. • La Figura 2.2 muestra el diagrama de bloques interno del microcontrolador PIC18F452. La CPU está en el centro del diagrama y consta de una ALU de 8 bits, un registro de acumulador de trabajo de 8 bits (WREG) y un multiplicador de hardware de 8 8. El byte más alto y el byte más bajo de una multiplicación se almacenan en dos registros de 8 bits llamados PRODH y PRODL respectivamente. • El contador de programas y la memoria de programas se muestran en la parte superior izquierda del diagrama. Las direcciones de memoria de programa constan de 21 bits, capaces de acceder a 2Mbytes de ubicaciones de memoria de programa. El PIC18F452 tiene solo 32Kbytes de memoria de programa, lo que requiere solo 15 bits. Los 6 bits de dirección restantes son redundantes yno utilizado. Un puntero de tabla proporciona acceso a las tablas y a los datos almacenados en la memoria del programa. La memoria del programa contiene una pila de 31 niveles que normalmente se utiliza para almacenar las direcciones de retorno de interrupción y subrutina. • La memoria de datos se puede ver en la parte superior central del diagrama. El bus de memoria de datos es de 12 bits de ancho, capaz de acceder a 4Kbytes de ubicaciones de memoria de datos. Como veremos más adelante, la memoria de datos consta de registros de funciones especiales (SFR) y registros de propósito general, todos organizados en bancos. La parte inferior del diagrama muestra los temporizadores / contadores, los registros de captura / comparación / PWM, el USART, el convertidor A / D y la memoria de datos EEPROM. El PIC18F452 consiste en: • 4 temporizadores / contadores • 2 módulos de captura / comparación / PWM • 2 módulos de comunicación serie • 8 canales convertidores A / D de 10 bits • 256 bytes EEPROM • El circuito del oscilador, ubicado en el lado izquierdo del diagrama, consta de: • Temporizador de encendido • Temporizador de arranque del oscilador • Reinicio de encendido • Temporizador de vigilancia • Restablecimiento de salida • Programación de baja tensión • Depurador en circuito • Circuito PLL • Circuito de generación de tiempo El circuito PLL es nuevo en la serie PIC18F y ofrece la opción de multiplicar la frecuencia del oscilador para acelerar el funcionamiento general. El temporizador de vigilancia se puede usar para forzar un reinicio del microcontrolador en caso de un fallo del programa. El depurador en el circuito es útil durante el desarrollo del programa y puede usarse para devolver datos de diagnóstico, incluidos los valores de registro, ya que el microcontrolador está ejecutando un programa. • Los puertos de entrada-salida están ubicados en el lado derecho del diagrama. El PIC18F452 tiene cinco puertos paralelos llamados PORTA, PORTB, PORTC, PORTD y PORTE. La mayoría de los pines del puerto tienen múltiples funciones. Por ejemplo, los pines PORTA se pueden usar como entradas-salidas paralelas o entradas analógicas. Los pines PORTB se pueden usar como entradas-salidas paralelas o como entradas de interrupción. ORGANIZACIÓN DE LA MEMORIA DE PROGRAMA El mapa de memoria del programa se muestra en la Figura 2.3. Todos los dispositivos PIC18F tienen un contador de programa de 21 bits y, por lo tanto, son capaces de direccionar 2Mbytes de espacio de memoria. El espacio de memoria del usuario en el microcontrolador PIC18F452 es de 00000H a 7FFFH. El acceso a una ubicación de memoria inexistente (8000H a 1FFFFFH) causará una lectura de todos los 0s. El vector de reinicio, donde el programa comienza después de un reinicio, se encuentra en la dirección 0000. Las direcciones 0008H y 0018H están reservadas para los vectores de interrupciones de prioridad alta y baja, respectivamente, y las rutinas de servicio de interrupción deben escribirse para comenzar en una de estas ubicaciones Programa de mapa de memoria del PIC18F452 El microcontrolador PIC18F tiene una pila de 31 entradas que se utiliza para retener las direcciones de retorno para llamadas de subrutina e interrumpir el procesamiento. La pila no es parte del programa o del espacio de memoria de datos. La pila se controla mediante un puntero de pila de 5 bits que se inicializa a 00000 después de un reinicio. Durante una llamada de subrutina (o interrupción) el puntero de pila se incrementa primero, y la ubicación de memoria a la que apunta se escribe conLos contenidos del contador del programa. Durante el retorno de una llamada de subrutina (o interrupción), la ubicación de la memoria a la que ha apuntado el puntero de la pila disminuye. Los proyectos en este libro se basan en el uso del lenguaje C. Dado que el compilador en lenguaje C maneja automáticamente las operaciones de subrutina e interrupción de llamada / retorno, su operación no se describe aquí con más detalle. • La memoria del programa se direcciona en bytes, y las instrucciones se almacenan como dos bytes o cuatro bytes en la memoria del programa. El byte menos significativo de una palabra de instrucción siempre se almacena en una dirección uniforme de la memoria del programa. • Un ciclo de instrucción consta de cuatro ciclos: un ciclo de recuperación comienza con el incremento del contador del programa en Q1. En el ciclo de ejecución, la instrucción recuperada se bloquea en el registro de instrucciones en el ciclo Q1. Esta instrucción se decodifica y ejecuta durante los ciclos Q2, Q3 y Q4. Una ubicación de memoria de datos se lee durante el ciclo Q2 y se escribe durante el ciclo Q4. ORGANIZACIÓN DE LA MEMORIA DE DATOS