Microcontroladores PIC18.
18F8520 1
Microcontrolador PIC 18F8520
Sistemas Empotrados. Grado en Ingeniería Informática.
Microcontroladores PIC18. 18F8520 2
Familias PIC
Sistemas Empotrados. Grado en Ingeniería Informática.
1
Microcontroladores PIC18. 18F8520 3
Características generales
PIC de gama mejorada (18C(F)XXX):
• Datos de 8 bits.
• Instrucciones de 16 bits.
• 77 instrucciones (multiplicación de 8x8 en un ciclo).
• Alta velocidad (hasta 40 Mhz) y alto rendimiento (10 MIPS)
• Arquitectura orientada al lenguaje C.
• Potentes herramientas de emulación.
• Ejemplos:
Sistemas Empotrados. Grado en Ingeniería Informática.
Microcontroladores PIC18. 18F8520 4
Características generales
Sistemas Empotrados. Grado en Ingeniería Informática.
2
Microcontroladores PIC18. 18F8520 5
M. DATOS 12x8 Arquitectura
M. PROGRAMA
21x16
Arquitectura Harvard
ALU 8 bits – multiplicación
de 8x8 en un ciclo
Puertos E/S: A…J
Comunicaciones Serie,
paralelo, ADC, Timers
EEPROM, PWM …
Pines E/S digital
multiplexados con periféricos
Características especiales:
POR, BOR, Watchdog Timer…
Sistemas Empotrados. Grado en Ingeniería Informática.
Microcontroladores PIC18. 18F8520 6
Modos de
memoria de programa
Sistemas Empotrados. Grado en Ingeniería Informática.
3
Microcontroladores PIC18. 18F8520 7
Memoria de programa
Modo Microcontrolador
15 bits: 32K Bytes
16K Palabras
NOP
Sistemas Empotrados. Grado en Ingeniería Informática.
Microcontroladores PIC18. 18F8520 8
Memoria de programa
Contador de programa (PC):
• Especifica la dirección de la instrucción que hay
que buscar para su ejecución.
• Tamaño 21 bits.
• Incremento +2 ⇨ LSB=0
• Estructura:
- PCL: PC<7:0> mapeado en memoria
- PCH: PC<15:8> accesible desde PCLATCH
- PCU: PC<20:16> accesible desde PCLATU
- PCLATU y PCLATCH se transfieren a PCU y
PCH en cualquier operación de escritura en
PCL
Sistemas Empotrados. Grado en Ingeniería Informática.
4
Microcontroladores PIC18. 18F8520 9
Memoria de programa
Ciclo de reloj/instrucción:
Flujo de instrucción/pipeline:
Sistemas Empotrados. Grado en Ingeniería Informática.
Microcontroladores PIC18. 18F8520 10
Instrucciones en memoria de programa
• La memoria del programa se direcciona en bytes.
• Las instrucciones se almacenan en dos o cuatro bytes, con lo bytes
menos significativos en las direcciones más bajas.
• El byte menos significativo de una palabra de instrucción se almacena
siempre en una posición de memoria de programa con una dirección par
(LSB = 0). Afectará, por ejemplo, a las instrucciones salto.
• El PC se incrementa en pasos de 2 (LSB siempre 0).
• Instrucciones de salto relativo (BTFSS…) ‘saltan palabras’. ¿Cómo
afectará a las instrucciones de de 2 palabras (MOVFF, CALL, GOTO y
LFSR)?
BTFSS STATUS, Z Si Z=0 Si Z=1 salta a la 2ª
FALSE GOTO k (16 bits LSB) ejecuta palabra de GOTO
(16 bits MSB) GOTO 👍
TRUE ADDLW 0x77
¿Debería interpretarse
como un NOP?
Sistemas Empotrados. Grado en Ingeniería Informática.
10
5
Microcontroladores PIC18. 18F8520 11
Instrucciones en memoria de programa
Ejemplos
Sistemas Empotrados. Grado en Ingeniería Informática.
11
Microcontroladores PIC18. 18F8520 12
Memoria de programa
Look-up tables:
• Computed Goto: CALL – RETLW – ADDWF PCL
- Datos 8 bits, 255 elementos
• Tablas en memoria Flash (memoria de
programa).
- Datos 16 bits, elementos. Según memoria
disponible.
- La ejecución de una posición de memoria de
programa que forma una instrucción no válida
se interpreta como un NOP.
- El puntero TBLPTR especifica la dirección de
memoria.
- El registro TABLAT contiene los datos que
se leen (instrucción TBLRD) o escriben ➔
(instrucción TBLWT) en la memoria de
programa.
- Aritmética del puntero TBLPTR:
Sistemas Empotrados. Grado en Ingeniería Informática.
12
6
Microcontroladores PIC18. 18F8520 13
Pila
• Almacena el PC en las llamadas a subrutina o se
produce una interrupción. Se restituye al finalizar
estas.
• La pila funciona como una RAM de 31 palabras
por 21 bits y un puntero de pila de 5 bits (reg.
SPKTPTR)
• El puntero de pila se inicializa a 00000b después
de un RESET
• La parte superior de la pila (Top of Stack) se
puede leer y escribir mediante los registros
TOSU, TOSH y TOSL.
• Fast Register Stack:
- Salvaguarda automáticamente los registros Status, WREG y BSR cuando se atiende una
interrupción. Se restituyen solo si la interrupción finaliza con RETFIE 1
- Solo tiene un nivel y no es accesible por ninguna operación de lectura o escritura
(referenciado como ‘shadow register’ en el datasheet).
- Se puede utilizar con una subrutina mediante CALL label, FAST/ RETURN FAST
Sistemas Empotrados. Grado en Ingeniería Informática.
13
Microcontroladores PIC18. 18F8520 14
Memoria de datos
• Memoria SRAM.
• Dividida en dos espacios:
- Registros de Propósito General (GPR)
- Registros de Funciones Especiales (SFR)
• GPR, utilizados por el usuario: variables,
datos temporales, etc.
• SFR, se utilizan para el control y
2 Kbytes
monitorización de estado de la MCU y
periféricos.
• Ejem. STATUS (supervisa el resultado de una
operación en la ALU), INTCON (gestión de
interrupciones), SPBRG (generador de reloj
de la USART), etc.
160 bytes
Sistemas Empotrados. Grado en Ingeniería Informática.
14
7
Microcontroladores PIC18. 18F8520 15
Memoria de datos
Direccionamiento directo
Acceso genérico:
•12 Dir =4 BSR + 8 Dir. Registro
•Ejemplo (valor previo de BSR=0010):
MOVF 0x3A,W,1
W ← (0x23A)
Acceso rápido:
•Direcciones 00-0x5F: banco 0
•Direcciones 0x60-0xFF: banco 15
•Ejemplo (valor previo de BSR=0010):
MOVF 0x3A,W,0
W ← (0x03A)
Sistemas Empotrados. Grado en Ingeniería Informática.
15
Microcontroladores PIC18. 18F8520 16
Memoria de datos
Direccionamiento indirecto
• Hay tres registros de para el direccionamiento
indirecto FSR0..2 de 12 bits
• Cada FSRi está formado por <FSRiH:FSRiL> de 8
bits cada uno
• Indirección mediante los registros (en realidad
operadores virtuales):
- INDFi acceso a la posición RAM (FSRi)1
- POSTDECi acceso a la posición RAM (FSRi-)
- POSTINCi acceso a la posición RAM (FSRi+)
- PREINCi acceso a la posición RAM (+FSRi)
- PLUSWi acceso a la posición RAM
(FSRi)+(Wreg) 1
(FSRi)→contenido de FSRi
FSR1 Mem. Datos FSR1 Mem. Datos
0x1A2 0x1A3
Wreg Wreg
0x?? 0x4B
MOVF POSTINC1, W
0x1A2 0x4B 0x1A2 0x4B
Sistemas Empotrados. Grado en Ingeniería Informática.
16
8
Microcontroladores PIC18. 18F8520 17
Memoria de datos
Operaciones de movimiento de bytes
Sistemas Empotrados. Grado en Ingeniería Informática.
17
Microcontroladores PIC18. 18F8520 18
Registro de Estado
Muestra el estado aritmético de la ALU.
Valor después de un POR
Modo de acceso al bit
Sistemas Empotrados. Grado en Ingeniería Informática.
18
9
Microcontroladores PIC18. 18F8520 19
Registro de control de RESET
El registro de control de RESET (RCON) permite identificar las fuentes de reinicio de
la MCU.
Sistemas Empotrados. Grado en Ingeniería Informática.
19
Microcontroladores PIC18. 18F8520 20
Interrupciones
Lógica de interrupciones Fuentes: E/S digital Puerto B
Periféricos
PIRi
PIEi
Nivel prioridad: Alto
IPRi Bajo
Gestión de fuentes de interrupción:
Registros INTCON
PIR1<0>→ ¿INT3? INTCON2
PIE1<0>→
IPR1<0> → INTCON3
(habilitación, reconocimiento,
prioridad y flanco activo)
Bit GIE INTCON<7>
Bit IPEN RCON<7>
Registros PIEi
PIRi
IPRi
Los flags de reconocimiento de
interrupción se activan cuando
se produce una condición de
interrupción independientemente
del estado de su correspondiente
bit de habilitación o de GIE
La MCU pone GIE=0 cuando entra en una
interrupción y GIE=1 cuando se ejecuta RETFIE
Sistemas Empotrados. Grado en Ingeniería Informática.
20
10
Microcontroladores PIC18. 18F8520 21
Interrupciones
Fases en la gestión de interrupciones:
1. PC->Pila y GIE=0
2. PC=0008H o PC=0018H
3. Se salvan los registros cuyo contenido se desee conservar (W, STATUS,
BSR, etc.). ¡¡Cuidado con Fast Register Stack!!
4. Se determina la fuente de interrupción (interrogando los flags
correspondientes)
5. Se ejecuta la rutina de servicio a la interrupción
6. Se borra el flag relacionado con la interrupción atendida.
7. Se restauran los registros
8. Se ejecuta RETFIE
9. Pila->PC y GIE=1
Sistemas Empotrados. Grado en Ingeniería Informática.
21
Microcontroladores PIC18. 18F8520 22
Puertos E/S
Puertos E/S: A…J
Comunicaciones Serie,
paralelo, ADC, Timers
EEPROM, PWM …
Pines E/S digital
multiplexados con periféricos
Sistemas Empotrados. Grado en Ingeniería Informática.
22
11
Microcontroladores PIC18. 18F8520 23
Puertos E/S
• Se pueden considerar los periféricos más sencillos, implementan las
entrada-salida digital de la MCU.
• Cada puerto tiene tres registros, mapeados en memoria, para su
funcionamiento:
• Registro TRISx (registro de dirección de datos).
- Cada uno de los bits de TRISx establece la dirección de la
información de su correspondiente bit (pin).
- Un 1 configura el pin como entrada y un 0 como salida.
- Ejem. TRISC=0x05 configura los pines 0 y 2 como entrada(1) y
el resto como salida (0).
- Después de un reset todos los bits de TRISx son 1.
• Registro PORTx, lee los niveles en los pines del dispositivo.
• Registro LATx (latch de salida), determina el valor del pin cuando
está configurado como salida. Las operaciones de escritura
(lectura-modificación-escritura en realidad) en el registro LATx,
leen, modifican y escriben el valor de salida sobre este registro y
no sobre el nivel lógico del pin como lo haría PORTx
Sistemas Empotrados. Grado en Ingeniería Informática.
23
Microcontroladores PIC18. 18F8520 24
Puertos E/S
Ejemplo, pines RB7:RB4
TRISB
0
PORTB
Z PORTB
X LATB
ENTRADA: 1
LATB
Resistores de pull-up
TRISB=1
TRISB=0
Interrupciones por cambio de nivel
Para borrar el flag de interrupción se
aconseja:
1º una lectura o escritura de PORTB
(excepto con la instrucción MOVFF)
2º Poner a cero RBIF (INTCON<0>)
Si GIE=1, RBIE=1
INTERRUPCIÓN
1 ENTRADA: 1
DISTINTOS: 1
COM PARADOR
Sistemas Empotrados. Grado en Ingeniería Informática.
24
12
Microcontroladores PIC18. 18F8520 25
Timers
Timer 0
8 bits
16 bits
Sistemas Empotrados. Grado en Ingeniería Informática.
25
Microcontroladores PIC18. 18F8520 26
Timers
Igual que las MCU de la gama media
Power On Reset
Sistemas Empotrados. Grado en Ingeniería Informática.
26
13
Microcontroladores PIC18. 18F8520 27
Timers
Se para TMR1 incluso con reloj
externo. El prescaler sigue
contando (ripple counter)
Sistemas Empotrados. Grado en Ingeniería Informática.
27
Microcontroladores PIC18. 18F8520 28
Timers
Sistemas Empotrados. Grado en Ingeniería Informática.
28
14