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 Flash endurance 100k EEPROM Características Premium 40-48 MHz, 10-12 MIPS, 3V Flash endurance 1k – 10k Emulate EEPROM Menor costo >32KB Flash 64MHz, 16 MIPS, 3V Flash endurance 10k EEPROM Menor costo <32KB Flash © 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 4 Diagrama en Bloques Simplificado Arquitectura PIC® 8-bit Espacio de Programa Espacio de Datos Tabla de Acceso 8-bit Memoria Flash Bus de instrucciones 16-bit 8-bit Bus de datos 8-bit CPU 8-bit © 2011 Microchip Technology Incorporated. All Rights Reserved. RAM Peripfericos Puertos I/O Slide 5 Mapa de Memoria de Datos Arquitectura PIC® 8-bit Memoria de datos hasta 4k bytes Dividida en bancos de 256 byte Medio Banco 0 y medio banco 15 son usados para crear un banco virtual de acceso directo ACCESS RAM PIC18F2520/4520 Mapa de Registros Banco0 GPR Banco1 GPR Banco2 GPR ACCESS RAM ACCESS SFR Banco13 GPR Banco14 GPR * La división 50/50 no se mantiene en los dispositivos con muchos registros SFR (Special Function Registers) Banco15 GPR ACCESS SFR © 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 6 Mapa de memoria de Programa Arquitectura PIC® 8-bit Hasta 2MB (1M Words) continuos totalmente lineal Vector de Reset 000000h Vector de INT de alta prioridad 000008h Vector de INT de baja prioridad 000018h Memoria de Programa En el chip Contador de Programa de 21-bit 007FFEh 008000h Nivel de Stack 1 Nivel de Stack 2 Nivel de Stack 30 Nivel de Stack 31 Memoria de Programa Sin implementar (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 Memoria de Datos (RAM) Memoria de Programa (Flash) 0x000 22-bit Address 0x001 0x002 0x003 0x004 0x005 Puntero de Mem. Prog. de 21-bit 0x000001 0x000000 0x000003 0x000002 0x000005 0x000004 0x000007 0x000006 2C 0x000009 TABLAT 2C 0x000008 0x00000B 0x00000A 8-bit Data 0xFFA 0x1FFFF5 0x1FFFF4 0xFFB 0x1FFFF7 0x1FFFF6 0xFFC 0x1FFFF9 0x1FFFF8 0xFFD 0x1FFFFB 0x1FFFFA 0xFFE 0x1FFFFD 0x1FFFFC 0xFFF 0x1FFFFF 0x1FFFFE Byte Alto © 2011 Microchip Technology Incorporated. All Rights Reserved. Byte Bajo 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 dispositivo Conveniente para programar en sistemas Calibración de datos Serialización de datos Pin VPP VDD VSS RB6 RB7 Function Programming Voltage Supply Voltage Ground Clock Input 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 subida a VDD es detectado VDD MCLR Circuito RESET en CHIP Reset Interno PWRT: Power Up Timer 72 ms (nominal) Desacoplado del BOR VDD OST: Oscillator Startup Timer Mantiene en RESET al dispositivo por 1024 cyclos de maquina (TCYs) Le permite al cristal o al resonador estabilizarse Bypaseado en: Two Speed Startup Mode INTOSC usa un clock para el procesador no estable Internal Reset MCLR POR PWRT TPWRT TOST OST Reset © 2011 Microchip Technology Incorporated. All Rights Reserved. Operación 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? 16-bit Program Memory Reset Vector High Interrupt Vector Proteccion del Codigo Watchdog Timer Tipo de Oscilador Opcion de Debug Otras… Registro CONFIGlocalizado en la memoria de programa, fuera del area de ejecución del código (inicia en @ 0x300000) User Flash Registros de Configuración © 2011 Microchip Technology Incorporated. All Rights Reserved. Device ID User Memory Low Interrupt Vector Configuration Memory Son usados para activar o no las características especiales: 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 Start Of Frame Frame Printer Mouse Packets Speakers Packets Frame © 2011 Microchip Technology Incorporated. All Rights Reserved. Speakers Printer Packets Frame Slide 33 Comparación de Buses 1394-Fire Wire Ojo! No tiene que soportar High-Speed para ser USB 2.0 Compatible Ethernet WiFi (b/g) USB 2.0 LS-USB 1.5 Mb/s CAN HS-USB 480 Mb/s USB 1.1 Serial Port 500 Kb/s FS-USB 12 Mb/s Parallel Port 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 USB Host Controller & Root Hub Host (Tier 1) Tier 2 Speaker Hub Tier 3 Logic Analyzer Hub Tier 4 Printer Hub Tier 5 Tier 6 Tier 7 Keyboard Hub: Carga maxima = 5 Hub PIC18 USB esta diseñado para ser periferico. PIC24/PIC32 puede funcionar como Host o Periférico. Hub Data Logger Hasta 126 periféricos... Hub © 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 37 Interfaz Física VBUS VBUS D+ D+ D- D- GND GND ~ 5.0 V ~ 3.3 V Half Duplex con codificación de datos NRZI Bus Alimentado para cada dispositivo: 4.40-5.25V Garantizado 100 mA 500 mA max por medio de negociación © 2011 Microchip Technology Incorporated. All Rights Reserved. Debe usar alimentación externa si se necesita mas de uno Slide 38 Conectores Standard - USB 2.0 “A” USB Host “B” FS, HS Device “mini-B” FS, HS 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 USB framed data USB framed data MCU RAM Endpoint 1 OUT RAM Endpoint 1 IN LED “Caps-Lock” Número máximo de endpoints por dispositivo especificados por el USB : − − − PIC® 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 Drive Data Glove Ethernet Adapter Mouse External Hard Drive PICkit™ 3 Starter Kit Joystick Keyboard Modem Mass Storage Device Class (MSD) Communication Device Class (CDC) MPLAB® 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 Power (self/bus) POWERED Bus reset ATTACHED DEFAULT Cable Connected Get Device Descriptor SUSPENDED DETACHED ADDRESS Get Descriptors CONFIGURED © 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 43 Auto-Detección: Full-Speed Peripheral Device VUSB 3.3 V USB PIC® MCU Full Speed Identification D+ line pull-up 1.5 kΩ 5% +5V D+ Transceiver DGND USB Connector © 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 44 Auto-Detección: Low-Speed Peripheral Device VUSB 3.3 V USB PIC® MCU Low Speed Identification D- line pull-up 1.5 kΩ 5% +5V D+ Transceiver DGND 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 DGND 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 V DD Power from 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 pullup 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 PIC32 ~50 USB PIC MCUs Performance The industry’s strongest scalable product, family, and software migration path High Performance, Pin Compatible to PIC24F 80 MHz, 1.53 DMIPS/MHz Up to 80 MIPS 64- & 100-Pin Packages Up to 512 KB Flash Up to 32 KB RAM 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 32-bit Small, Low Power, Low Cost Up to 12 MIPS 18- to 80-Pin Packages Up to 128KB Flash Up to 4KB RAM USB 2.0 Device Support 16-bit 8-bit 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 ANS10 ANS9 ANS8 Analog Select High Register (ANSELH) ANS13 ANS12 ANS11 © 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 PORTx o LATx LATx Lee LATx Lee PORTx 0 1 0 1 0 0 1 1 PORTx (I/O Pins) TRISx Pines son todos entradas por default 0 0 1 1 0 1 0 0 Dirección de Datos (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 bit 7 bit 7 U-0 R/W-1 bit 0 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 AN9 AN8 AN7* AN6* AN5* AN4 VREF+ / AN3 VREF- / AN2 13:1 Analog Mux AN10 VAIN 10-bit A/D Result Registers ADC VREF+ AN1 ADRESH ADRESL VREF- VDD AN0 x0 x1 1x 0x VSS VREF Select VCFG1:VCFG0 In ADCON1 Register © 2011 Microchip Technology Incorporated. All Rights Reserved. *AN5-AN7 not available on 28-pin devices 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 ADRES 10 Tiempo de adquisición determinado por la capacidad CHold y la Impedancia de fuente ADC + Este tiempo le permite cargarse completamente a CHold VC - CHOLD VIN time SOURCE RS < 10kΩ Ω V VSS © 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 69 ADC Conversion Acquisition Time Conversion Time Time Acquisition time VC ADRES VIN ADC Result time 11 ADC Conversion Clock cycles (TAD) 10 ADC time + VC - CHOLD 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 5-2 bit 0 CHS3:CHS0 Analog Channel Select Bits 0000 = 0001 = 0010 = 0011 = 0100 = 0101 = 0110 = 0111 = 1000 = 1001 = 1010 = 1011 = 1100 = Channel 0 (AN0) Channel 1 (AN1) Channel 2 (AN2) Channel 3 (AN3) Channel 4 (AN4) Channel 5 (AN5) Channel 6 (AN6) Channel 7 (AN7) Channel 8 (AN8) Channel 9 (AN9) Channel 10 (AN10) Channel 11 (AN11) Channel 12 (AN12) bit 1 GO/DONE: A/D Conversion Status bit 1 = A/D Conversion in progress 0 = A/D Idle bit 0 ADON: A/D On bit 1 = A/D Converter module is enabled 0 = A/D Converter module is disabled © 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* bit 7 R/W* R/W* 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 2 TOSC 000 2.86 MHz 4 TOSC 100 5.71 MHz 8 TOSC 001 11.43 MHz 16 TOSC 101 22.86 MHz 32 TOSC 010 40.0 MHz 64 TOSC 110 40.0 MHz RC x11 * At FOSC = 4 MHz: TOSC = 1/FOSC = .25 µs TAD = 4TOSC = 1 µs * 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 TC TCOFF = Amplifier Settling Time = Tamp internal + Tamp external = Charging Time = -(CHOLD)·(RIC + RSS + RS)·ln(1/2047)µ µs = 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 RIC RSS RS = 25pF = 1kΩ Ω = 2kΩ Ω = 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* bit 7 R/W* bit 0 bit 5-3 ACQT2:ACQT0: A/D Acquisition Time Selection bits 111 = 20 TAD 110 = 16 TAD 101 = 12 TAD 100 = 8 TAD 011 = 6 TAD 010 = 4 TAD 001 = 2 TAD Given: TACQ = 2.4 µs TAD = 1 us Then: 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 bit 7 R/W-0 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 b9 b8 b7 ADRESL 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 16-bits 8-bits CLOCK SOURCE (Internal) Fosc/4 Fosc/4 Fosc/4 CLOCK SOURCE (External ) T0CKI pin T13CKI pin or Timer 1 oscillator (T1OSC) None CLOCK SCALING AVAILABLE (Resolution) Prescaler 8-bits (1:2 1:256) Prescaler 2-bits (1:1, 1:2, 1:4, 1:8) Prescaler (1:1,1:4,1:16) Postscaler (1:1 1:16) INTERRUPT EVENT On overflow FFh 00h On overflow FFFFh 0000h TMR REG matches PR2 CAN WAKE PIC FROM SLEEP? NO YES NO © 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 TMR0IF 0 1 T0CKI Clock Sync 1 Programmable Prescaler T0SE TMR0L 0 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 TMR0IF 0 1 T0CKI Clock Sync 1 Programmable Prescaler T0SE 0 T0CS T0PS2:T0PS0 High Byte READ TMR0L PSA TMR0L WRITE TMR0L TMR0H 8-bit Data Bus © 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 87 Timer0 Operation FOSC/4 TMR0IF 0 1 T0CKI Clock Sync 1 Programmable Prescaler T0SE 0 T0CS T0PS2:T0PS0 PSA DATA BUS T0CON Register TMR0ON T08BIT TMR0L 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 TMR0IF 0 1 T0CKI Clock Sync 1 Programmable Prescaler T0SE 0 READ TMR0L T0CS T0PS2:T0PS0 High Byte PSA T0CON Register TMR0ON T08BIT T0CS TMR0L WRITE TMR0L TMR0H DATA BUS T0SE PSA T0PS2:0 T08BIT 1 = 8 BIT 0 = 16 BIT © 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 89 Timer0 Operation FOSC/4 TMR0IF 0 1 T0CKI Clock Sync 1 Programmable Prescaler T0SE 0 READ TMR0L T0CS T0PS2:T0PS0 High Byte PSA TMR0L WRITE TMR0L 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 TMR0IF 0 1 T0CKI Clock Sync 1 Programmable Prescaler T0SE 0 TMR0L READ TMR0L T0CS T0PS2:T0PS0 High Byte PSA WRITE TMR0L 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 TMR0IF 0 1 T0CKI Clock Sync 1 Programmable Prescaler T0SE 0 READ TMR0L T0CS T0PS2:T0PS0 High Byte PSA TMR0L WRITE TMR0L 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 TMR0IF 0 1 T0CKI Clock Sync 1 Programmable Prescaler T0SE 0 TMR0L READ TMR0L T0CS T0PS2:T0PS0 High Byte PSA WRITE TMR0L TMR0H PS2 PS1 PS0 TMR0 RATE 0 0 0 1:2 0 0 1 1:4 0 1 0 1:8 0 1 1 1:16 1 0 0 1:32 1 0 1 1:64 1 1 0 1:128 1 1 1 1:256 DATA BUS T0CON Register TMR0ON T08BIT T0CS T0SE PSA T0PS2:0 Prescaler Rate Select Bits © 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 93 Timer0 Operation FOSC/4 TMR0IF 0 1 T0CKI Clock Sync 1 Programmable Prescaler T0SE 0 READ TMR0L T0CS T0PS2:T0PS0 High Byte PSA TMR0L WRITE TMR0L 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/ T13CKI 1 Prescaler 1, 2, 4, 8 FOSC/4 T1OSI Sync Detect 0 Sleep Input T1OSCEN 1 T1SYNC TMR1CS TMR1ON T1CKPS1: T1CKPS0 TMR1IF Clear Timer 1 (CCP Special Event Trigger) High Byte TMR1L READ TMR1L RD16 Bit 7 T1RUN TCKPS1:0 T1OSCEN T1SYNC T1CON Register TMR1CS TMR1ON WRITE TMR1L TMR1H Bit 0 8-bit Data Bus © 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 96 Timer1 and Timer3 Timer 1 Oscillator 0 T1OSO/ T13CKI 1 Prescaler 1, 2, 4, 8 FOSC/4 T1OSI Sync Detect 0 Sleep Input T1OSCEN 1 T1SYNC TMR1CS TMR1ON T1CKPS1: T1CKPS0 16-bit Read/Write Mode Enable 1 = Read/Write of Timer in one operation 0 = Read/Write of Timer in two 8-bit operations TMR1IF TMR1H Clear Timer 1 (CCP Special Event Trigger) 8-bit Data Bus T1CON Register RD16 T1RUN TMR1L 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/ T13CKI 1 Prescaler 1, 2, 4, 8 FOSC/4 T1OSI Sync Detect 0 Sleep Input T1OSCEN 1 T1SYNC TMR1CS TMR1ON 16-bit Read/Write Mode Enable 1 = Read/Write of Timer in one operation 0 = Read/Write of Timer in two 8-bit operations T1CKPS1: T1CKPS0 TMR1IF Clear Timer 1 (CCP Special Event Trigger) High Byte TMR1L READ TMR1L WRITE TMR1L TMR1H T1CON Register RD16 T1RUN 8-bit Data Bus 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/ T13CKI 1 Prescaler 1, 2, 4, 8 FOSC/4 T1OSI Sync Detect 0 Sleep Input T1OSCEN 1 T1SYNC TMR1CS TMR1ON T1CKPS1: T1CKPS0 TMR1IF Clear Timer 1 (CCP Special Event Trigger) Timer1 Oscillator Enable 1 = T1OSC Enabled 0 = T1OSC off High Byte TMR1L 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 99 Timer1 and Timer3 Timer 1 Oscillator 0 T1OSO/ T13CKI 1 Prescaler 1, 2, 4, 8 FOSC/4 T1OSI Sync Detect 0 Sleep Input T1OSCEN 1 T1SYNC TMR1CS TMR1ON T1CKPS1: T1CKPS0 Timer1 Clock Source 1= External Clock 0 = Fosc/4 TMR1IF Clear Timer 1 (CCP Special Event Trigger) High Byte TMR1L READ TMR1L WRITE TMR1L T1CON Register TMR1H RD16 Bit 7 T1RUN TCKPS1:0 T1OSCEN T1SYNC TMR1CS TMR1ON Bit 0 8-bit Data Bus © 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 100 Timer1 and Timer3 Timer 1 Oscillator 0 T1OSO/ T13CKI 1 Prescaler 1, 2, 4, 8 FOSC/4 T1OSI Sync Detect 0 Sleep Input T1OSCEN 1 T1SYNC TMR1CS TMR1ON T1CKPS1: T1CKPS0 Timer1 Prescale Select 11 = 1:8 10 = 1:4 01 = 1:2 00 = 1:1 TMR1IF Clear Timer 1 (CCP Special Event Trigger) High Byte TMR1L READ TMR1L T1CON Register RD16 Bit 7 T1RUN TCKPS1:0 WRITE TMR1L TMR1H T1OSCEN T1SYNC TMR1CS TMR1ON Bit 0 8-bit Data Bus © 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 101 Timer1 and Timer3 Timer 1 Oscillator 0 T1OSO/ T13CKI 1 Prescaler 1, 2, 4, 8 FOSC/4 T1OSI Sync Detect 0 Sleep Input T1OSCEN 1 T1SYNC TMR1CS TMR1ON T1CKPS1: T1CKPS0 Timer1 System Clock Status Read Only Bit 1 = Device clock derived from Timer1 OSC 0 = Device clock derived from another source TMR1IF Clear Timer 1 (CCP Special Event Trigger) High Byte TMR1L READ TMR1L WRITE TMR1L T1CON Register TMR1H RD16 Bit 7 T1RUN TCKPS1:0 T1OSCEN T1SYNC TMR1CS TMR1ON Bit 0 © 2011 Microchip Technology Incorporated. All Rights Reserved. 8-bit Data Bus Slide 102 Timer1 and Timer3 Timer 1 Oscillator 0 T1OSO/ T13CKI 1 Prescaler 1, 2, 4, 8 FOSC/4 T1OSI Sync Detect 0 Sleep Input T1OSCEN 1 T1SYNC TMR1CS TMR1ON Timer1 External Clock Synchronization Bit only used when TMR1CS = 1 1 = Synchronize external clock input 0 = Do not synchronize T1CKPS1: T1CKPS0 TMR1IF Clear Timer 1 (CCP Special Event Trigger) Bit 7 T1RUN TCKPS1:0 TMR1L READ TMR1L T1CON Register RD16 High Byte T1OSCEN T1SYNC TMR1CS TMR1ON WRITE TMR1L TMR1H Bit 0 8-bit Data Bus © 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 103 Timer1 and Timer3 Timer 1 Oscillator 0 T1OSO/ T13CKI 1 Prescaler 1, 2, 4, 8 FOSC/4 T1OSI Sync Detect 0 Sleep Input T1OSCEN 1 T1SYNC TMR1CS TMR1ON Timer On 1 = Enables Timer 0 = Stops Timer T1CKPS1: T1CKPS0 TMR1IF Clear Timer 1 (CCP Special Event Trigger) High Byte TMR1L READ TMR1L T1CON Register TCKPS1:0 RD16 T1RUN Bit 7 T1OSCEN T1SYNC TMR1CS TMR1ON WRITE TMR1L TMR1H 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 0 bit 7 00 = 1:1 01 = 1:4 1x = 1:16 0000 = 1:1 0001 = 1:2 TMR2 Postscale Value Selection Bits T2OUTPS3:T2OUTPS0 TMR2 Prescale Value Selection Bits 1:1 to 1:16 Postscaler 1111 = 1:16 TMR2IF T2CKPS1:T2CKPS0 Reset FOSC/4 1:1, 1:4, 1:16 Prescaler TMR2 Timer 2 Output (To PWM or MSSP) TMR2/PR2 Match 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 TMR1IF TMR1IE Wakeup to CPU Peripheral Interrupts Interrupt to CPU Vector to 0x0008 Other Peripheral Interrupts GIE PEIE © 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 110 Lógica de Interrupción Modo Prioridad IP IE IF INT0IF INT0IE GIEH Vector to 0x0008 High Priority Interrupt to CPU Wakeup to CPU IP IE IF Low Priority Interrupt to CPU Vector to 0x0018 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 PSPIP: ADIP: RCIP: TXIP: ADIP RCIP TXIP Parallel Slave Interrupt Priority A/D Converter Interrupt Priority EUSART Rcv Interrupt Priority EUSART Tx Interrupt Priority SSPIP SSPIP: CCPIP: TMR2IP: TMR1IP: CCP1IP TMR2IP TMR1IP MSSP Interrupt Priority CCP1 Interrupt Priority Timer2 Interrupt Priority Timer1 Interrupt Priority IPR2 Register OSCIP OSCIP: CMIP: ---EEIP: CMIP EEIP --- Oscillator Fail Interrupt Priority Comparator Interrupt Priority Unimplemented Bit Data EEPROM/Flash Write Operation Interrupt Priority BCLIP BCLIP: HLVDIP: TMR3IP: CCP2IP: HLVDIP TMR3IP CCP2IP Bus Collision Interrupt Priority High/Low Voltage Detect Interrupt Priority Timer3 Interrupt Priority CCP2 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 PSPIF: ADIF: RCIF: TXIF: ADIF RCIF TXIF Parallel Slave Interrupt Flag A/D Converter Interrupt Flag EUSART Rcv Interrupt Flag EUSART Tx Interrupt Flag SSPIF SSPIF: CCPIF: TMR2IF: TMR1IF: CCPIF TMR2IF TMR1IF MSSP Interrupt Flag CCP1 Interrupt Flag Timer2 Interrupt Flag Timer1 Interrupt Flag PIR2 Register OSCIF OSCIF: CMIF: ---EEIF: CMIF EEIF --- Oscillator Fail Interrupt Flag Comparator Interrupt Flag Unimplemented Bit Data EEPROM/Flash Write Operation Interrupt Flag BCLIF BCLIF: HLVDIF: TMR3IF: CCP2IF: HLVDIF TMR3IF CCP2IF Bus Collision Interrupt Flag High/Low Voltage Detect Interrupt Flag Timer3 Interrupt Flag CCP2 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 PSPIE: ADIE: RCIE: TXIE: ADIE RCIE TXIE Parallel Slave Interrupt Enable A/D Converter Interrupt Enable EUSART Rcv Interrupt Enable EUSART Tx Interrupt Enable SSPIE SSPIE: CCPIE: TMR2IE: TMR1IE: CCPIE TMR2IE TMR1IE MSSP Interrupt Enable CCP1 Interrupt Enable Timer2 Interrupt Enable Timer1 Interrupt Enable PIE2 Register OSCIE OSCIE: CMIE: ---EEIE: CMIE EEIE --- Oscillator Fail Interrupt Enable Comparator Interrupt Enable Unimplemented Bit Data EEPROM/Flash Write Operation Interrupt Enable BCLIE BCLIE: HLVDIE: TMR3IE: CCP2IE: HLVDIE TMR3IE CCP2IE Bus Collision Interrupt Enable High/Low Voltage Detect Interrupt Enable Timer3 Interrupt Enable CCP2 Interrupt Enable © 2011 Microchip Technology Incorporated. All Rights Reserved. Slide 116 Habilitando las Interrupciones (5 de 9) Set Core Interrupt Priority INT0 does not have an IP bit – it is always a high priority interrupt Only needed if using Priority Mode 1 = High Priority, 0 = Low Priority INTCON2 Register RBPU INTEDG0 INTEDG1 INTEDG2 --- TMR0IP --- RBIP TMR0IP: TMR0 Overflow Interrupt Priority RBIP: RB Port Change Interrupt Priority INTCON3 Register INT2IP INT2IP: INT1IP: INT1IP --- INT2IE INT1IE --- INT2IF INT1IF INT2 External Interrupt Priority 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 --- INT2IF INT1IF TMR0IF: TMR0 Overflow Interrupt Flag INT0IF: INT0 External Interrupt Flag RBIF: RB Port Change Interrupt Flag INTCON3 Register INT2IP INT1IP --INT2IF: INT1IF: INT2IE INT1IE INT2 External Interrupt Flag 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 --- INT2IF INT1IF TMR0IE: TMR0 Overflow Interrupt Enable INT0IE: INT0 External Interrupt Enable RBIE: RB Port Change Interrupt Enable INTCON3 Register INT2IP INT1IP --INT2IE: INT1IE: INT2IE INT1IE INT2 External Interrupt Enable 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