Electronica curso avanzado de microcontroladores pic (proyectos pic 16f84)
Introducción PIC
-
Upload
david-delgado -
Category
Documents
-
view
33 -
download
6
Transcript of Introducción PIC
Micros y Laboratorio
Henry Carrillo, PhD
Estudio de la arquitectura de un
microcontrolador: PIC gama media
PARTE I
Generalidades
Introducción al PIC (I)
PIC (Peripheral Interface Controller) es el microcontroladordesarrollado por Microchip Technology Inc.
Existen otros fabricantes ATMEL, Freescale (Motorola),Texas
Microchip es líder en ventas en el segmento de 8 bits (memoria dedatos)
Introducción al PIC (II)
Son microcontroladores RISC con arquitectura Harvard,con variedad de módulos, tamaños y tipos de memorias,empaquetados y cantidad de pines.
Familia PIC
La familia de microcontroladores PIC se clasifica deacuerdo al tamaño de los registros de datos:
8 bits
16 bits
32 bits
Adicionalmente, y debido a la arquitectura Harvard, sepuede tener microcontroladores PIC con tamaños deinstrucciones de:
12 bits, 14 bits, 16 bits, 24 bits y 32 bits
Gran cantidad de opciones flexibilidad en el diseño
En general a mayor tamaño en el bus de datos e instruccionesmayor cantidad de memoria y pines en el dispositivo.
Familia PIC – 8 bits (I)
Familia PIC – 8 bits (II)
Familia PIC – 8 bits (III)
Microcontroladores PIC son los más usados en aplicaciones decontroladores embebidos sin requerimientos altos de tiemporeal.
De bajo costo, variedad de herramientas de desarrollo,programador sencillo de diseñar y/o implementar, opción dedebug y programación en circuito. MPLAB X IDE Single Integrated Development Environment supports all PIC
MCUs
XC8 MPLAB X C Compiler for 8-bit devices. Free versions available with no time or memory limitations.
PICkit_3 Most affordable in-circuit debugger/programmer with simple breakpoints
ICD_3 High-speed hardware debugger/programmer with complex breakpoints
Proteus Electrical and microcontroller simulator
PIC_IDE_OshonSoft Microcontroller simualtor
Microchip wiki http://microchip.wikidot.com/ . Also information in application notes.
Nomenclatura de dispositivos PIC (I)
La nomenclatura de los dispositivos PIC está compuesta
por:
Nombre del dispositivo.
Familia.
Tipo de memoria de programa.
Rango de voltajes de trabajo.
Modelo especifico.
Rango de temperaturas de trabajo.
Empaquetado.
E.g 18F2550 o 18F84 o dsPIC30F3010
Nomenclatura de dispositivos PIC (II)
Nombre del dispositivo
Puede ser PIC para los microcontroladores de uso general o dsPIC para los especializados en tratamiento digital de señales
Familia
La familia representa varios modelos que comparten la misma arquitectura de la CPU. E,g para 8 bits 10,14,16 y 18.
Los modelos difieren en las características internas del microcontrolador capacidad de memoria, número de instrucciones,…
Tipo de memoria de programa
C Memoria OTP, para productos finales
F Memoria Flash, para desarrollos
R ROM, en desuso dado que generalmente no se puede programar in-circuit
Nomenclatura de dispositivos PIC (III)
Rango de voltajes de trabajo
Rangos comunes L (2 a 5.5V) y sin indicador (4 a 5.5V).
Modelo especifico
Distingue un microcontrolador en especifico de otro: 877A,84A, 819, etc. Relacionado con la capacidad de la memoria dedatos y número de pines.
Rango de temperaturas de trabajo
I (Industrial de -40 a 85 °C).
E (Extendido de -40 a 125 °C)
Nomenclatura de dispositivos PIC (IV)
Empaquetado
Se tienen varias opciones : P (PDIP), PT (TQFP), SO (SOIC), SP
(SPDIP), S (SSOP), ML (QFN) y L (PLCC).
PDIP SOIC QFN
Nomenclatura de dispositivos PIC (V)
Ejemplos
PIC16C877A I/P
PIC de la familia 16, memoria OTP, rango de voltaje 4 a 5.5V,
modelo 877A, temperatura industrial, empaquetado PDIP.
PIC18LF4550 I/S
PIC de la familia 18, memoria flash, rango de voltaje 2 a 5.5V,
modelo 4550, temperatura industrial, empaquetado TSSOP.
PARTE II
Arquitectura
Características principales de la Arquitectura
de un PIC 8 bits
Características principales de la Arquitectura Arquitectura Harvard.
Entre 35 y 83 instrucciones (RISC).
Máxima velocidad de reloj de 64 MHz
Hasta 16 MIPS
Capacidad de memoria de programa hasta 128 KB.
65536 instrucciones de 14 bits
Ejecución de cada instrucción en solo un ciclo de bus aexcepción de las que involucren salto.
1 ciclo de instrucción 4 ciclos de reloj
3 Modos de direccionamiento de memoria.
Memoria de datos y registros organizado en bancos detrabajo.
Bloques Internos de un PIC 8 bits
En un Microcontrolador PIC se tienen los siguientes
bloques:
CPU
Memorias (Datos y Programa)
Periféricos
Puertos entrada/salida
Comunicación I2C, CAN
Sistemas especiales (auxiliares)
Reloj
In-Circuit Serial Programming
Brown out reset (bajada de voltaje)
Watchdog reset
Bloques Internos de un PIC 8 bits-
Arquitectura del microcontrolador PIC16F87
2
• CPU
• Memorias
(Datos y
Programa)
• Periféricos
• Sistemas
especiales
(auxiliares)
Bloques Internos de un PIC 8 bits
En un Microcontrolador PIC se tienen los siguientes
bloques:
CPU
Memorias (Datos y Programa)
Periféricos
Puertos entrada/salida
Comunicación I2C, CAN
Sistemas especiales (auxiliares)
Reloj
In-Circuit Serial Programming
Brown out reset (bajada de voltaje)
Watchdog reset
Bloques Internos de un PIC 8 bits – CPU –
Arquitectura Hardware
• Arquitectura Von Neumann
• Ejecuta instrucciones y datos
desde un solo espacio de
memoria
• Limita el ancho de banda de
ejecución del programa
• Arquitectura Harvard
• Usa dos espacios de memoria
separado para los datos y las
instrucciones
• Mejora el ancho de banda de
ejecución del programa
• Permite diferentes tamaños
de datos e instrucciones.
Arquitectura Harvard – Ejecución de
Instrucciones segmentadas (pipeline)
call SUB1
addwf REG2
movf PORTB,w
return
movf PORTC,w
return
SUB1
SUB2
movlw 0x05MAIN
movwf REG1
1
2
3
4
51
52
53
54
Example ProgramFetch
T0
Instruction Cycles
movlw 0x05 -
Pre-Fetched Instruction Executing Instruction
call SUB1
addwf REG2
movf PORTB,w
return
movf PORTC,w
return
SUB1
SUB2
movlw 0x05MAIN
movwf REG1
1
2
3
4
51
52
53
54
Example ProgramFetch Execute
T0 T1
Instruction Cycles
Fetch
movwf REG1 movlw 0x05
Pre-Fetched Instruction Executing Instruction
Arquitectura Harvard – Ejecución de Instrucciones segmentadas (pipeline)
call SUB1
addwf REG2
movf PORTB,w
return
movf PORTC,w
return
SUB1
SUB2
movlw 0x05MAIN
movwf REG1
1
2
3
4
51
52
53
54
Example ProgramFetch Execute
T0 T1 T2
Instruction Cycles
Fetch Execute
Fetch
call SUB1 movwf REG1
Pre-Fetched Instruction Executing Instruction
Time to execute normal instruction
Arquitectura Harvard – Ejecución de Instrucciones segmentadas (pipeline)
call SUB1
addwf REG2
movf PORTB,w
return
movf PORTC,w
return
SUB1
SUB2
movlw 0x05MAIN
movwf REG1
1
2
3
4
51
52
53
54
Example ProgramFetch Execute
T0 T1 T2 T3
Instruction Cycles
Fetch Execute
Fetch Execute
Fetch
addwf REG2 call SUB1
Pre-Fetched Instruction Executing Instruction
Arquitectura Harvard – Ejecución de
Instrucciones segmentadas (pipeline)
call SUB1
addwf REG2
movf PORTB,w
return
movf PORTC,w
return
SUB1
SUB2
movlw 0x05MAIN
movwf REG1
1
2
3
4
51
52
53
54
Example ProgramFetch Execute
T0
Flush
T1 T2 T3 T4
Instruction Cycles
Fetch Execute
Fetch Execute
Fetch
Fetch
movf PORTB,w call SUB1
Pre-Fetched Instruction Executing Instruction
Time to execute call
instruction includes
pipeline flush
Arquitectura Harvard – Ejecución de
Instrucciones segmentadas (pipeline)
call SUB1
addwf REG2
movf PORTB,w
return
movf PORTC,w
return
SUB1
SUB2
movlw 0x05MAIN
movwf REG1
1
2
3
4
51
52
53
54
Example ProgramFetch Execute
T0
Flush
T1 T2 T3 T4 T5
Instruction Cycles
Fetch Execute
Fetch Execute
Fetch
Fetch Execute
Fetch
return movf PORTB,w
Pre-Fetched Instruction Executing Instruction
Arquitectura Harvard – Ejecución de
Instrucciones segmentadas (pipeline)
call SUB1
addwf REG2
movf PORTB,w
return
movf PORTC,w
return
SUB1
SUB2
movlw 0x05MAIN
movwf REG1
1
2
3
4
51
52
53
54
Example ProgramFetch Execute
T0
Flush
T1 T2 T3 T4 T5
Instruction Cycles
T6
Fetch Execute
Fetch Execute
Fetch
Fetch Execute
Fetch Execute
Fetch
movf PORTC,w return
Pre-Fetched Instruction Executing Instruction
Arquitectura Harvard – Ejecución de
Instrucciones segmentadas (pipeline)
call SUB1
addwf REG2
movf PORTB,w
return
movf PORTC,w
return
SUB1
SUB2
movlw 0x05MAIN
movwf REG1
1
2
3
4
51
52
53
54
Example ProgramFetch Execute
T0
Flush
T1 T2 T3 T4 T5
Instruction Cycles
T6
Fetch Execute
Fetch Execute
Fetch
Fetch Execute
Fetch Execute
Fetch Flush
Fetch
T7
addwf REG2 return
Pre-Fetched Instruction Executing Instruction
Arquitectura Harvard – Ejecución de
Instrucciones segmentadas (pipeline)
8-bit Program Memory
14-bit Program Memory
1 1 0 0 0 0 k k k k k k k k
Instrucción de 8-bit tipica de un MCU 8-bitEjemplo: Freescale ‘Load Accumulator A’:
• 2 ubicaciones de memoria de programa
• Se ejecuta en 2 ciclos de instrucciones
Instrucción de 14-bit de un MCU PIC16 8-bit
Ejemplo: ‘Move Literal to Working Register’
• 1 ubicación de memoria de programa
• Se ejecuta en 1 ciclo de instrucción
Limita el ancho de
banda
Incrementa los
requerimientos de
memoria
Buses separados de datos y programas permiten esta estrategia ventaja de la arquitectura Hardvard
1 0 0 0 0 1 1 0
k k k k k k k k
ldaa #k
movlw k
Arquitectura Harvard – Instrucciones de palabra larga
Bloques Internos de un PIC 8 bits - CPU
• Arithmetic and Logical Unit
(ALU)
• La unidad aritmético
lógica es el centro de
procesamiento del
microcontrolador.
Realiza funciones
aritmética y booleanas
entre los datos de sus
entrada.
• W register
• El registro de trabajo, es
usado por la ALU para
sus operaciones y en
algunos casos almacenaje
temporal de datos
variable local
Bloques Internos de un PIC 8 bits - CPU
• Program Counter (PC)
• Es un registro que contiene la
dirección de memoria que será
ejecutada por el microcontrolador.
• Puede ser alterado por
instrucciones de salto de rutina
• Stack (Pila)
• La pila guarda el estado del PC
cuando se salta a una subrutina
(o interrupción) y se recupera el
estado del PC cuando se retorna
de una subrutina (o interrupción)
• Su profundidad define el numero
de veces que se puede anidar un
salto a rutina
CPU - Instrucciones y el archivo de registro
(Register file)
Data
B
us
d
Opcode d Address
Decoded Instruction
from Program Memory:
Arithmetic/Logic Function to
be Performed Result
Destination
Address of Second Source
Operand
Archivo de registro:
Toda la memoria de
datos es parte del
archivo de registro
cualquier ubicación de
la memoria de datos
puede ser operada
directamente
Todos los periféricos
están mapeados en la
memoria de datos
como una serie de
registros
Set de instruciones
ortogonal: Todas las
instrucciones pueden
operar en cualquier
ubicación de la
memoria de datos
w f
w f
ALU
W
Data Memory
(Register File)
07h
08h
09h
0Ah
0Bh
0Ch
0Dh
0Eh
0Fh
10h
CPU – Estructura de las instrucciones (I)
f f f f f f fdOpcode
067813
f f f f f f fOpcode
File Register Address
Destination (W or F)
Byte Oriented Operations
ADDWF 0x25, W
DestinationFile Register Address
• Instrucciones orientadas
a los Byte
• Opera sobre una
ubicación del archivo
de registro (memoria
de datos)
• 1º campo que
hace la CPU con los
datos
• 2º campo donde
almacena el
resultado (W o
archivo de registro)
• 3º campo
dirección del archivo
de registro
f f f f f f fbb bOpcode
067913
File Register Address
Bit Position (0-7)
Bit Oriented Operations
BSF 0x25, 3
Bit PositionFile Register Address
10
CPU – Estructura de las instrucciones
• Instrucciones orientadas
al bit
• Opera sobre un bit
de una ubicación del
archivo de registro
(memoria de datos)
• 1º campo que
hace la CPU con los
datos
• 2º campo sobre
que bit operar
• 3º campo
dirección del archivo
de registro
k k k k k k kkk k kOpcode
010 7813
k k k k k k kOpcode k
Literal Value
Literal and Control Operations
MOVLW 0x55
Literal Value
Opcode
CPU – Estructura de las instrucciones
• Instrucciones con valores
constantes
• Opera sobre una
ubicación del archivo
de registro (memoria
de datos) alterándola
con un valor
constante Suma,
resta, almacenamiento
• Instrucciones de control
• Pueden operar sobre
direcciones de
memoria o sin datos
• Saltos de rutina
call, goto, return
• Sleep, ClearWDT
Byte Oriented Operations Bit Oriented Operations
addwf f,d
andwf f,d
clrf f
clrw -
comf f,d
decf f,d
decfsz f,d
incf f,d
incfsz f,d
iorwf f,d
movf f,d
movwf f
nop -
rlf f,d
rrf f,d
subwf f,d
swapf f,d
xorwf f,d
Add W and f
AND W with f
Clear f
Clear W
Complement f
Decrement f
Decrement f, Skip if 0
Increment f
Increment f, Skip if 0
Inclusive OR W with f
Move f
Move W to f
No Operation
Rotate Left f through Carry
Rotate Right f through Carry
Subtract W from f
Swap nibbles in f
Exclusive OR W with f
bcf f,b
bsf f,b
btfsc f,b
btfss f,b
Bit Clear f
Bit Set f
Bit Test f, Skip if Clear
Bit Test f, Skip if Set
Literal and Control Operations
addlw k
andlw k
call k
clrwdt -
goto k
iorlw k
movlw k
retfie -
retlw k
return -
sleep -
sublw k
xorlw k
Add literal and W
AND literal with W
Call subroutine
Clear Watchdog Timer
Go to address
Inclusive OR literal with W
Move literal to W
Return from interrupt
Return with literal in W
Return from Subroutine
Go into standby mode
Subtract W from literal
Exclusive OR literal with W
CPU – Set de instrucciones PIC16
Bloques Internos de un PIC 8 bits
En un Microcontrolador PIC se tienen los siguientes
bloques:
CPU
Memorias (Datos y Programa)
Periféricos
Puertos entrada/salida
Comunicación I2C, CAN
Sistemas especiales (auxiliares)
Reloj
In-Circuit Serial Programming
Brown out reset (bajada de voltaje)
Watchdog reset
Modos de direccionamiento de memoria -
PIC16
Acceso a la memoria de datos:
Directo addwf <data_address>, <d>
Indirecto addwf INDF, <d>
Inmediato(Constante) movlw <constant>
Acceso a la memoria de programa:
Absoluto goto <program_address>
Relativo addwf PCL,f
Organización de la memoria de
programa – PIC16
La memoria de programa se divide
en cuatro paginas de 2k×14
El paginamiento de memoria solo
interesan en saltos de rutina. En
cualquier otro caso el uso es
secuencial.
La dirección 0000h se carga en un
evento de reset.
La dirección 0004h es usada en un
evento de interrupción.
El resto de dirección es de uso
libre
Reset Vector
Interrupt Vector
Page 0PCH = 00h
Page 1PCH = 08h
Page 2PCH = 10h
Page 3PCH = 18h
0000h
0004h
0800h
1000h
1800h
1FFFh
2k
2k
2k
2k
14-bits
Organización de la memoria de Datos –
PIC16PIC16F876/877 Register File Map
368 Bytes of General Purpose RAM Plus Special Function Registers
Accesses
70h – 7Fh
Accesses
70h – 7Fh
Bank 0
000h
01Fh
020h
07Fh
Bank 1
080h
09Fh
0A0h
0FFh
0EFh
SFR SFR
GPR
96
Bytes
GPR
80
Bytes
128
Bytes
Bank 2
100h
110h
17Fh
16Fh
10FhSFR
Accesses
70h – 7Fh
Bank 3
180h
190h
1FFh
1EFh
18FhSFR
GPR
96
Bytes
GPR
96
Bytes
• La memoria de datos se
divide en cuatro bancos
accesibles uno a la vez.
• Cada banco se divide en:
• Special Function
Registers (SFRs) que
contiene todos los
registros de
periféricos
• General Purpose
Registers (GPRs)
que son de uso libre
del programador
Organización de la memoria de datos –
PIC16 ejemplo
INDF
TMR0
PCL
STATUS
FSR
PORTA
PORTB
PORTC
PORTD
PORTE
PCLATH
INTCON
INDF
OPTION_REG
PCL
STATUS
FSR
TRISA
TRISB
TRISC
TRISD
TRISE
PCLATH
INTCON
INDF
TMR0
PCL
STATUS
FSR
PORTB
PCLATH
INTCON
INDF
OPTION_REG
PCL
STATUS
FSR
TRISB
PCLATH
INTCON
PIR1 PIE1 EEDATA EECON1
PIR2 PIE2 EEADR EECON2
Bank 0 Bank 1 Bank 2 Bank 3
000
001
002
003
004
005
006
007
008
009
00A
00B
00C
00D
080
081
082
083
084
085
086
087
088
089
08A
08B
08C
08D
100
101
102
103
104
105
106
107
108
109
10A
10B
10C
10D
180
181
182
183
184
185
186
187
188
189
18A
18B
18C
18D
Device Specific Registers
Registro STATUS
IRP RP1 RP0 TO PD Z DC C
bit 7 bit 0
IRP: Register Bank Select (used for Indirect addressing)
0 = Bank 0, 1 1 = Bank 2, 3
RP1:RP0: Register Bank Select Bits (used for direct addressing)
00 = Bank 0, 01 = Bank 1, 10 = Bank 2, 11 = Bank 3
TO:Time-out bit
0 = A WDT time-out occurred
PD: Power-down bit
0 = SLEEP instruction executed
Z: Zero bit
1 = Result of arithmetic operation is zero
DC: Digit cary / borrow bit
1 = Carry out of 4th low order bit occurred / No borrow occurred
C: Carry / borrow bit
1 = Carry out of MSb occurred / No borrow occurred
Bloques Internos de un PIC 8 bits
En un Microcontrolador PIC se tienen los siguientes
bloques:
CPU
Memorias (Datos y Programa)
Periféricos
Puertos entrada/salida
Comunicación I2C, CAN
Sistemas especiales (auxiliares)
Reloj
In-Circuit Serial Programming
Brown out reset (bajada de voltaje)
Watchdog reset
Periféricos – Puertos de entrada y salida
• Puertos de entrada y salida
• Permiten la lectura y
escritura de señales
digitales
• Los pines se pueden
configurar de los dos
modos (E/S),
mediante la
configuración de
registros. E.g TRISB
• Los pines pueden
estar multiplexados
con otros periféricos
ADC, I2C,…
• Máxima corriente por
un pin 25 mA
• Máxima corriente en
un puerto 100 mA
Periféricos – Puertos de entrada y salida
Ejemplos - Assembler
Bloques Internos de un PIC 8 bits
En un Microcontrolador PIC se tienen los siguientes
bloques:
CPU
Memorias (Datos y Programa)
Periféricos
Puertos entrada/salida
Comunicación I2C, CAN
Sistemas especiales (auxiliares)
Reloj
In-Circuit Serial Programming
Brown out reset (bajada de voltaje)
Watchdog reset
Sistemas especiales (Auxiliares) de un PIC –
circuito de Reloj (Oscilador)
Modos de configuración del oscilador:
• Los diferentes modos permiten flexibilidad en el diseño
• Modo LP Menor consumo de corriente
• Modo RC o INTRC Menor coste aunque menor precisión de reloj
Sistemas especiales (Auxiliares) de un PIC –
POR, OST y PWRT
• POR: Power On Reset
• Cuando MCLR está en alto un
pulso de reset se genera si se
detecta activación del voltaje
de polarización al
encenderse el PIC se resetea
• PWRT: Power Up Timer
• El dispositivo se mantiene en
reset por 72 ms para permitir
un voltaje de polarización
estable
• OST: Oscillator Start-up Timer
• El dispositivo se mantiene en
reset por 1024 ciclos de reloj
para estabilizar el circuito de
reloj (Oscilador)
POR, PWRT y OST permiten un ejecución del
código estable sin ejecuciones en falso.
Sistemas especiales (Auxiliares) de un PIC –
Sleep mode
• El microcontrolador puede entrar en modo de ahorro de energía
Instrucción especifica SLEEP()
• Se detiene el circuito de reloj (Oscilador)
• Se mantiene el estatutos de la CPU (PC, registros, Pila) resume su
funcionamiento en el mismo estado
• El consumo de corriente es minimo 0,1 uA corrientes de fuga
• Característica ideal para sensores distribuidos Alimentados por energía solar
Sistemas especiales (Auxiliares) de un PIC –
Watchdog Timer (WDT)
• La función de wacthdog timer es ayudar al microcontrolador a recuperarse de
un mal funcionamiento del software se basa en el sistema de hombre
muerto de los trenes
• Utiliza un timer dedicado con circuito de oscilación propio
• El WDT se resetea con un instrucción dedicada CLRWDT
• El WDT se activa por software pero no se puede desactivar Evita
desactivación por error
• Al llegar al máximo del WDT (overflow) se resetea el microcontrolador
• El WDT tiene variados periodos de tiempo 18 ms a 3.0 segundos
• El WDT puede funcionar en modo SLEEP despertando el
microcontrolador
Sistemas especiales (Auxiliares) de un PIC –
In-Circuit Serial Programming (ICSP)
• El ICSP permite programar el microcontrolador in situ
• Se puede programar sobre el propio PCB
• Ideal para actualización de software y calibración de parámetros
• Solo requiere dos terminales para la programación
Sistemas especiales (Auxiliares) de un PIC –
Brown Out Reset (BOR ) - I
• La función del BOR es mantener el microcontrolador en reset
cuando el voltaje de polarización cae (o fluctúa) de un
determinado nivel de voltaje
• Evita funcionamiento errático del microcontrolador
• No necesita circuitos externos de supervisión de voltaje
• El BOR se configura en tiempo de programación
• No se puede activar o desactivar por software
• Se puede escoger entre cuatro niveles
• 2.5v, 2.7v, 4.2v, y 4.5v
Sistemas especiales (Auxiliares) de un PIC –
Brown Out Reset (BOR ) - II
• Ejemplos
Sistemas especiales (Auxiliares) de un PIC –
Programmable Low Voltage Detect (PLVD )
• La función del PLVD es realizar
una alerta temprana antes que
entre en funcionamiento el Brown
Out Reset (BOR )
• Esto permite salvar el
contexto (estado) de la CPU
antes del RESET general
• Se puede seleccionar 16 niveles
de disparo para la advertencia
• Entre 1.8 v a 4.5 v en pasos
de 0.1 v o 0.2 v
• Se puede seleccionar una
referencia externa