Vous êtes sur la page 1sur 124

PIC18 con CCS

(PIC18F14K50)

Autor: Andrés Raúl Bruno Saravia


Microchip RTC Argentina
PIC18 Arquitectura
Revisión
Microchip Familias de MCUs

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 3


Familia PIC18

PIC18 Tradicional

PIC18 serie - J

PIC18 serie - K
4KB 32KB 128KB
Program Flash
Tipicamente los productos con mucha memoria tambien tienen muchos pines y perifericos avanzados integrados

Tradiciona PIC18 PIC18 serie J PIC18 serie K


40 MHz, 10 MIPS, 5V 40-48 MHz, 10-12 MIPS, 3V 64MHz, 16 MIPS, 3V
Flash endurance 100k Flash endurance 1k – 10k Flash endurance 10k
EEPROM Emulate EEPROM EEPROM
Características Premium Menor costo >32KB Flash Menor costo <32KB Flash

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 4


Diagrama en Bloques Simplificado
Arquitectura PIC® 8-bit

Espacio de Espacio de
Programa Datos

Tabla de RAM
8-bit 8-bit
Acceso

Memoria
Peripfericos
Flash Bus de Bus de datos
instrucciones
16-bit 8-bit CPU 8-bit
Puertos I/O

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 5


Mapa de Memoria de Datos
Arquitectura PIC® 8-bit
Memoria de datos ACCESS RAM
PIC18F2520/4520
Mapa de Registros
hasta 4k bytes Banco0 GPR
Dividida en bancos
Banco1 GPR
de 256 byte
Medio Banco 0 y Banco2 GPR
medio banco 15 son
usados para crear ACCESS RAM

un banco virtual de ACCESS SFR

acceso directo
Banco13 GPR

Banco14 GPR

Banco15 GPR
* La división 50/50 no se mantiene en
ACCESS SFR
los dispositivos con muchos registros
SFR (Special Function Registers)

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 6


Mapa de memoria de Programa
Arquitectura PIC® 8-bit

Vector de Reset
Hasta 2MB (1M Words) 000000h

continuos totalmente Vector de INT de alta prioridad 000008h

lineal Vector de INT de baja prioridad 000018h

Memoria de Programa
En el chip
Contador de Programa de 21-bit

007FFEh

Nivel de Stack 1 008000h

Nivel de Stack 2

Memoria de Programa
Nivel de Stack 30
Sin implementar
Nivel de Stack 31
(Read as ‘0’)
Stack de 31 niveles
1FFFFEh

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 7


Tabla de Lectura
Arquitectura PIC® 8-bit
TBLPTRU TBLPTRH TBLPTRL
00 00 09 Puntero de Mem. Prog. de 21-bit

Memoria de Datos (RAM) Memoria de Programa (Flash)


0x000 0x000001 0x000000

22-bit Address
0x001 0x000003 0x000002
0x002 0x000005 0x000004
0x003 0x000007 0x000006
0x004 0x000009 2C 0x000008
0x005 TABLAT 0x00000B 0x00000A

2C 8-bit Data

0xFFA 0x1FFFF5 0x1FFFF4


0xFFB 0x1FFFF7 0x1FFFF6
0xFFC 0x1FFFF9 0x1FFFF8
0xFFD 0x1FFFFB 0x1FFFFA
0xFFE 0x1FFFFD 0x1FFFFC
0xFFF 0x1FFFFF 0x1FFFFE
Byte Alto Byte Bajo

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 8


Características especiales
Como setear los bits de configuración del PIC®
Osciladores
PIC18F: Sistema de Clock
Fuentes de Clock
Primaria
Selección Fija
LP, XT, HS, RC, EC, Int RC Osc
Secundaria
Oscilador Timer1 – Frecuencia fija
Necesario para base de tiempo de RTR
Oscilador Interno RC
INTOSC (8 MHz por default)
4, 2, 1 MHz, 500, 250, 125 y 31 kHz seleccionables
INTRC (31 kHz)
© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 11
Sistema de Clock PIC18F1XK50

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 12


PIC18F1XK50 Opciones del Oscilador para
el USB

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 13


PIC18F
Características Especiales
In-Circuit Serial Programming™
Solo necesita 2 pines para programar al Pin Function
dispositivo VPP Programming Voltage
VDD Supply Voltage
Conveniente para programar en sistemas
VSS Ground
Calibración de datos RB6 Clock Input
Serialización de datos RB7 Data I/O & Command Input
Suportado por debuggers y
programadores en MPLAB®

ICSP™ Connector

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 15


Características Especiales PIC18F

Amplio Voltaje de operación: 2.0V a 5.5V


Memoria de Programa Flash Mejorada con 100,000
ciclos de borrado/escritura
Memoria de Datos EEPROM con 1,000,000 de ciclos
de borrado/escritura
Retención de Datos en Memoria EEPROM Flash/Data
: 100 años típico

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 16


Watchdog Timer
Ayuda al software a recuperarse de un mal funcionamiento
Usa un oscilador libre RC en el chip
WDT es borrado por la instrucción CLRWDT
WDT Habilitable (WDTEN) no puede ser borrado por soft
el overflow (desborde) del WDT reetea al chip
Período del timeout programable : 18ms a 3.0s típico
Opera en modo SLEEP; sobre el time out, despierta la CPU.

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 17


Generador de Reset Interno

POR: Power On Reset


con MCLR ataado a VDD, es generado un
pulso de RESET cuando el flanco de Reset
VDD Circuito Interno
subida a VDD es detectado RESET
MCLR en CHIP
PWRT: Power Up Timer
72 ms (nominal)
Desacoplado del BOR
VDD
OST: Oscillator Startup Timer
MCLR
Mantiene en RESET al dispositivo por
1024 cyclos de maquina (TCYs)
Le permite al cristal o al resonador POR
estabilizarse TPWRT
Bypaseado en: Two Speed Startup Mode PWRT
INTOSC usa un clock para el TOST
procesador no estable OST
Internal
Reset
Reset Operación
© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 18
BOR –Brown Out Reset
Cuando el voltaje cae por debajo de un umbral
particular, el dispositivo se pone en RESET
Impide el funcionamiento irregular o inesperado
Elimina la necesidad de un circuito externo BOR

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 19


PBOR – Programmable Brown Out
Reset
Opción de configuración (fijado en tiempo de
programa)
No puede ser activado/desactivado por software
Cuatro puntos de disparo BVDD seleccionables
2.5V – Mini VDD para OTP MCUs PICmicro®
2.7V
4.2V
4.5V
Para otros umbrales use un supervisor externo
(MCP1xx, MCP8xx/TCM8xx, or TC12xx)

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 20


PBOR – Programmable Brown Out
Reset
Mantiene al MCU PICmicro® MCU en RESET durante ~72ms
despues que VDD supero el nivel de umbral

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 21


PLVD – Detector de Bajo Voltaje
Programable
Alerta antes que el
brown out
16 Puntos de
disparo
seleccionables
1.8V hasta 4.5V en
pasos de 0.1 a 0.2V
Entrada analógica
externa
VREF interno

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 22


PIC18F Características especiales
Resets
PIC18 RESETS
Power-on Reset (POR)
MCLR Reset durante la operación normal
Programmable Brown-out Reset (BOR)
Watchdog Timer (WDT) Reset (durante la
ejecución )
Instrucción RESET
Reset por Stack Full
Reset por Stack Underflow
Para todos los resets el vector del PC es la
dirección 0
Despues del RESET el PC tiene 0x000000
© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 23
PIC18F Características especiales
RESET Registers

Los siguientes bits son afectados por el RESET


RCON Register
POR = ‘0’: Power On RESET
BOR = ‘0’ & POR = ‘1’: BOR RESET
TO = ‘0’: WDT RESET
RI = ‘0’: RESET Instrucción
STKPTR Register
STKFUL = ‘1’: Stack over flow RESET
STKUNF = ‘1’: Stack under flow RESET
MCLR RESET ies indicado por:
POR, BOR, TO & RI = ‘1’ y STKFUL & STKUNF = ‘0’

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 24


PIC18 Bits de Configuración
Que son los bits de Configuración?

Son usados para activar o 16-bit Program Memory


no las características Reset Vector
High Interrupt Vector
especiales: Low Interrupt Vector

Proteccion del Codigo

User Memory
Watchdog Timer
Tipo de Oscilador User Flash

Opcion de Debug
Otras…

Configuration
Registro CONFIGlocalizado en la

Memory
memoria de programa, fuera del area Registros de Configuración
de ejecución del código
Device ID
(inicia en @ 0x300000)
© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 26
Bits de Configuración
PIC18F4520 (4 of 11)
CONFIG1H Register
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

IESO FCMEN — — FOSC3 FOSC2 FOSC1 FOSC0


bit 7 bit 0

CONFIG2L Register
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

— — — BORV1 BORV0 BOREN1 BOREN0 PWRTEN


bit 7 bit 0

CONFIG2H Register
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

— — — WDTPS3 WDTPS2 WDTPS1 WDTPS0 WDTEN


bit 7 bit 0

CONFIG3H Register
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

MCLRE — — — — LPT1OSC PBADEN CCP2MX


bit 7 bit 0

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 27


Configurations Bits con CCS
Usar directiva #FUSES

#fuses HS,NOWDT

options puede variar segun el dispositivo. Un


listado de las opciones válidas esta en el tope
de cada archivo de cabecera de cada
dispositivo.

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 28


PIC18F1x50

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 29


PIC18F14K50 Pin Out

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 30


USB Fundamentos
Un poco de historia...

USB fue co-desarrollado por un grupo de


compañías….
Compaq
Intel
Microsoft
NEC
…quería hacer mucho mas facil el adicionar/remover
perifericos de la PCs
1998 – USB 1.1
2000 – USB 2.0
2003 – On-the-Go complementa a USB 2.0 (v1.0a)
© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 32
USB Basico
USB un maestro “Single Master + Multiple Slaves” bus encuestado
constantemente
USB Host Controller (Master)
y Root Hub

Mouse Printer Speakers


Start Of Frame Mouse Packets Speakers Packets Printer Packets

Frame Frame Frame


© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 33
Comparación de Buses

Ojo! No tiene que 1394-Fire Wire


soportar High-Speed Ethernet
para ser
WiFi (b/g)
USB 2.0 Compatible

USB 2.0

LS-USB FS-USB HS-USB


1.5 Mb/s 12 Mb/s 480 Mb/s

CAN USB 1.1


Serial Port Parallel Port

500 Kb/s 1 Mb/s 1.5 Mb/s 12 Mb/s 100 Mb/s 480 Mb/s 1 Gb
© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 34
Grandes Mitos
Mito: un Periférico USB Low-Speed puede transferir datos hasta
la velocidad de 187.5 KB/s (1.5 Mbps)

Real: Imposible, por las restricciones de las especificaciones del


USB

8 byte de datos transferidos cada 10 ms


= 800 Bytes/segundo solamente

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 35


Siguiente Gran Mito!
Mito: Un periférico USB Full-Speed USB puede transferir datos hasta 1.5
MB/s (12 Mb/s)

Real: Imposible, 1.5 MB/s es el total del ancho de banda del BUS
El ancho de banda se reparte entre todos los periféricos USB
El Over head del Protocolo
Las restricciones del Protocolo
La realidad de la transferencia de datos de un único periférico puede
llegar a ~1.0 MB/s en el mejor de los casos
Solo 64 KB/s en la mayoría de los casos

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 36


Topología del BUS USB Físico
Host (Tier 1)
USB Host Controller
& Root Hub

Tier 2 Keyboard Speaker Hub

Tier 3 Logic Hub: Carga maxima = 5


Analyzer
Hub

Tier 4 Printer Hub

Tier 5 Hub
PIC18 USB esta diseñado para
Tier 6 Hub ser periferico. PIC24/PIC32
puede funcionar como Host o
Periférico.
Tier 7 Data Logger
Hub
Hasta 126 periféricos...

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 37


Interfaz Física

VBUS VBUS ~ 5.0 V


D+ D+
~ 3.3 V
D- D-
GND GND

Half Duplex con codificación de datos NRZI


Bus Alimentado para cada dispositivo:
4.40-5.25V
Garantizado 100 mA Debe usar alimentación
externa si se necesita
500 mA max por medio de negociación mas de uno

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 38


Conectores Standard
- USB 2.0 -

“A”

USB Host

“B” “mini-B”
FS, HS FS, HS
Device Device

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 39


Conectores Standard
- Micro-USB -

Objetivo: Define un tamaño más pequeño, conector


compatible con USB 2.0 para dispositivos muy pequeños (es
decir, teléfonos celulares)
Plugs y Receptaculos
Micro-B plug y receptaculo
Permitido en productos OTG y on OTG

Micro-A/B receptaculo
Permitido en productos OTG

Micro-A plug
Indicacual es escencialmente el host (OTG)

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 40


Endpoints: Source/Destino de datos
USBen un periférico
Data Bucket
USB PIC® MCU

USB framed data RAM


Endpoint 1 OUT LED

USB framed data RAM


Endpoint 1 IN “Caps-Lock”

 Número máximo de endpoints por dispositivo especificados por el USB


:
− 16 OUT endpoints + 16 IN endpoints = 32 endpoints
− PIC18F87J50, PIC18F4550, PIC24F, PIC32MX soporta hasta 32 endpoints
− PIC18F14K50 soporta hasta 16 endpoints
 EP0 = es el “caño” de comunicación por Default

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 41


Clases de Dispositivos USB

Floppy
Data Glove Drive
Ethernet
Adapter
Mouse
External
Hard Drive
PICkit™ 3
Starter Kit Modem
Mass Storage Device
Joystick Class (MSD)

Communication Device
Class (CDC) MPLAB®
Keyboard REAL ICE™
in-circuit emulator

Custom Class
(Vendor Class)
Human Interface Device Class
(HID)
Muchas mas clases….

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 42


El Proceso de Enumeración

POWERED
Power Bus
(self/bus) reset
ATTACHED DEFAULT

Cable Get Device


Connected Descriptor
SUSPENDED

DETACHED ADDRESS

Get
Descriptors

CONFIGURED

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 43


Auto-Detección: Full-Speed
Peripheral Device
USB PIC® MCU

VUSB 3.3 V
Full Speed Identification
D+ line pull-up
1.5 kΩ 5%

+5V

D+
Transceiver
D-

GND

USB
Connector

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 44


Auto-Detección: Low-Speed
Peripheral Device
USB PIC® MCU

VUSB 3.3 V
Low Speed Identification
D- line pull-up
1.5 kΩ 5%

+5V

D+
Transceiver
D-

GND

USB
Connector

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 45


Resistores Pull-up dentro del chip

Peripheral Device
USB PIC® MCU

VUSB 3.3 V

resistores pull-up dentro


del chip!

+5V

D+
Transceiver
D-

GND

USB
Connector

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 46


Planeando la Alimentación
- Arquitectura -

“Low Power” alimentado del bus


Hasta 100 mA (1 ‘carga única’) desde el BUS

Function Controller +
Function

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 47


Planeando la Alimentación
- Arquitectura -

“High Power”
100-500 mA desde el bus
Debe ser enumerado a low power (100 mA)
Device pide el bMaxPower
Host habilita la configuración deseada solicitando el
Set_Configuration

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 48


Planeando la Alimentación
- Arquitectura -

“Self Powered” device


Opcionalmente se puede consumir hasta 100 mA del
bus (si es reactivado) + tanto como se encuentra
disponible en su propia fuente

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 49


Planeando la Alimentación
- Necesito Autoalimentación? -
Deberá alimentarse al dispositivo
externamente si:
este necesita funcionar sin estar conectado al
BUS
este necesita mas de 500 mA
Este va a estar conectado a una PC con
baterías, o hubs

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 50


Planeando la Alimentación

Power from V DD
USB Cable

≤10µF

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 51


Dispositivos alimentado externamente
- Detectando la conexión al USB -

Self-Powered
VBUS from
USB Cable V DD
I/O

Si el dispositivo está autoalimentado,


debe utilizar un pin I / O con tolernacia
5V al detectar una conexión del cable
antes de habilitar el módulo USB y pull-
up en D + y D-. Además, el dispositivo no
debe nunca estar en modo fuente VBUS

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 52


Scalable USB
PIC® MCU Portfolio

~50 USB PIC MCUs PIC32


High Performance, Pin Compatible to PIC24F
The industry’s strongest 80 MHz, 1.53 DMIPS/MHz
Up to 80 MIPS
scalable product, family, and 64- & 100-Pin Packages
software migration path Up to 512 KB Flash
Up to 32 KB RAM
Performance

USB 2.0 Device, Embedded Host, OTG

PIC24F
Mid-Range, Capacitive-Touch Capable
Up to 16 MIPS
64-, 80- & 100-Pin Packages
Up to 256 KB Flash
Up to 16KB RAM
USB 2.0 Device, Embedded Host, OTG

PIC18F
Small, Low Power, Low Cost 32-bit
Up to 12 MIPS
18- to 80-Pin Packages 16-bit
Up to 128KB Flash
Up to 4KB RAM 8-bit
USB 2.0 Device Support

Migration
© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 53
Control USB with CCS compiler
usb_init()
usb_task()
usb_enumerated()
usb_cdc_kbhit()
usb_cdc_getc()
usb_cdc_putc(c)
usb_cdc_puts(*str)
Include files:
<usb_desc_cdc.h> & <usb_cdc.h>
© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 54
PICPeriféricos Comunes
PIC18 Common Peripherals
Puertos I/O
Analog Comparator
Converso Analógico Digital
Timers (0,1,2,3)
CCP como PWM
Addressable USART (AUSART)

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 56


Puertos I/O
Puertos I/O

Hasta 70 pines bidireccionales


Los mismos estan multiplexados con Periféricos
Alta capacidad de Corriente
25mA en modo fuente/sumidero
Manipulación directa de cada bit en un solo
ciclo
Diodos de Protección ESD 4kV
Basado sobre el modelo del cuerpo Humano
Despues del reset:
Todos los I/O son entradas (Hi-Z)
Todos los pines con capacidades analógicas
activadas por default
© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 58
Configurundo los pines como digitales
El método depende del dispositivo específico
Puede escontrarse en el registro ADCON 1
Port Configuration Bits
Registro de control (ADCON1)
Could be in ADCON1 register
VCFG1 VCFG0 PCFG3 PCFG2 PCFG1 PCFG0

Puede encontrarse en el registro ANSEL


1 = Analog; 0 = Digital
Analog Select Register (ANSEL)
ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0

Analog Select High Register (ANSELH)


ANS13 ANS12 ANS11 ANS10 ANS9 ANS8

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 59


Control de la dirección I/O

Bit n en el registro de control TRISx controla


la dirección en el Bit n en PORTx
1 = Entrada, 0 = Salida
© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 60
Entrada Slida de Datos
Registros TRIS, PORT y LAT
Bus Interno de Datos
Escribe Lee
PORTx Lee
LATx PORTx
o LATx

LATx 0 1 0 1 0 0 1 1

PORTx
Pines son todos entradas
(I/O Pins) por default

Dirección de Datos
TRISx 0 0 1 1 0 1 0 0 (1 = IN, 0 = OUT)
© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 61
PORTB Opciones
Todos lod pines del PORTB tienen resistores de
PULL UP.
Un bit controla el pull up de todos los pines
INTCON2 Register
R/W-1 R/W-1 R/W-1 R/W-1 U-0 R/W-1 U-0 R/W-1

bit 7 bit 0

bit 7 RBPU: PORTB Pull-up Enable bit


1 = All PORTB Pull-ups are disabled
0 = PORTB Pull-ups are enabled by
individual port latch values

bit 0 RBIP: RB Port Change Interrupt Priority bit


1 = High Priority
0 = Low Priority

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 62


Control I/O con CCS
output_a (value)
output_bit (pin, value)
output_high (pin)
output_low (pin)
output_toggle(pin)
variable = input (pin)
variable = input_a()

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 63


Conversor A/D:
A/D de 10-bit
Conersor A/D de 10-bit
Channel Select
CHS3:CHS0 In ADCON0 Register

AN12
AN12
AN10
AN9
13:1 Analog Mux

AN8
AN7* 10-bit A/D Result Registers
VAIN
AN6*
AN5*
ADC ADRESH ADRESL

AN4
VREF+ / AN3 VREF+ VREF-
VREF- / AN2
AN1 VDD
AN0
x0
x1
1x

0x

VSS

VREF Select VCFG1:VCFG0 In ADCON1 Register


*AN5-AN7 not available on 28-pin devices
© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 65
ADC 10-bit
Escalando resultados

•FS = Fondo de
escala

•N-bits, 2N Codigos
posibles

•“Tamaño del Bit” o


Paso = VFS/2N

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 66


ADC 10-bit
Escalando resultados
Ejemplo:
10-bits ADC => 210 = 1024 codigos
Escala de valores completa 0 – 5.12 V
Cual es el tamaño de un bit?

Respuesta:
Tamaño del Bit = 5.12 / 1024 = 5 mV

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 67


ADC Interpretando los resultados
Ejemplo:
8-bits ADC => 28
Escala completa 0 – 5.0 V
1 Bit = 19.53 mV
Calculo del valor si ADRESH = 0xCA

Result = VIN / Tamaño del Bit


VIN = Result * Tamaño del Bit
VIN = 202 * 19.53 mV
VIN = 3.9456 V

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 68


Adquisición de la señal
Acquisition Time Conversion Time
time
VC
VIN
ADRES

10
Tiempo de adquisición
time
determinado por la
SOURCE
capacidad CHold y la
Impedancia de fuente RS < 10kΩ

ADC
+ Este tiempo le permite cargarse V
VC completamente a CHold
CHOLD
-

VSS
© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 69
ADC Conversion
Acquisition Time Conversion Time
Acquisition Time
time
VC
VIN
ADRES

ADC Result
10 time
11 ADC Conversion
Clock cycles (TAD)

ADC time

+
CHOLD VC
-

VSS
© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 70
Conversor A/D de 10-bit
Configuración
ADCON0 Register
U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

bit 7 bit 0

bit 5-2 CHS3:CHS0 bit 1 GO/DONE: A/D Conversion Status bit


Analog Channel Select Bits 1 = A/D Conversion in progress
0000 = Channel 0 (AN0) 0 = A/D Idle
0001 = Channel 1 (AN1)
0010 = Channel 2 (AN2) bit 0 ADON: A/D On bit
0011 = Channel 3 (AN3) 1 = A/D Converter module is enabled
0100 = Channel 4 (AN4) 0 = A/D Converter module is disabled
0101 = Channel 5 (AN5)
0110 = Channel 6 (AN6)
0111 = Channel 7 (AN7)
1000 = Channel 8 (AN8)
1001 = Channel 9 (AN9)
1010 = Channel 10 (AN10)
1011 = Channel 11 (AN11)
1100 = Channel 12 (AN12)

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 71


Conversor A/D de 10-bit
Configuración
ADCON1 Register
U-0 U-0 R/W-0 R/W-0 R/W-0* R/W* R/W* R/W*

bit 7 bit 0

bit 5 VCFG1: Voltage Reference (VREF-) Configuration bit


1 = VREF- (AN2)
0 = VSS

bit 4 VCFG0: Voltage Reference (VREF+) Configuration bit


1 = VREF+ (AN3)
0 = VDD

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 72


Conversor A/D de 10-bit
Configuración
ADCON1 Register
U-0 U-0 R/W-0 R/W-0 R/W-0* R/W* R/W* R/W*

bit 7 bit 0

bit 3-0 PCFG3:PCFG0


A/D Port Configuration Control bits

A = Analog Input
D = Digital I/O

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 73


Conversor A/D de 10-bit
Configuración
ADCON2 Register
U-0 U-0 R/W-0 R/W-0 R/W-0* R/W* R/W* R/W*

bit 7 bit 0

NOTE: This parameter determines the value of TAD: the conversion time per bit.

bit 2-0 ADCS2:ADCS0: A/D Conversion Clock Selection bits


111 = FRC (Clock derived from A/D RC oscillator)
110 = FOSC/64
101 = FOSC/16
100 = FOSC/4
011 = FRC (Clock derived from A/D RC oscillator)
010 = FOSC/32
001 = FOSC/8
000 = FOSC/2

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 74


Conversor A/D de 10-bit
Configuración
Seleccionando el clock del A/D

A/D Clock Source (TAD) Maximum Device Frequency


Operation ADCS2:ADCS0 PIC18F4520 At FOSC = 4 MHz:
2 TOSC 000 2.86 MHz
TOSC = 1/FOSC
4 TOSC 100 5.71 MHz = .25 µs
8 TOSC 001 11.43 MHz TAD = 4TOSC
16 TOSC 101 22.86 MHz = 1 µs

32 TOSC 010 40.0 MHz


64 TOSC 110 40.0 MHz
RC x11 *
* The Internal RC has a typical TAD time of 1.2µs
Minimum TAD = 0.7µ
µs See data sheet for official specification.
© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 75
Conversor A/D de 10-bit
Configuración

Calculando el tiempo de adquisición

TACQ = TAMP + TC + TCOFF

TAMP = Amplifier Settling Time


= Tamp internal + Tamp external
TC = Charging Time
= -(CHOLD)·(RIC + RSS + RS)·ln(1/2047)µ µs
TCOFF = Temperature Coefficient
= (Temp – 25 C)·(0.02µ µs/ C) for Temp > 25 C
= 0 for Temp < 25 C

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 76


Conversor A/D de 10-bit
Configuración

Calculando el tiempo del amplificados

TAMP = TAMP INT+ TAMP EXT


TAMP INT : Tiempo interno del amplificador. Chequear el data sheet para el
dispositivo específico. Para el PIC18F4520, TAMP INT es 0.2 µs.

TAMP EXT: Es el tiempo del amplificador externo. Este es muy importante cuando el
circuito externo acondiciona la señal. Para la placa de micorochip PICDEM2 Plus
es un POTENCIOMETRO, y este número es 0 µs.

TAMP = 0.2 µs

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 77


Conversor A/D de 10-bit
Configuración

Calculando el Tiempo de Carga

TC = -(CHOLD)·(RIC + RSS + RS)·ln(1/2047)µ


µs

CHOLD = 25pF
RIC = 1kΩ

RSS = 2kΩ

RS = 2.5kΩ
Ω MAX

Asumiendo que la impedancia máxima es de


2.5kΩ
Ω:
TC = 1.05µ
µs
© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 78
Conversor A/D de 10-bit
Configuración

Calculando el coeficiete de temperatura

TCOFF = (Temp – 25 C)·(0.02µ


µs/ C)
Temp = Temperatura de Operación

Valido para Temp. > 25 C.


TCOFF = 0 para Temp. < 25 C

Usando la máxima temperatura de operación de


85 C para un dispositivo industrial:

TCOFF = 1.2µ
µs
© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 79
Conversor A/D de 10-bit
Configuración

Calculando el Tiempo de adquisición

TACQ = TAMP + TC + TCOFF

Para Rs = 2.5k Ω
Temp. = 85 C
TAMP = 0.2 µs

TACQ = 0.2 + 1 + 1.2 = 2.4 µs

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 80


Conversor A/D de 10-bit
Configuración
ADCON2 Register
U-0 U-0 R/W-0 R/W-0 R/W-0* R/W* R/W* R/W*

bit 7 bit 0

bit 5-3 ACQT2:ACQT0: A/D Acquisition Time Selection bits


111 = 20 TAD
110 = 16 TAD
101 = 12 TAD Given:
100 = 8 TAD TACQ = 2.4 µs
TAD = 1 us
011 = 6 TAD
010 = 4 TAD Then:
001 = 2 TAD ACQT2:0 = 010 = 4.0 µs
000 = 0 TAD

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 81


Conversor A/D de 10-bit
Configuración
ADCON2 Register
R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

bit 7 bit 0

bit 7 ADFM: Selecciona el resultado del formato del A/D


1 = Justificado a la derecha

ADRESH ADRESL
b9 b8 b7 b6 b5 b4 b3 b2 b1 b0

0 = Justificado a la izquierda
ADRESH ADRESL
b9 b8 b7 b6 b5 b4 b3 b2 b1 b0

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 82


Control ADC con CCS

setup_adc(mode)
setup_adc_ports(value)
set_adc_channel(channel)
read_adc(mode)
adc_done()
#device adc=xx (xx=8,10,12 o16 bits)

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 83


Timers
Timer Comparativa
TIMER 0 TIMERS 1 & 3 TIMERS 2 & 4

SIZE OF REGISTER 8-bits or 16-bits 8-bits


16-bits
CLOCK SOURCE Fosc/4 Fosc/4 Fosc/4
(Internal)

CLOCK SOURCE T0CKI pin T13CKI pin or None


(External ) Timer 1 oscillator
(T1OSC)
CLOCK SCALING Prescaler 8-bits Prescaler 2-bits Prescaler
AVAILABLE
(1:2
1:256) (1:1, 1:2, 1:4, 1:8) (1:1,1:4,1:16)
(Resolution)
Postscaler
(1:1
1:16)
INTERRUPT EVENT On overflow On overflow TMR REG matches
FFh
00h FFFFh
0000h PR2
CAN WAKE PIC FROM NO YES NO
SLEEP?

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 85


Timer0
Modo compatible con PIC16
8-bit Timer/Counter
Prescaler Programable de 8 bits
Fuente de clock externa o interna
Interrupción sobre el overflow de FF a 00

FOSC/4 0 TMR0IF
1
T0CKI Clock
1 TMR0L
Sync
Programmable
0
Prescaler
T0SE T0CS
T0PS2:T0PS0 PSA

8-bit Data Bus

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 86


Timer0
Modo 16-bit
16-bit Timer / Counter
Modo Lectura/Escritura en 16-bit
Interrupción sobre overflow de FFFF a 0000
Same basic features as compatibility mode

FOSC/4 0 TMR0IF
1
T0CKI Clock
1 High Byte TMR0L
Sync
Programmable
0
Prescaler READ
WRITE
TMR0L
T0SE T0CS TMR0L

T0PS2:T0PS0 PSA TMR0H

8-bit Data Bus


© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 87
Timer0 Operation

FOSC/4 TMR0IF
0
1
T0CKI Clock
1 TMR0L
Sync
Programmable
0
Prescaler
T0SE T0CS
T0PS2:T0PS0 PSA

DATA BUS
T0CON Register
TMR0ON T08BIT T0CS T0SE PSA T0PS2:0

T08BIT
1 = 8 BIT
0 = 16 BIT

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 88


Timer0 Operation
FOSC/4 0 TMR0IF
1
T0CKI Clock
1 High Byte TMR0L
Sync
Programmable
0
Prescaler READ
WRITE
TMR0L
T0SE T0CS TMR0L

T0PS2:T0PS0 PSA TMR0H

T0CON Register DATA BUS

TMR0ON T08BIT T0CS T0SE PSA T0PS2:0

T08BIT
1 = 8 BIT
0 = 16 BIT

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 89


Timer0 Operation
FOSC/4 0 TMR0IF
1
T0CKI Clock
1 High Byte TMR0L
Sync
Programmable
0
Prescaler READ
WRITE
TMR0L
T0SE T0CS TMR0L

T0PS2:T0PS0 PSA TMR0H

T0CON Register
TMR0ON T08BIT T0CS T0SE PSA T0PS2:0

TMR0 Clock Source Select


1 = TOCK1, 0 = Fosc/4

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 90


Timer0 Operation

FOSC/4 0 TMR0IF
1
T0CKI Clock
1 High Byte TMR0L
Sync
Programmable
0
Prescaler READ
WRITE
TMR0L
T0SE T0CS TMR0L

T0PS2:T0PS0 PSA TMR0H

T0CON Register
TMR0ON T08BIT T0CS T0SE PSA T0PS2:0

Source Edge Select


1 = increment TMR0 on rising edge
0 = increment TMR0 on falling edge

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 91


Timer0 Operation

FOSC/4 0 TMR0IF
1
T0CKI Clock
1 High Byte TMR0L
Sync
Programmable
0
Prescaler READ
WRITE
TMR0L
T0SE T0CS TMR0L

T0PS2:T0PS0 PSA TMR0H

T0CON Register
TMR0ON T08BIT T0CS T0SE PSA T0PS2:0

Prescaler Assignment
1= prescaler NOT assigned
0= prescaler IS assigned

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 92


Timer0 Operation
FOSC/4 0 TMR0IF
1
T0CKI Clock
1 High Byte TMR0L
Sync
Programmable
0
Prescaler READ
WRITE
TMR0L
T0SE T0CS TMR0L

T0PS2:T0PS0 PSA TMR0H

DATA BUS TMR0


PS2 PS1 PS0 RATE
T0CON Register 0 0 0 1:2
0 0 1 1:4
TMR0ON T08BIT T0CS T0SE PSA T0PS2:0
0 1 0 1:8
0 1 1 1:16
Prescaler Rate Select Bits 1 0 0 1:32
1 0 1 1:64
1 1 0 1:128
1 1 1 1:256

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 93


Timer0 Operation
FOSC/4 0 TMR0IF
1
T0CKI Clock
1 High Byte TMR0L
Sync
Programmable
0
Prescaler READ
WRITE
TMR0L
T0SE T0CS TMR0L

T0PS2:T0PS0 PSA TMR0H

T0CON Register
TMR0ON T08BIT T0CS T0SE PSA T0PS2:0

TMR0ON
1 = ON
0 = STOPPED

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 94


Timer1 and Timer3
16-bit Timer / Counter
Timer, Synchronous Counter or Asynchronous
Counter
Can operate from separate external crystal
Two read/write 8-bit registers
÷1, ÷2, ÷4, or ÷8 Prescaler
Interrupt on overflow from FFFFh to 0000h

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 95


Timer1 and Timer3

Timer 1 Oscillator 0
T1OSO/
1
T13CKI Prescaler Sync 1
1, 2, 4, 8 Detect
FOSC/4 0
T1OSI Sleep Input T1SYNC
T1OSCEN TMR1CS
TMR1ON
T1CKPS1: T1CKPS0

TMR1IF

Clear Timer 1
High Byte TMR1L
(CCP Special Event Trigger)
READ
TMR1L WRITE
TMR1L

RD16 T1RUN TCKPS1:0 T1OSCEN T1SYNC TMR1CS TMR1ON TMR1H

Bit 7 Bit 0
T1CON Register
8-bit Data Bus
© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 96
Timer1 and Timer3
Timer 1 Oscillator 0
T1OSO/
1
T13CKI Prescaler Sync 1
1, 2, 4, 8 Detect
FOSC/4 0
T1OSI Sleep Input T1SYNC
T1OSCEN TMR1CS
TMR1ON
T1CKPS1: T1CKPS0
16-bit Read/Write Mode Enable
1 = Read/Write of Timer TMR1IF
in one operation
0 = Read/Write of Timer TMR1H TMR1L
in two 8-bit operations Clear Timer 1
(CCP Special Event Trigger)

8-bit Data Bus


T1CON Register
RD16 T1RUN TCKPS1:0 T1OSCEN T1SYNC TMR1CS TMR1ON
Bit 7 Bit 0

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 97


Timer1 and Timer3
Timer 1 Oscillator 0
T1OSO/
1
T13CKI Prescaler Sync 1
1, 2, 4, 8 Detect
FOSC/4 0
T1OSI Sleep Input T1SYNC
T1OSCEN TMR1CS
TMR1ON
T1CKPS1: T1CKPS0
16-bit Read/Write Mode Enable
1 = Read/Write of Timer
in one operation TMR1IF
Clear Timer 1
0 = Read/Write of Timer (CCP Special Event Trigger)
High Byte TMR1L
in two 8-bit operations
READ
TMR1L WRITE
TMR1L

TMR1H

T1CON Register 8-bit Data Bus


RD16 T1RUN TCKPS1:0 T1OSCEN T1SYNC TMR1CS TMR1ON
Bit 7 Bit 0

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 98


Timer1 and Timer3
Timer 1 Oscillator 0
T1OSO/
1
T13CKI Prescaler Sync 1
1, 2, 4, 8 Detect
FOSC/4 0
T1OSI Sleep Input T1SYNC
T1OSCEN TMR1CS
TMR1ON
T1CKPS1: T1CKPS0

TMR1IF

Clear Timer 1
High Byte TMR1L
Timer1 Oscillator Enable (CCP Special Event Trigger)
1 = T1OSC Enabled READ
TMR1L WRITE
0 = T1OSC off TMR1L

TMR1H

T1CON Register
8-bit Data Bus
RD16 T1RUN TCKPS1:0 T1OSCEN T1SYNC TMR1CS TMR1ON
Bit 7 Bit 0

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 99


Timer1 and Timer3
Timer 1 Oscillator 0
T1OSO/
1
T13CKI Prescaler Sync 1
1, 2, 4, 8 Detect
FOSC/4 0
T1OSI Sleep Input T1SYNC
T1OSCEN TMR1CS
TMR1ON
T1CKPS1: T1CKPS0
Timer1 Clock Source
1= External Clock
0 = Fosc/4 TMR1IF

Clear Timer 1
High Byte TMR1L
(CCP Special Event Trigger)
READ
TMR1L WRITE
TMR1L
T1CON Register
TMR1H
RD16 T1RUN TCKPS1:0 T1OSCEN T1SYNC TMR1CS TMR1ON
Bit 7 Bit 0

8-bit Data Bus

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 100


Timer1 and Timer3
Timer 1 Oscillator 0
T1OSO/
1
T13CKI Prescaler Sync 1
1, 2, 4, 8 Detect
FOSC/4 0
T1OSI Sleep Input T1SYNC
T1OSCEN TMR1CS
TMR1ON
Timer1 Prescale Select T1CKPS1: T1CKPS0
11 = 1:8
10 = 1:4 TMR1IF
01 = 1:2
00 = 1:1 Clear Timer 1
High Byte TMR1L
(CCP Special Event Trigger)
READ
TMR1L WRITE
TMR1L

T1CON Register TMR1H

RD16 T1RUN TCKPS1:0 T1OSCEN T1SYNC TMR1CS TMR1ON


Bit 7 Bit 0
8-bit Data Bus

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 101


Timer1 and Timer3
Timer 1 Oscillator 0
T1OSO/
1
T13CKI Prescaler Sync 1
1, 2, 4, 8 Detect
FOSC/4 0
T1OSI Sleep Input T1SYNC
T1OSCEN TMR1CS
TMR1ON
T1CKPS1: T1CKPS0
Timer1 System Clock Status
Read Only Bit
1 = Device clock derived from Timer1 OSC TMR1IF
0 = Device clock derived from another source
Clear Timer 1
High Byte TMR1L
(CCP Special Event Trigger)
READ
TMR1L WRITE
TMR1L
T1CON Register
TMR1H
RD16 T1RUN TCKPS1:0 T1OSCEN T1SYNC TMR1CS TMR1ON
Bit 7 Bit 0 8-bit Data Bus

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 102


Timer1 and Timer3
Timer 1 Oscillator 0
T1OSO/
1
T13CKI Prescaler Sync 1
1, 2, 4, 8 Detect
FOSC/4 0
T1OSI Sleep Input T1SYNC
T1OSCEN TMR1CS
TMR1ON
Timer1 External Clock T1CKPS1: T1CKPS0
Synchronization
Bit only used when TMR1CS = 1 TMR1IF
1 = Synchronize external clock input Clear Timer 1
0 = Do not synchronize (CCP Special Event Trigger) High Byte TMR1L

READ
TMR1L WRITE
T1CON Register TMR1L

TMR1H
RD16 T1RUN TCKPS1:0 T1OSCEN T1SYNC TMR1CS TMR1ON
Bit 7 Bit 0

8-bit Data Bus

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 103


Timer1 and Timer3
Timer 1 Oscillator 0
T1OSO/
1
T13CKI Prescaler Sync 1
1, 2, 4, 8 Detect
FOSC/4 0
T1OSI Sleep Input T1SYNC
T1OSCEN TMR1CS
TMR1ON
Timer On T1CKPS1: T1CKPS0
1 = Enables Timer
0 = Stops Timer
TMR1IF
Clear Timer 1
(CCP Special Event Trigger)
High Byte TMR1L

READ
TMR1L WRITE
TMR1L

T1CON
RD16 Register
T1RUN TCKPS1:0 T1OSCEN T1SYNC TMR1CS TMR1ON TMR1H

Bit 7 Bit 0

8-bit Data Bus

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 104


Timer2
8-bit Timer with prescaler and postscaler
Used as PWM time base
TMR2 is readable & writable
TMR2 resets on match with PR2
Match with PR2 generates interrupt
Used as baud clock for MSSP (SPI)

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 105


Timer2
T2CON Register
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
- T2OUTPS3 T2OUTPS2 T2OUTPS1 T2OUTPS0 TMR2ON T2CKPS1 T2CKPS0
bit 7 bit 0

00 = 1:1 TMR2 Postscale Value 0000 = 1:1


01 = 1:4 Selection Bits 0001 = 1:2
1x = 1:16 T2OUTPS3:T2OUTPS0
1111 = 1:16
TMR2 Prescale Value
1:1 to 1:16
Selection Bits Postscaler
TMR2IF
T2CKPS1:T2CKPS0
Timer 2 Output
(To PWM or MSSP)
Reset TMR2/PR2 Match
1:1, 1:4, 1:16
FOSC/4 Prescaler
TMR2 Comparator PR2

8-bit Data Bus

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 106


Control Timers con CCS
setup_timer_x(mode)
set_timerx(value).
value=get_timerx.

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 107


PIC18 Interrupts
Interrupción
Definición

Interrupción son llamadas a funciones disparadas por eventos


del Hardware, a dichas funciones no se les puede pasar
parámetros ni tampoco pueden devolver parámetros

PIC18 Tiene 2 vectores: Alta y Baja Prioridad


Las funciones de interrupciones deben ser
tratadas de foema especial:
ISRs no reciben ni devuelven parámetros
ISRs no son llamadas por el código principal
ISRs no son llamadas por otras funciones

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 109


Lógica de Interrupción
Modo Legal o compatible con PIC16

TMR0IF Core Interrupts

TMR0IE
Other Core
Interrupts Wakeup
to CPU

TMR1IF Peripheral
TMR1IE Interrupts Interrupt to
CPU
Vector to 0x0008
Other GIE
Peripheral
Interrupts

PEIE

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 110


Lógica de Interrupción
Modo Prioridad

IP INT0IF INT0IE
IE
IF GIEH
Vector to 0x0008

High Priority
Interrupt to CPU

Wakeup to CPU

Low Priority
Interrupt to CPU
IP
IE Vector to 0x0018
IF GIEL

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 111


PIC18 Fuentes de Interrupción
Fuentes de Interrupción
3 o 4 Int. Externas (INT0-INT3)
Edge Triggered
Rising or Falling selected in INTCON2 register
PORTB Interrupción por cambio (RB4-RB7)
Timer Rollover/Overflow
Cambio en la salida del comparador
Final de Conversión A/D
Eventos en el canal de comunicaciones
Eventos en otros periféricos…

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 112


Habilitando las Interrupciones
(1 de 9)

Select Legacy or Priority mode interrupt


operation
Default is no priority levels
PIC16 Compatibility mode
RCON Register
IPEN SBOREN --- RI TO PD POR BOR

IPEN: Interrupt Priority Enable


1 = Enable priority levels on interrupts
0 = Disable priority levels on interrupt

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 113


Habilitando las Interrupciones
(2 de 9)
Set Peripheral Interrupt Priority
Only needed if using Priority Mode
1 = High Priority, 0 = Low Priority
IPR1 Register
PSPIP ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP

PSPIP: Parallel Slave Interrupt Priority SSPIP: MSSP Interrupt Priority


ADIP: A/D Converter Interrupt Priority CCPIP: CCP1 Interrupt Priority
RCIP: EUSART Rcv Interrupt Priority TMR2IP: Timer2 Interrupt Priority
TXIP: EUSART Tx Interrupt Priority TMR1IP: Timer1 Interrupt Priority
IPR2 Register
OSCIP CMIP --- EEIP BCLIP HLVDIP TMR3IP CCP2IP

OSCIP: Oscillator Fail Interrupt Priority BCLIP: Bus Collision Interrupt Priority
CMIP: Comparator Interrupt Priority HLVDIP: High/Low Voltage Detect Interrupt Priority
---- Unimplemented Bit TMR3IP: Timer3 Interrupt Priority
EEIP: Data EEPROM/Flash Write CCP2IP: CCP2 Interrupt Priority
Operation Interrupt Priority
© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 114
Habilitando las Interrupciones
(3 de 9)
Ensure Peripheral Interrupt Flags are clear
If set, an interrupt is pending or being processed
1 = Set, 0 = Clear
PIR1 Register
PSPIF ADIF RCIF TXIF SSPIF CCPIF TMR2IF TMR1IF
PSPIF: Parallel Slave Interrupt Flag SSPIF: MSSP Interrupt Flag
ADIF: A/D Converter Interrupt Flag CCPIF: CCP1 Interrupt Flag
RCIF: EUSART Rcv Interrupt Flag TMR2IF: Timer2 Interrupt Flag
TXIF: EUSART Tx Interrupt Flag TMR1IF: Timer1 Interrupt Flag
PIR2 Register
OSCIF CMIF --- EEIF BCLIF HLVDIF TMR3IF CCP2IF

OSCIF: Oscillator Fail Interrupt Flag BCLIF: Bus Collision Interrupt Flag
CMIF: Comparator Interrupt Flag HLVDIF: High/Low Voltage Detect Interrupt Flag
---- Unimplemented Bit TMR3IF: Timer3 Interrupt Flag
EEIF: Data EEPROM/Flash Write CCP2IF: CCP2 Interrupt Flag
Operation Interrupt Flag
© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 115
Habilitando las Interrupciones
(4 de 9)
Set Peripheral Interrupt Enables
1 = Enabled, 0 = Disabled

PIE1 Register
PSPIE ADIE RCIE TXIE SSPIE CCPIE TMR2IE TMR1IE
PSPIE: Parallel Slave Interrupt Enable SSPIE: MSSP Interrupt Enable
ADIE: A/D Converter Interrupt Enable CCPIE: CCP1 Interrupt Enable
RCIE: EUSART Rcv Interrupt Enable TMR2IE: Timer2 Interrupt Enable
TXIE: EUSART Tx Interrupt Enable TMR1IE: Timer1 Interrupt Enable
PIE2 Register
OSCIE CMIE --- EEIE BCLIE HLVDIE TMR3IE CCP2IE

OSCIE: Oscillator Fail Interrupt Enable BCLIE: Bus Collision Interrupt Enable
CMIE: Comparator Interrupt Enable HLVDIE: High/Low Voltage Detect Interrupt Enable
---- Unimplemented Bit TMR3IE: Timer3 Interrupt Enable
EEIE: Data EEPROM/Flash Write CCP2IE: CCP2 Interrupt Enable
Operation Interrupt Enable

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 116


Habilitando las Interrupciones
(5 de 9)
Set Core Interrupt Priority
Only needed if using Priority Mode INT0 does not have an IP
bit – it is always a high
1 = High Priority, 0 = Low Priority priority interrupt

INTCON2 Register
RBPU INTEDG0 INTEDG1 INTEDG2 --- TMR0IP --- RBIP

TMR0IP: TMR0 Overflow Interrupt Priority


RBIP: RB Port Change Interrupt Priority

INTCON3 Register
INT2IP INT1IP --- INT2IE INT1IE --- INT2IF INT1IF

INT2IP: INT2 External Interrupt Priority


INT1IP: INT1 External Interrupt Priority

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 117


Habilitando las Interrupciones
(6 de 9)
Ensure Core Interrupt Flags are Clear
If set, an interrupt is pending or being processed
1 = Set, 0 = Clear
INTCON Register
GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF

TMR0IF: TMR0 Overflow Interrupt Flag


INT0IF: INT0 External Interrupt Flag
RBIF: RB Port Change Interrupt Flag

INTCON3 Register
INT2IP INT1IP --- INT2IE INT1IE --- INT2IF INT1IF

INT2IF: INT2 External Interrupt Flag


INT1IF: INT1 External Interrupt Flag

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 118


Habilitando las Interrupciones
(6 de 9)
Set Core Interrupt Enables
1 = Enabled, 0 = Disabled

INTCON Register
GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF

TMR0IE: TMR0 Overflow Interrupt Enable


INT0IE: INT0 External Interrupt Enable
RBIE: RB Port Change Interrupt Enable

INTCON3 Register
INT2IP INT1IP --- INT2IE INT1IE --- INT2IF INT1IF

INT2IE: INT2 External Interrupt Enable


INT1IE: INT1 External Interrupt Enable

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 119


Habilitando las Interrupciones
(8 de 9)

Enable Low Priority or Peripheral Interrupts


Still need to enable Global Interrupts when in PIC16 compatibility mode

INTCON Register
GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF

PEIE/GIEL :
Peripheral Interrupt Enable (PIC16 Compatibility Mode) /
Global Interrupt Enable Low (Priority Mode)

In PIC16 Compatibility Mode (RCON<IPEN> = 0):


1 = Enables all unmasked peripheral interrupts
0 = Disables all peripheral interrupts

In Priority Mode (RCON<IPEN> = 1):


1 = Enables all low priority peripheral interrupts
0 = Disables all low priority peripheral interrupts
© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 120
Habilitando las Interrupciones
(9 de 9)

Enable High Priority or Global Interrupts

INTCON Register
GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF

GIE/GIEH :
Global Interrupt Enable (PIC16 Compatibility Mode) /
Global Interrupt Enable High (Priority Mode)

In PIC16 Compatibility Mode (RCON<IPEN> = 0):


1 = Enables all unmasked interrupts
0 = Disables all interrupts

In Priority Mode (RCON<IPEN> = 1):


1 = Enables all high priority interrupts
0 = Disables all high priority interrupts
© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 121
Control de interrupciones con CCS
Se usa la directiva #INT_XXX para indicar la fuente
de la interrupcion.
XXX=depende del periférico interruptor
La rutina de interrupción no puede recibir ni pasar
parámetros, debe ser void
Ejemplo:

#int_rda
void isr_recepcion (void)
{
sentencias
}

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 122


Thank You!
Trademarks
The Microchip name and logo, the Microchip logo, Accuron, dsPIC, KeeLoq, microID, MPLAB, PIC, PICmicro,
PICSTART, PRO MATE, PowerSmart, rfPIC and SmartShunt are registered trademarks of Microchip Technology
Incorporated in the U.S.A. and other countries.
AmpLab, FilterLab, Migratable Memory, MXDEV, MXLAB, SEEVAL, SmartSensor and The Embedded Control
Solutions Company are registered trademarks of Microchip Technology Incorporated in the U.S.A.
Analog-for-the-Digital Age, Application Maestro, dsPICDEM, dsPICDEM.net, dsPICworks, ECAN, ECONOMONITOR,
FanSense, FlexROM, fuzzyLAB, In-Circuit Serial Programming, ICSP, ICEPIC, Linear Active Thermistor, Mindi,
MiWi, MPASM, MPLIB, MPLINK, MPSIM, PICkit, PICDEM, PICDEM.net, PICLAB, PICtail, PowerCal, PowerInfo,
PowerMate, PowerTool, REAL ICE, rfLAB, rfPICDEM, Select Mode, Smart Serial, SmartTel, Total Endurance,
UNI/O, WiperLock and ZENA are trademarks of Microchip Technology Incorporated in the U.S.A. and other
countries.
SQTP is a service mark of Microchip Technology Incorporated in the U.S.A.
All other trademarks mentioned herein are property of their respective companies.

© 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 124

Vous aimerez peut-être aussi