MICROCONTROLADOR PIC18F2550

CARACTERÍSTICAS

Arquitectura RISC avanzada, hardware de 16 bits con 8 bits de datos.

77 instrucciones. Hasta 16 K x16 de memoria de programa.

Multiplicador Hardware 8x8.

16 KB de RAM y 256 Bytes de EEPROM.

Frecuencia máxima de reloj 48 MHz. Oscilador interno desde 31KHz hasta 8 MHz.

Pila de 32 niveles.

Temporizadores: TMR0, TMR1, TMR2 y TMR3.

Múltiples fuentes de interrupción.

Módulo de Captura/Comparacion/PWM.

Módulo ADC de 10-bits
tema

Módulo comparador analógico

Periférico de comunicación serial: EUSART, I2C, SPI y
USB v 2.0.

CONFIGURACIÓN DE PINES

ARQUITECTURA

Bus de la memoria de programa: 21 líneas de dirección y 16 líneas para instrucciones).

Bus de la memoria de datos: 12 líneas de dirección y 8 líneas de datos.

MEMORIAS

PROGRAMA

CONTADOR DE PROGRAMA: El PC (contador de programa) tiene 21 bits (PCU, PCH y PCL). El bit menos significativo del PC apunta a BYTEs, no a WORDs, por lo que es "0". El PC se incrementa de dos en dos. Se dispone de los correspondientes registros auxiliares PCLATU y PCLATH para actuar de forma combinada con el PC cuando éste se escribe o se lee.

PILA: La Pila es un bloque de memoria RAM independiente de 31 palabras de 21 bits y un puntero de 5 bits, que sirve para almacenar temporalmente el valor del PC cuando se produce una llamada a una subrutina o interrupción. El "Top Of Stack"" es accesible se puede leer y escribir (será conveniente quitar previamente las interrupciones). El puntero de pila (contenido en el registro STKPTR) es un contador de 5 bits que indica la posición actual del final de pila. El contenido del final de pila es accesible mediante los registros TOSU, TOSH, TQSL.

DATOS

El microcontrolador PIC182550 tienen hasta un total de 4 KBytes agrupados en 16 bancos, con 256 bytes cada uno. Como en el resto de las gamas, existen los registros de propósito general (GPRs), los cuales pueden ser utilizados por el usuario; y registros de función especial (SFRs), con los cuales se puede monitorizar y/o controlar el funcionamiento de la CPU y de las unidades funcionales del PIC; éstos últimos se sitúan en la zona más alta (desde F60h hasta FFFh). El PIC18F2550 dispone una memoria RAM de datos 1.536 bytes (6 bancos de 256 bytes). Además dispone de 126 bytes dedicados a los registros de función especial (SFRs) situados en la parte alta del banco 15, como se muestra en la figura.
La memoria de datos tipo EEPROM del PIC18F2550 dispone una capacidad de 256 bytes. Al ser una memoria no volátil, los datos almacenados en ella se mantienen en ausencia de tensión de alimentación.

REGISTRO FUNCIÓN ESPECIAL

INTERRUPCIONES

Bit de habilitación de interrupción: permite habilitar a nivel individual la interrupción.

Flag de interrupción: se pone a ‘1’ cuando se produce la condición de interrupción independientemente de si la interrupción está habilitada o no. Debe ponerse a ‘0’ por software cuando se procesa la interrupción.

Bit de prioridad de interrupción: establece si la interrupción es de alta o de baja prioridad (no está disponible para la interrupción externa 0).

OSCILADOR

La línea superior acaba directamente en el switch USBDIV que (seleccionando su “entrada 0”) comunica directamente la frecuencia del oscilador de entrada con la salida. Este caso es el resultado de conectar directamente un cristal de 48MHz en el oscilador inicial.

La segunda ruta obedece a la conexión en el oscilador de partida de un cristal compatible, pero de frecuencia diferente a 48MHz. La frecuencia de oscilación, al llegar al PLL Prescaler, se divide entre 1, 2, 3, 4, 5, 6, 10 ó 12, de manera que a la salida del multiplexor PLLDIV siempre haya 4MHz. Estos se convertirán en 96MHz a la salida de PLL. El switch USBDIV permite el paso de la frecuencia dividida entre 2 (48MHz) seleccionando su “entrada 1” (USBDIV1). En particular, en este caso en que se parte de un cristal de 20MHz, la frecuencia se divide entre 5 (PLL5), y da lugar a 4MHz a la salida del multiplexor.
Una ruta alternativa a la salida del 96 MHz PLL es dirigirse hacia el PLL Postscaler; allí, la frecuencia de oscilación de 96MHz se puede dividir entre 2, 3, 4 ó 6 (CPUDIV X), obteniéndose frecuencias de reloj de 16MHz, 24MHz, 32MHz ó 48MHz.

Por la tercera ruta, la frecuencia del cristal llega al Oscilator Postscaler. En el diagrama vemos otro CPUDIV. ¿Por qué no es la frecuencia de reloj para el procesador?. La respuesta es que al configurar el fuse HSPLL estamos indicando que hacemos uso de un cristal con frecuencia superior a 4 MHz (HS) y que lo hacemos por mediación del PLL (HSPLL), por lo que CPUDIV queda deshabilitado. En este nuevo divisor los cocientes pueden ser 1, 2, 3 ó 4. Una vez dividida la frecuencia, la señal accede hasta el switch FOSC3:FOSC0. Finalmente, las frecuencias resultantes se usarán como reloj para el funcionamiento del procesador.

PUERTOS E/S

Registro TRIS: Mediante este registro se configuran cada una de las líneas de E/S del puerto como ENTRADA (bit correspondiente a ‘1’) o como SALIDA (bit correspondiente el ‘0’).

Registro PORT: Mediante este registro se puede leer el nivel de pin de E/S y se puede establecer el valor del latch de salida.

Registro LAT: Mediante este registro se puede leer o establecer.

EJEMPLO

set_tris_A (0x7F) // Puerto A como entradas
set_tris_B (0x00) // Puerto B como salidas
set_tris_C (0b11110000) //Pines RC0..RC3 salidas y RC4..RC7 entradas