PIC16CXXX (GAMA MEDIA)deeea.urv.cat/DEEEA/ecanto/WWW/SEMC/PIC16CXXX.pdf · 2007. 10. 8. ·...

12
PIC16CXXX (GAMA MEDIA) •Oscilador •RESET •SLEEP •WatchDog Timer (WDT) •Protección de código e IDs •Interrupciones •Programación ICSP (In Circuit Serial Programming) •Periféricos: •Timer/Contador de 8-bits (T0) con pre-scaler compartido para WDT o TMR0 •Timer/Contador de 16-bit (T1) con pre-scaler •Timer de 8-bit (T2), usado por el PWM •7 Tipos de puertos I/O (RA,RB,RC,RD,RE,RF,RG) con funciones de periféricos multiplexadas •Memoria de datos E 2 PROM •CCP (Capture, Compare, PWM) •Convertidor A/D de hasta 12-bit y 8 canales •SSP (Synchronous Serial Port), configurable como SPI o I 2 C •USART (Universal Synch/Asynch R-T) •Referencias de tensión •Comparadores analógicos •PSP (Parallel Slave Port) •Drivers LCD

Transcript of PIC16CXXX (GAMA MEDIA)deeea.urv.cat/DEEEA/ecanto/WWW/SEMC/PIC16CXXX.pdf · 2007. 10. 8. ·...

Page 1: PIC16CXXX (GAMA MEDIA)deeea.urv.cat/DEEEA/ecanto/WWW/SEMC/PIC16CXXX.pdf · 2007. 10. 8. · •Cristal de cuarzo o resolnador cerámico: •LP: De 32kHz a 200kHz. Baja velocidad y

PIC16CXXX (GAMA MEDIA)•Oscilador•RESET•SLEEP•WatchDog Timer (WDT)•Protección de código e IDs•Interrupciones•Programación ICSP (In Circuit Serial Programming)•Periféricos:

•Timer/Contador de 8-bits (T0) con pre-scaler compartido para WDT o TMR0•Timer/Contador de 16-bit (T1) con pre-scaler•Timer de 8-bit (T2), usado por el PWM•7 Tipos de puertos I/O (RA,RB,RC,RD,RE,RF,RG) con funciones de periféricos multiplexadas•Memoria de datos E2PROM•CCP (Capture, Compare, PWM)•Convertidor A/D de hasta 12-bit y 8 canales•SSP (Synchronous Serial Port), configurable como SPI o I2C•USART (Universal Synch/Asynch R-T)•Referencias de tensión•Comparadores analógicos•PSP (Parallel Slave Port)•Drivers LCD

Page 2: PIC16CXXX (GAMA MEDIA)deeea.urv.cat/DEEEA/ecanto/WWW/SEMC/PIC16CXXX.pdf · 2007. 10. 8. · •Cristal de cuarzo o resolnador cerámico: •LP: De 32kHz a 200kHz. Baja velocidad y

Encapsulado y patillaje:

Page 3: PIC16CXXX (GAMA MEDIA)deeea.urv.cat/DEEEA/ecanto/WWW/SEMC/PIC16CXXX.pdf · 2007. 10. 8. · •Cristal de cuarzo o resolnador cerámico: •LP: De 32kHz a 200kHz. Baja velocidad y

Banco de registros:

Configuración estándar paradispositivos nuevos:•Algunos SFRs no mostrados•Verificar detalles para dispositivo

Configuración paraalgunos dispositivosde 18-pines

Page 4: PIC16CXXX (GAMA MEDIA)deeea.urv.cat/DEEEA/ecanto/WWW/SEMC/PIC16CXXX.pdf · 2007. 10. 8. · •Cristal de cuarzo o resolnador cerámico: •LP: De 32kHz a 200kHz. Baja velocidad y

Instrucciones: OSCILADORCuatro o siete configuraciones del circuito oscilador, seleccionalbles con FOSC<2:0> o FOSC<1:0> de las palabra de configuración (2007h)

0 0LP (Low Power)

0 1

1 0

1 1

XT (Crystal/Resonator)

HS (High Speed Crystal/Resonator)

RC (Resistor-Capacitor)

FOSC0FOSC1Configuraciones del Oscilador

0 0LP (Low Power)

0 1

1 0

1 1

XT (Crystal/Resonator)

HS (High Speed)

Reservado

FOSC0FOSC1Configuraciones del Oscilador

0

0

0

0

FOSC2

0 0INTRC

0 1

1 0

1 1

INTRC con CLKOUT

EXTRC

EXTRC con CLKOUT (idéntico al modo RC)

1

1

1

1

Modos HS,XT,LP:•Cristal de cuarzo o resolnador cerámico:

•LP: De 32kHz a 200kHz. Baja velocidad y consumo•XT: De 100kHz a 4MHz•HS: De 4MHz a 20MHz. Alta velocidad y consumo

•Permite también un circuito de CLK externo

FOSC0

CONFIGURATION WORD (2007h)*FOSC1WDTEPWRTECP0CP1BODENLVPCPDWRT-DEBUG

*PIC

16F

87X

( L

a po

sici

ón y

bits

de

la p

alab

ra d

e co

nfig

urac

ión

depe

nden

del

dis

posi

tivo

- co

nsul

tar

man

ual d

e re

fere

ncia

)

CP0CP1

Page 5: PIC16CXXX (GAMA MEDIA)deeea.urv.cat/DEEEA/ecanto/WWW/SEMC/PIC16CXXX.pdf · 2007. 10. 8. · •Cristal de cuarzo o resolnador cerámico: •LP: De 32kHz a 200kHz. Baja velocidad y

Modos EXTRC, EXTRC con CLKOUT (RC):•Solución económica: puede funcionar sin CEXT (recomendado CEXT>20pF)•Aplicaciones insensibles a temporización•EXTRC con CLKOUT: Por OSC2/CLKOUT sale FOSC/4•EXTRC: Pin OSC2/CLKOUT como I/O RA6

Modos INTRC, INTRC con CLKOUT:•La solución más económica: usa un oscilador RC interno de 4MHz @VDD=5V,25ºC•No disponible en todos los dispositivos•INTRC con CLKOUT: Por OSC2/CLKOUT sale FOSC/4•INTRC: Pin OSC2/CLKOUT como I/O RA6•Permite su calibración con el registro OSCCAL:

•Ventana de calibración con CAL<3:0>•Añadir/quitar offset con CALFST o CALSLW

•Instrucción de calibración retlw XX en la última posición de la memoria de programa (XX=calibración)

OSCCAL(8Fh)

--CALSLWCALFSTCAL0CAL1CAL2CAL3

R/W R/W R/W R/W R/W R/W U U

0Mínima

CAL3Frecuencia

0

CAL2

0

CAL1 CAL0

0

1Máxima 1 1 1

CALFSTOffset FST (FaST)1

0Desactivado

1Activado

CALSLWOffset SLW (SLoW)2

0Desactivado

1Activado

2CALFST=0

INIT call CALWORD ;Obtiene valor de calibraciónbanksel OSCCALmovwf OSCCAL...org 0x7FF ;Memoria de programa 2k (1 pagina)

CALWORD retlw 0x68 ;CAL<3:0>=6, CALFST=1, CALSLW=0

1CALSLW=X

Page 6: PIC16CXXX (GAMA MEDIA)deeea.urv.cat/DEEEA/ecanto/WWW/SEMC/PIC16CXXX.pdf · 2007. 10. 8. · •Cristal de cuarzo o resolnador cerámico: •LP: De 32kHz a 200kHz. Baja velocidad y

RESETHay 6 posibles formas de generación de RESET, dependiendo del dispositivo:•Power-On Reset (POR), al conectar la alimentación VDD

•Al activar MCLR durante modo normal•Al activar MCLR durante modo SLEEP•Reset por WDT durante modo normal•Brown-Out Reset (BOR) por fallo de alimentación •Parity Error Reset (PAR) de memoria de programa, durante el ‘fetch’ de una instrucción

POR externo POR interno

(1) Opcional

(MCLRE=0 en la palabra de configuración)

OST:•Oscillator Start-up Timer (OST) de 1024 TOSC después del PWRT•Sólo se activa por los RESET tipo BOR y POR o por MCLR en modo SLEEP, con modos LP, XT o HS para la estabilidad del oscilador de cristal o resonador cerámico

PWRT:•Power-up Timer (PWRT) de 72ms nominales al realizarse un RESET por BOR o POR•Activado con PWRTE=0 en la palabra de configuración

BOR:•Brown-Out Reset (BOR) por fallo de alimentación mientras VDD<BVDD (4V típicamente) (alimentación por batería, conmutación de cargas...)•Activado si BODEN =1 de la palabra de configuración

FOSC0

CONFIGURATION WORD (2007h)*FOSC1WDTEPWRTECP0CP1BODENLVPCPDWRT-DEBUGCP0CP1

*PIC16F87X ( La posición y bits de la palabra de configuracióndependen del dispositivo - consultar manual de referencia)

Page 7: PIC16CXXX (GAMA MEDIA)deeea.urv.cat/DEEEA/ecanto/WWW/SEMC/PIC16CXXX.pdf · 2007. 10. 8. · •Cristal de cuarzo o resolnador cerámico: •LP: De 32kHz a 200kHz. Baja velocidad y

STATUS(03h,083h,103h,183h)

CDCZPDTORP0RP1IRP

R/W R/W R/W R R R/W R/W R/W

PCON(8Eh)

PowerCONtrol

BORPORPER----MPEEN

R U U U U R/W R/W R/W

Time-Out

POR,BOR,PER,clrwdt,sleep

TO

0

1

Power-Down

sleep

PD

0

1

Desbordamiento del WDT

POR,BOR,PER,clrwdt

Power-On Reset

No POR

POR

0

1

Brown-Out Reset BOR

0

1

POR1

No BOR1Limpiarse con bsf PCON,NOT_POR

BOR2

2Limpiarse con bsf PCON,NOT_BOR

Parity Error Reset

No PER

PER

0

1

POR, PER3

3Limpiarse con bsf PCON,NOT_PER

Memory Parity Error ENabled

MPEEN=1 de la palabra config

MPEEN

0

1

MPEEN=0 de la palabra config.

TO PD Estado tras RESET1,2,3

0 1

1 0

WDT en modo normal

MCLR=0 durante modo SLEEP

U U MCLR=0 durante modo normal

BORPERPOR

1 1 PORX 10

1 1 BOR0 11

1 1 PER1 01

1 11

1 11

1 11

0 0 WDT en modo SLEEP1 11

TO PD Estado tras despertarBORPERPOR

Page 8: PIC16CXXX (GAMA MEDIA)deeea.urv.cat/DEEEA/ecanto/WWW/SEMC/PIC16CXXX.pdf · 2007. 10. 8. · •Cristal de cuarzo o resolnador cerámico: •LP: De 32kHz a 200kHz. Baja velocidad y

SLEEP•Modo de bajo consumo•Se entra en modo SLEEP ejecutando sleep:

•El oscilador del sistema se para•Los puertos I/O mantienen su estado•Para menor consumo es recomendable colocar los pines I/O (T0CKI...) a VDD o VSS

•El WDT es limpiado, pero sigue funcionando (si esta habilitado)

•Se sale del modo SLEEP:•Con cualquier tipo de RESET (POR, BOR, PER, MCLR=0)•WDT en modo SLEEP•Interrupción (INT, cambio RB<7:4>, comparadores, A/D, timers, LCD, SSP, modulo captura...)

org 0x0 ;vector RESETgoto INICIO org 0x4 ;vector INTERRUPCIONgoto INTERRUPT...clrwdt ;limpia WDTsleep ;paso a modo SLEEPnop ;recomendado NOP...

RESET

GIE=1

•Al despertar con RESET salta al vector de RESET (0000h)•El despertar el µC con WDT o interrupción provoca la ejecución de la siguiente instrucción. Si GIE=1 del INTCON se salta después al vector de interrupción (0004h)

GIE=0

WDTCaracterísticas:•Usa un oscilador RC interno (independiente del externo)•Funciona en modo normal y modo SLEEP•Temporización de 18ms (nominales)•Posibilidad de usar pre-scaler, desde 1:1 hasta 1:128 (máximo tiempo 128*18ms=2’3s nominales)•Instrucciones clrwdt y sleep limpian el WDT y pre-scaler (si PSA=1)•En modo normal provoca RESET•En modo SLEEP despierta el dispositivo

0Desactivado WDT

1Activado WDT

WDTEWDT Enable

OPTION_REG(81h,181h)

PS0PS1PS2PSAT0SET0CSINTEDGRBPU

R/W

0Pre-Scaler para TMR0

1Pre-Scaler para WDT

PSAPre-Scaler Asignament

01:1

PS2Pre-Scaler

0

PS1

0

PS0

01:2 0 1

01:4 1 0

01:8 1 1

11:16 0 0

11:32 0 1

11:64 1 0

11:128 1 1

FOSC0

CONFIGURATION WORD (2007h)*FOSC1WDTEPWRTECP0CP1BODENLVPCPDWRT-DEBUGCP0CP1

*PIC16F87X ( La posición y bits dela palabra de configuracióndependen del dispositivo -consultar manual de referencia)

R/WR/WR/WR/WR/WR/WR/W

Page 9: PIC16CXXX (GAMA MEDIA)deeea.urv.cat/DEEEA/ecanto/WWW/SEMC/PIC16CXXX.pdf · 2007. 10. 8. · •Cristal de cuarzo o resolnador cerámico: •LP: De 32kHz a 200kHz. Baja velocidad y

EPROM bit

banksel OPTION_REGmovlw 0x0B ;PSA=1,PS2,PS1,PS0={0,1,1}(144ms aprox)movwf OPTION_REG ;OPTION_REG=Wclrwdtcall SUBR1 ;Subrutina que puede colgarseclrwdt

•La directiva __config del PASM permite configurar las palabras de configuración dentro del código ensamblador•La directiva __idlocs del PASM permite configurar los localizaciones para códigos de identificación, número de serie, checksum...•No son accesibles durante el modo normal de ejecución, sino durante la verificación o programación

PROTECCIÓN CÓDIGO, IDs

FOSC0

CONFIGURATION WORD (2007h)*FOSC1WDTEPWRTECP0CP1BODENLVPCPDWRT-DEBUGCP0CP1

*PIC16F87X ( La posición y bits de la palabra de configuracióndependen del dispositivo - consultar manual de referencia)

ID (2000-2003h)11111111

11111111

11111111

11111111

ID

#Serie

Checksum

list p=16f876__config B’11000000110111’__idlocs H’1234’

FOSC<2:0>: Selección del osciladorWDTE: Watchdog Timer (WDT) EnablePWRTE: Power-up Timer (PWRT) EnableBODEN: Brown-Out Reset (BOR) EnableLVP:Low Voltage ICSP ProgrammingCPD:Code Protection Data E2PROMWRT: FLASH Program Memory Write EnableDEBUG: In Circuit Debugger (ICD) Mode-: No implementados. Son leidos como 1

00000h - 1FFFh (pags 0-3)

0

CP1Code Protection

0

1

CP1

1000h - 1FFFh (pags 2-3)

1F00h - 1FFFh (pag 3) 1 0

No protegido 1 1

Page 10: PIC16CXXX (GAMA MEDIA)deeea.urv.cat/DEEEA/ecanto/WWW/SEMC/PIC16CXXX.pdf · 2007. 10. 8. · •Cristal de cuarzo o resolnador cerámico: •LP: De 32kHz a 200kHz. Baja velocidad y

INTERRUPCIONES•Interrupción de la ejecución del programa para realizar una rutina de servicio de la causa que la ha provocado•Varias fuentes de interrupción. Cada dispositivo es una (o varias en USART) fuente de interrupción•Registro INTCON para control y estado de interrupciones•Registros PIE1, PIR1, PIE2, PIR2 para control (PIE) y estado (PIR) de la interrupciones del resto de periféricos•Causas externas: por la acción sobre el pin INT o cambio del estado de los pines RB<7:4>•Causas internas: provocado por uno de los periféricos internos del µC

•Desbordamiento del Timer0•Desbordamiento del Timer1•Reset del Timer2•Finalización de conversión del A/D•Cambio de estado del comparador analógico•SSP (Synchronous Serial Port)•CCP (Capture, Compare, PWM)•PSP (Parallel Slave Port)•LCD (Liquid Crystal Display)•Escritura en E2PROM finalizada•USART (Universal Synch/Asynch R-T)

•Recepción•Transmisión

PIR1,PIR2,PIE1,PIE2 INTCON

•Latencia de 3TCY para interrupciones síncronas•Latencia de 3TCY a 4TCY para interrupciones asíncronas•El GIE del INTCON habilita/deshabilita todas las interrupciones:

•GIE=0 por RESET•GIE=0 al responder una interrupción. La dirección de retorno se guarda en pila y PC=0004h•GIE=1 al ejecutar retfie. El PC se recupera de la pila

Page 11: PIC16CXXX (GAMA MEDIA)deeea.urv.cat/DEEEA/ecanto/WWW/SEMC/PIC16CXXX.pdf · 2007. 10. 8. · •Cristal de cuarzo o resolnador cerámico: •LP: De 32kHz a 200kHz. Baja velocidad y

INTCON(0Bh,8Bh,10Bh,18Bh)

RBIFINTF2T0IFRBIEINTE2T0IEPEIE3GIE

R/WR/WR/WR/WR/WR/WR/WR/W

0Interrupciones deshabilitadas

1Interrupciones habilitadas

GIEGlobal Interrupt Enable

0Int. periféricos deshabilitadas

1Int. periféricos habilitadas

PEIEPEripherical Interrupt Enable

0Int. Timer0 deshabilitada

1Int. Timer0 habilitada

T0IETimer 0 Interrupt Enable

0Timer 0 no ha desbordado

1Timer 0 ha desbordado

T0IF*Timer 0 Interrupt Flag

0Int. externa INT deshabilitada

1Int. externa INT habilitada

INTEInterrupt Enable

0No ha habido int. externa INT

1Ha habido int. externa INT

INTF*Interrupt Flag

0Int. cambio RB<7:4> deshab.

1Int. cambio RB<7:4> habilitada

T0IERB port Interrupt Enable

0RB<7:4> no ha cambiado

1

T0IF*RB port Interrupt Flag

RB<7:4> ha cambiado

1,2 1,2

1 Algunos dispositivos PIC12CXXX RB es llamado GP y RBIE se llama GPIE2No disponible en todos los dispositivo3Dispositivos con 1 periférico adicional se substituye por EEIE o ADIE

PIE1 PIE2(8Ch) (8Dh)

xIE

R/WR/WR/WR/WR/WR/WR/WR/W

PIR1 PIR2(0Ch) (0Dh)

R/WR/WR/WR/WR/WR/WR/WR/W

0Int. por periférico x deshab.

1Int. por periférico x habilitada

xIEPeripherical x Interrupt Enable

0Periférico x no interrumpe

1Periférico x interrumpe

xIF*Peripherical x Interrupt Flag

xIE xIE xIE xIE xIE xIE xIE

xIF xIF xIF xIF xIF xIF xIF xIF

*Los bits de flag de interrupción generalmente deben ser limpiados por software

TMP_W equ 0x70 ;GPR en common RAM (0x70 a 0x7F)TMP_STATUS equ 0x71 ;GPR en common RAM (0x70 a 0x7F)

org 0goto INICIO

org 4goto INTERRUPT ;GIE=0 al interrumpir

INICIO org 5movlw B'10111000' ;GIE=1, PEIE=0, T0IE=INTE=RBIE=1, T0IF=INTF=RBIF=0movwf INTCON...movf PORTB,W...bcf STATUS,RP0bsf STATUS,RP1 ;Selecciona banco2... ;Cambios en W y STATUS...

INTERRUPTmovwf TMP_W ;Guarda Wswapf STATUS,W ;Almacena temporalmente STATUS sin afectar Z

;(movf STATUS,W afecta Z)movwf TMP_STATUS ;Guarda STATUS con nibbles invertidos

btfsc INTCON,INTF ;Testeo del tipo de interrupción goto INT_INTbtfsc INTCON,RBIFgoto INT_RBbtfsc INTCON,T0IFgoto INT_T0

FIN_INT swapf TMP_STATUS,Wmovwf STATUS ;Recupera STATUS con nibbles ordenadosswapf TMP_W,Fswapf TMP_W,W ;Recupera W sin afectar Z (movf TMP_W,W afecta Z)retfie ;GIE=1

INT_RB...bcf INTCON,RBIF ;Limpia flag RBIF=0goto FIN_INT

•La rutina de servicio de interrupciones debe testear el estado de los bits de flag (xIF) para averiguar la causa •En general, el flag debe ser limpiado en la rutina de servicio del periférico causante•Los registros W, STATUS deben ser guardados por la rutina de servicio de interrupciones

Interrupción porcambio en RB<7:4>

Interrupción porcambio en RB<7:4>

Page 12: PIC16CXXX (GAMA MEDIA)deeea.urv.cat/DEEEA/ecanto/WWW/SEMC/PIC16CXXX.pdf · 2007. 10. 8. · •Cristal de cuarzo o resolnador cerámico: •LP: De 32kHz a 200kHz. Baja velocidad y

ICSP•In Circuit Serial Programming (ICSP)•Todos los dispositivos de gama media son ICSP•Dos líneas de programación: RB6 (reloj), RB7(datos)•Tres líneas de potencia: VDD, VSS, MCLR/VPP

•Programación: VDD=5V, VPP=13V•Verificación: VDD=Márgenes de VDD de la aplicación•Los pins RB6, RB7 deben estar aislados del circuito aplicación durante la programación o no usarse.•Ventajas:

•Rápido desarrollo en dispositivos FLASH•Reducción/actualización de stocks, permitiendo substituir o actualizar rápidamente el ‘firmware’ antes de distribuirlo•Calibración. Permite grabación con datos de compensación incluidos en sistemas con algún sensor con varibilidad•Serialización. Cada dispositivo o serie puede ser grabado con un único identificador

•Los dispositivos OTP con ICSP pueden actualizar su ‘firmware’ una segunda vez si el tamaño de memoria de programa es al menos el doble del tamaño del ‘firmware’:

•Las células EPROM contienen ‘1’ si no están programadas, y ‘0’ cuando se programan•El código de operación de la instrucción NOP es ‘0000000XX00000’•Se puede colocar NOP en los vectores de RESET e interrupción en la segunda grabación y a continuación nuevas instrucciones de salto al nuevo código