Escolar Documentos
Profissional Documentos
Cultura Documentos
Características principales:
Prestaciones de periféricos:
PRESTACIONES
PIC16F876
Frecuencia de trabajo
Continua- 20Mhz.
Borrados y retardos
POR, BOR
(PWRT, OST)
Memoria de programa tipo flash
(palabras de 14 bits)
8K
Memoria de datos (bytes)
368
Memoria de datos EEPROM
256
Interrupciones
13
Puertos de entrada salida
PUERTOS A, B, C
Temporizadores
3
Módulos Captura/Comparación/PWM
2
Comunicaciones serie
MSSP y USART
Módulo CAD de 10 bits
5 canales
Repertorio de instrucciones
35
TABLA 1-1: DESCRIPCIÓN DEL Patillaje DEL PIC16F873 Y PIC16F876
Nombre de la patilla
Nº
DIP
Nº
SOIC
Tipo
I/O/P
Familia
Descripción
OSC1/CLKIN
9
9
I
ST/CMOS
Entrada de cristal oscilador/entrada reloj externo.
OSC2/CLKOUT
10
10
O
-
Salida del oscilador. Esta patilla saca ¼ de la frecuencia de reloj de
la patilla OSC1, e indica la duración del ciclo de instrucción.
-MCLR/Vpp/ THV
1
1
I/P
ST
Entrada de reset por nivel bajo, entrada de tensión de
programación o alta tensión de prueba de control.
El puerto A es un puerto bidireccional
RA0/AN0
2
2
I/O
TTL
RA0 puede ser, también, la entrada analógica 0.
RA1/AN1
3
3
I/O
TTL
RA1 puede ser, también, la entrada analógica 1.
RA2/AN2/VREF-
4
4
I/O
TTL
RA2 puede ser la entrada analógica 2 o la tensión negativa de
referencia analógica.
RA3/AN3/VREF+
5
5
I/O
TTL
RA3 puede serla entrada analógica 3 o la tensión positiva de
referencia analógica.
RA4/T0CKI
6
6
I/O
ST
RA4 puede ser, también, la entrada de reloj del Temporizador 0.
La salida es en drenador abierto.
RA5/-SS/AN4
7
7
I/O
TTL
RA5 puede ser, también, la entrada analógica 4 o la selección de
servidor para el puerto serie síncrono.
El puerto B es bidireccional y puede programarse la conexión interna de resistenci
as a +Vcc
RB0/INT
21
21
I/O
TTL/ST
RB0 puede ser, también, la interrupción externa.
RB1
22
22
I/O
TTL
RB2
23
23
I/O
TTL
RB3/PGM
24
24
I/O
TTL
RB3 puede ser, también, la entrada de programación.
RB4
25
25
I/O
TTL
Patilla de cambio de interrupción activa.
RB5
26
26
I/O
TTL
Patilla de cambio de interrupción activa.
RB6/PGC
27
27
I/O
TTL/ST
Cambio de interrupción activa o reloj para programación en serie.
RB7/PGD
28
28
I/O
TTL/ST
Cambio de interrupción activa o dato para programación en serie.
El puerto C es un puerto bidireccional
RC0/T1OSO/T1CKI
11
11
I/O
ST
RC0 puede ser, también, la salida de oscilación del Timer1 o la
entrada de reloj del Timer1.
RC1/T1OSI/CCP2
12
12
I/O
ST
RC1 puede ser, también, la entrada de oscilación del Timer1, la
entrada de Captura2, salida de Comparación2 o salida de PWM2.
RC2/CCP1
13
13
I/O
ST
RC2 puede ser, también, la entrada de Captura1, salida de
Comparación1 o salida de PWM1.
RC3/SCK/SCL
14
14
I/O
ST
RC3 puede ser, también, entrada de reloj síncrono serie o salida del
bloque SPI en modo I2C.
RC4/SDI/SDA
15
15
I/O
ST
RC4 puede ser, también, el dato de entrada en modo SPI o el dato
de entada salida en modo I2C.
RC5/SDO
16
16
I/O
ST
RC5 puede ser, también, el dato de salida en modo SPI.
RC6/TX/CK
17
17
I/O
ST
RC6 puede ser también, el reloj de la USART.
RC7/RX/DT
18
18
I/O
ST
RC7 puede ser, también, el dato de la USART.
Vss
8,19
8,19
P
-
Conexión de 0V para circuitos lógicos y entradas/salidas.
VDD
20
20
P
-
Alimentación positiva para lógica y entradas/salidas.
I = Entrada; O = Salida; I/O = Entrada o salida; P = Alimentación
- = No utilizado; TTL = Entrada de ese tipo; ST = Entrada tipo Trigger de Schmit
t
2.0 ORGANIZACIÓN DE LA MEMORIA
RP1:RP0
Banco
00
0
01
1
10
2
11
3
Cada banco tiene una extensión de 128 bytes
(7Fh). Las posiciones más bajas de cada banco
se reservan para el registro SFR. Tanto SFR
como el GPR (Registro de Propósito General)
se implementan como una RAM estática. Los
registros que son muy utilizados dentro del
SFR, se duplican en otros bancos para evitar los
continuos cambios de éstos en los programas.
Direc. de
fichero
Dir. ind.(*)
00h
Dir. ind.(*)
80h
Dir. ind.(*)
100h
Dir. ind.(*)
180h
TMR0
01h
OPTION REG
81h
TMR0
101h
OPTION REG
181h
PCL
02h
PCL
82h
PCL
102h
PCL
182h
STATUS
03h
STATUS
83h
STATUS
103h
STATUS
183h
FSR
04h
FSR
84h
FSR
104h
FSR
184h
PORTA
05h
TRISA
85h
105h
185h
PORTB
06h
TRISB
86h
PORTB
106h
TRISB
186h
PORTC
07h
TRISC
87h
107h
187h
PORTD(1)
08h
TRISD(1)
88h
108h
188h
PORTE(1)
09h
TRISE(1)
89h
109h
189h
PCLATH
0Ah
PCLATH
8Ah
PCLATH
10Ah
PCLATH
18Ah
INTCON
0Bh
INTCON
8Bh
INTCON
10Bh
INTCON
18Bh
PIR1
0Ch
PIE1
8Ch
EEDATA
10Ch
EECON1
18Ch
PIR2
0Dh
PIE2
8Dh
EEADR
10Dh
EECON2
18Dh
TMR1L
0Eh
PCON
8Eh
EEDATH
10Eh
Reservado(2)
18Eh
TMR1H
0Fh
8Fh
EEADRH
10Fh
Reservado(2)
18Fh
T1CON
10h
90h
16 bytes de
Registros de
Propósito
General
110h
16 bytes de
Registros de
Propósito
General
190h
TMR2
11h
SSPCON2
91h
111h
191h
T2CON
12h
PR2
92h
112h
192h
SSPBUF
13h
SSPADD
93h
113h
193h
SSPCON
14h
SSPSTAT
94h
114h
194h
CCPR1L
15h
95h
115h
195h
CCPR1H
16h
96h
116h
196h
CCP1CON
17h
97h
117h
197h
RCSTA
18h
TXSTA
98h
118h
198h
TXREG
19h
SPBRG
99h
119h
199h
RCREG
1Ah
9Ah
11Ah
19Ah
CCPR2L
1Bh
9Bh
11Bh
19Bh
CCPR2H
1Ch
9Ch
11Ch
19Ch
CCP2CON
1Dh
9Dh
11Dh
19Dh
ADRESH
1Eh
ADRESL
9Eh
11Eh
19Eh
ADCON
1Fh
ADCON1
9Fh
11Fh
19Fh
20h
A0h
120h
1A0h
96 bytes de
Registros de
Propósito
General
80 bytes de
Registros de
Propósito
General
80 bytes de
Registros de
Propósito
General
80 bytes de
Registros de
Propósito
General
EFh
16Fh
1EFh
F0h
170H
1F0h
Acceso
70h - 7Fh
Acceso
70h - 7Fh
Acceso
70h - 7Fh
7Fh
FFh
17Fh
1FFh
Banco 0
Banco 1
Banco 2
Banco 3
Posiciones sin implementar. Al leerlas se obtiene 0.
* No es físicamente un registro.
Nota 1: Estos registros no se implementan en los dispositivos de 28 patillas.
Nota 2: Estos registros están reservados; hay que mantenerlos en 0.
2.2.2 REGISTROS DE FUNCIÓN ESPECIAL (SFR)
Los Registros de Función Especial son registros usados por la CPU y módulos periférico
s para
controlar las operaciones deseadas en el microcontrolador. Estos registros se im
plementan como
una RAM estática, y la lista se ofrece en la Tabla 2.1. El SFR puede clasificarse
en dos grupos:
para la CPU y para los periféricos. Los registros asociados a operaciones de la CP
U se describen
detalladamente en esta sección; los relacionados con operaciones periféricas se deta
llarán en
secciones posteriores.
00h(4)
INDF
No es un registro físico. Se usa para direccionamiento de la memoria de datos.
0000 0000
0000 0000
01h
TMR0
Registro del módulo Timer 0.
xxxx xxxx
uuuu uuuu
02h(4)
PCL
Byte de menor peso del registro Contador de Programa (PC).
0000 0000
0000 0000
03h(4)
STATUS
IRP
RP1
RP0
-TO
-PD
Z
DC
C
0001 1xxx
000q quuu
04h(4)
FSR
Puntero de direccionamiento indirecto de la memoria de datos.
xxxx xxxx
uuuu uuuu
05h
PORTA
--
--
Memoria de datos PORTA en escritura; patillas PORTA en lectura.
- -0x 0000
- -0u 0000
06h
PORTB
Memoria de datos PORTB en escritura; patillas del PORTB cuando se lee.
xxxx xxxx
uuuu uuuu
07h
PORTC
Memoria de datos PORTC en escritura; patillas del PORTC cuando se lee.
xxxx xxxx
uuuu uuuu
08h(5)
PORTD
Memoria de datos PORTD en escritura; patillas del PORTD cuando se lee.
xxxx xxxx
uuuu uuuu
09h(5)
PORTE
--
--
--
--
--
RE2
RE1
RE0
- - - - -xxx
- - - - -uuu
0Ah(1,4)
PCLATH
--
--
--
Buffer de escritura para los 5 bits de más peso del PC.
- - -0 0000
- - -0 0000
0Bh(4)
INTCON
GIE
PEIE
T0IE
INTE
RBIE
T0IF
INTF
RBIF
0000 000x
0000 000u
0Ch
PIR1
PSPIF(3)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
0000 0000
0000 0000
0Dh
PIR2
--
(6)
--
EEIF
BCLIF
--
--
CCP2IF
- r -0 0- -0
- r -0 0- -0
0Eh
TMR1L
8 bits de menor peso del registro de 16 bits TMR1.
xxxx xxxx
uuuu uuuu
0Fh
TMR1H
8 bits de mayor peso del registro de 16 bits TMR1.
xxxx xxxx
uuuu uuuu
10h
T1CON
--
--
T1CKPS1
T1CKPS0
T1OSCEN
T1SYNC
TMR1CS
TMR1ON
- -00 0000
- -uu uuuu
11h
TMR2
Registro del módulo TIMER 2.
0000 0000
0000 0000
12h
T2CON
--
TOUTPS3
TOUTPS2
TOUTPS1
TOUTPS0
TMR2ON
T2CKPS1
T2CKPS0
- 000 0000
- 000 0000
13h
SSPBUF
Registro de transmisión y buffer de recepción del puerto serie síncrono.
xxxx xxxx
uuuu uuuu
14h
SSPCON
WCOL
SSPOV
SSPEN
CKP
SSPM3
SSPM2
SSPM1
SSPM0
0000 0000
0000 0000
15h
CCPR1L
Byte de menor peso del registro de Captura, Comparación y PWM.
xxxx xxxx
uuuu uuuu
16h
CCPR1H
Byte de mayor peso del registro de Captura, Comparación y PWM.
xxxx xxxx
uuuu uuuu
17h
CCP1CON
--
--
CCP1X
CCP1Y
CCP1M3
CCP1M2
CCP1M1
CCP1M0
- -00 0000
- -00 0000
18h
RCSTA
SPEN
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
0000 000x
0000 000x
19h
TXREG
Registro de dato a transmitir en la USART.
0000 0000
0000 0000
1Ah
RCREG
Registro de dato recibido en la USART.
0000 0000
0000 0000
1Bh
CCPR2L
Byte menos significativo del registro 2 de Captura/Comparación/PWM.
xxxx xxxx
uuuu uuuu
1Ch
CCPR2H
Byte más significativo del registro 2 de Captura/Comparación/PWM.
xxxx xxxx
uuuu uuuu
1Dh
CCP2CON
--
--
CCP2X
CCP2Y
CCP2M3
CCP2M2
CCP2M1
CCP2M0
- -00 0000
- -00 0000
1Eh
ADRESH
Byte de más peso del resultado de la conversión analógica digital (A/D)
xxxx xxxx
uuuu uuuu
1Fh
ADCON0
ADCS1
ADCS0
CHS2
CHS1
CHS0
GO/-DONE
--
ADON
0000 00-0
0000 00-0
Explicación: x = Desconocido; u = Sin cambio; q = Depende de condición; r = Reservad
o
.---. = Sin implementar (al leer da cero); . . delante de una referencia = Función n
egada
Las posiciones oscurecidas están sin implementar; su lectura proporciona un cero.
Nota 1: El byte más significativo del Contador de Programa está inaccesible. PCLATH
es el registro de los 5
bits de más peso del PC (PC12 - PC8).
Nota 2: .Otros resets. incluye el externo (por la patilla -MCLR) y el debido al
Watchdog.
Nota 3: Los bits PSPIE y PSPIF están reservados en los dispositivos de 28 patillas
; se deben poner a cero.
Nota 4: Estos registros pueden direccionarse desde cualquier banco.
Nota 5: PORTD, PORTE, TRISD y TRISE no están implementados en los dispositivos de
28 patillas. Al
leerlos, siempre se obtiene cero.
Nota 6: PIR2<6> y PIE2<6> están reservados en dispositivos de 28 patillas; se debe
n mantener siempre a cero.
TABLA 2-1:RESUMEN DEL REGISTRO DE FUNCIÓN ESPECIAL (CONTINUACIÓN)
Direcc.
Nombre
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Valor tras
POR, BOR
Valor tras
otros resets
Banco 1
80h(4)
INDF
No es un registro físico. Se usa para direccionamiento de la memoria de datos.
0000 0000
0000 0000
81h
OPTION_REG
-RBPU
INTEDG
T0CS
T0SE
PSA
PS2
PS1
PS0
1111 1111
1111 1111
82h(4)
PCL
Byte menos significativo del Contador de Programa (PC).
0000 0000
0000 0000
83h(4)
STATUS
IRP
RP1
RP0
-TO
-PD
Z
DC
C
0001 1xxx
000q quuu
84h(4)
FSR
Puntero de direccionamiento indirecto de la memoria de datos.
xxxx xxxx
uuuu uuuu
85h
TRISA
--
--
Registro de programación de dirección del puerto A.
- -11 1111
- -11 1111
86h
TRISB
Registro de programación de dirección del puerto B.
1111 1111
1111 1111
87h
TRISC
Registro de programación de dirección del puerto C.
1111 1111
1111 1111
88h(5)
TRISD
Registro de programación de dirección del puerto D.
1111 1111
1111 1111
89h(5)
TRISE
IBF
OBF
IBOV
PSPMODE
--
Dirección de datos en puerto E.
0000 -111
0000 -111
8Ah(1,4)
PCLATH
--
--
--
Buffer de escritura para los 5 bits de más peso del PC.
- - -0 0000
- - -0 0000
8Bh(4)
INTCON
GIE
PEIE
T0IE
INTE
RBIE
T0IF
INTF
RBIF
0000 000x
0000 000u
8Ch
PIE1
PSPIE(3)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
0000 0000
0000 0000
8Dh
PIE2
--
(6)
--
EEIE
BCLIE
--
--
CCP2IE
-r -0 0- -0
-r -0 0- -0
8Eh
PCON
--
--
--
--
--
--
-POR
BOR
- - - - - -qq
- - - - - -uu
8Fh
--
Sin implementar.
----
----
90h
--
Sin implementar.
----
----
91h
SSPCON2
GCEN
ACKSTAT
ACKDT
ACKEN
RCEN
PEN
RSEN
SEN
0000 0000
0000 0000
92h
PR2
Registro de programación del período del temporizador 2 (Timer 2).
1111 1111
1111 1111
93h
SSPADD
Registro de dirección del puerto serie síncrono en modo I2C.
0000 0000
0000 0000
94h
SSPSAT
SMP
CKE
D/-A
P
S
R/-W
UA
BF
0000 0000
0000 0000
95h
--
Sin implementar.
----
----
96h
--
Sin implementar.
----
----
97h
--
Sin implementar.
----
----
98h
TXSTA
CSRC
TX9
TXEN
SYNC
--
BRGH
TRMT
TX9D
0000 -010
0000 -010
99h
SPBRG
Registro generador de baudios de transmisión.
0000 0000
0000 0000
9Ah
--
Sin implementar.
----
----
9Bh
--
Sin implementar.
----
----
9Ch
--
Sin implementar.
----
----
9Dh
--
Sin implementar.
----
----
9Eh
ADRESL
Byte de menos peso del resultado de la conversión analógica digital (A/D)
xxxx xxxx
uuuu uuuu
9Fh
ADCON1
ADFM
--
--
--
PCFG3
PCFG2
PCFG1
PCFG0
0- - - 0000
0- - - 0000
Explicación: x = Desconocido; u = Sin cambio; q = Depende de condición; r = Reservad
o
.---. = Sin implementar (al leer da cero); . . delante de una referencia = Función n
egada
Las posiciones oscurecidas están sin implementar; su lectura proporciona un cero.
Nota 1: El byte más significativo del Contador de Programa está inaccesible. PCLATH
es el registro de los 5
bits de más peso del PC (PC12 - PC8).
Nota 2: .Otros resets. incluye el externo (por la patilla -MCLR) y el debido al
Watchdog.
Nota 3: Los bits PSPIE y PSPIF están reservados en los dispositivos de 28 patillas
; se deben poner a cero.
Nota 4: Estos registros pueden direccionarse desde cualquier banco.
Nota 5: PORTD, PORTE, TRISD y TRISE no están implementados en los dispositivos de
28 patillas. Al
leerlos, siempre se obtiene cero.
Nota 6: PIR2<6> y PIE2<6> están reservados en dispositivos de 28 patillas; se debe
n mantener siempre a cero.
TABLA 2-1: RESUMEN DE REGISTRO DE FUNCIÓN ESPECIAL (CONTINUACIÓN)
Direcc.
Nombre
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Valor tras
POR, BOR
Valor tras
otros resets
Banco 2
100h(4)
INDF
No es un registro físico. Se usa para direccionamiento de la memoria de datos.
0000 0000
0000 0000
101h
TMR0
Registro del módulo temporizador 0 (Timer 0).
xxxx xxxx
uuuu uuuu
102h(4)
PCL
Byte menos significativo del Contador de Programa (PC).
0000 0000
0000 0000
103h(4)
STATUS
IRP
RP1
RP0
-TO
-PD
Z
DC
C
0001 1xxx
000q quuu
104h(4)
FSR
Puntero de direccionamiento indirecto de la memoria de datos.
xxxx xxxx
uuuu uuuu
105h
--
Sin implementar.
----
----
106h
PORTB
Memoria de datos PORTB en escritura; patillas del PORTB cuando se lee.
xxxx xxxx
uuuu uuuu
107h
--
Sin implementar.
----
----
108h
--
Sin implementar.
----
----
109h
--
Sin implementar.
----
----
10Ah(1,4)
PCLATH
--
--
--
Buffer de escritura para los 5 bits de más peso del PC.
- - -0 0000
- - -0 0000
10Bh(4)
INTCON
GIE
PEIE
T0IE
INTE
RBIE
T0IF
INTF
RBIF
0000 000x
0000 000u
10Ch
EEDATA
Registro de datos de la EEPROM.
xxxx xxxx
uuuu uuuu
10Dh
EEADR
Registro de dirección de la EEPROM.
xxxx xxxx
uuuu uuuu
10Eh
EEDATH
--
--
Byte alto del registro de datos de la EEPROM
xxxx xxxx
uuuu uuuu
10Fh
EEADRH
--
--
--
Byte alto del registro de dirección de la EEPROM
xxxx xxxx
uuuu uuuu
Banco 3
180h(4)
INDF
No es un registro físico. Se usa para direccionamiento de la memoria de datos.
0000 0000
0000 0000
181h
OPTION_REG
-RBPU
INTEDG
T0CS
T0SE
PSA
PS2
PS1
PS0
1111 1111
1111 1111
182h(4)
PCL
Byte menos significativo del Contador de Programa (PC).
0000 0000
0000 0000
183h(4)
STATUS
IRP
RP1
RP0
-TO
-PD
Z
DC
C
0001 1xxx
000q quuu
184h(4)
FSR
Puntero de direccionamiento indirecto de la memoria de datos.
xxxx xxxx
uuuu uuuu
185h
--
Sin implementar.
----
----
186h
TRISB
Registro de programación de dirección del puerto B.
1111 1111
1111 1111
187h
--
Sin implementar.
----
----
188h
--
Sin implementar.
----
----
189h
--
Sin implementar.
----
----
18Ah(1,4)
PCLATH
--
--
--
Buffer de escritura para los 5 bits de más peso del PC.
- - -0 0000
- - -0 0000
18Bh(4)
INTCON
GIE
PEIE
T0IE
INTE
RBIE
T0IF
INTF
RBIF
0000 000x
0000 000u
18Ch
EECON1
EEPGD
--
--
--
WRERR
WREN
WR
RD
x- - - x000
x- - - u000
18Dh
EECON2
Registro 2 de control de EEPROM. No es físicamente un registro.
- - - - - - - -
- - - - - - - -
18Eh
--
Sin implementar.
0000 0000
0000 0000
18Fh
--
Sin implementar.
0000 0000
0000 0000
Explicación: x = Desconocido; u = Sin cambio; q = Depende de condición; r = Reservad
o
.---. = Sin implementar (al leer da cero); . . delante de una referencia = Función n
egada
Las posiciones oscurecidas están sin implementar; su lectura proporciona un cero.
Nota 1: El byte más significativo del Contador de Programa está inaccesible. PCLATH
es el registro de los 5
bits de más peso del PC (PC12 - PC8).
Nota 2: .Otros resets. incluye el externo (por la patilla -MCLR) y el debido al
Watchdog.
Nota 3: Los bits PSPIE y PSPIF están reservados en los dispositivos de 28 patillas
; se deben poner a cero.
Nota 4: Estos registros pueden direccionarse desde cualquier banco.
Nota 5: PORTD, PORTE, TRISD y TRISE no están implementados en los dispositivos de
28 patillas. Al
leerlos, siempre se obtiene cero.
Nota 6: PIR2<6> y PIE2<6> están reservados en dispositivos de 28 patillas; se debe
n mantener siempre a cero.
2.2.2.1 REGISTRO DE ESTADO (STATUS REGISTER)
El registro de estado contiene el estado después de operaciones aritméticas y lógicas
en el
bloque de la ALU, el estado del RESET y los bits de selección de banco para la mem
oria de
datos.
El SR (Status Register) puede alterarse debido a algunas instrucciones o a algun
os registros. Si
el SR es el destino de alguna instrucción que afecta a los indicadores Z, DC o C,
la escritura
sobre estos tres bits se inhibe. Estos bits se activan o se borran de acuerdo a
circuitos lógicos.
Además, los bits -TO y -PD no pueden modificarse, por tanto, el resultado de una i
nstrucción
que tenga como destino el SR puede ser distinto de lo esperado. Por ejemplo, CLR
F STATUS
borrará los tres bits de más peso y pondrá a 1 el bit Z. Esto dejará el SR como 000u u1u
u, donde
u significa sin cambio.
Se recomienda, por lo tanto, que solamente se utilicen, para variar el SR, las i
nstrucciones BCF,
BSF, SWAPF y MOVWF, porque éstas no afectan a los bits Z, C o DC del registro SR.
En el
.Resumen de Instrucciones. se marcan las instrucciones que no afectan a los bits
del registro
SR.
REGISTRO 2-1: REGISTRO DE ESTADO (SR). (DIRECCIONES 03h, 83h, 103h y 183h.)
R/W-0
R/W-0
R/W-0
R-1
R-1
R/W-x
R/W-x
R/W-x
IRP
RP1
RP0
-TO
-PD
Z
DC
C
R = De lectura
W = De escritura
U = Sin implementar. Da 0
en lectura
-n = Valor del reset POR
bit7
bit0
bit 7:
IRP: Bit de selección de banco de registros (usado para direccionamiento indirecto
).
bit 4:
-TO: Bit de final de temporización.
bit 3:
-PD: Bit de bajada de tensión.
bit 2:
Z: Bit de cero
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
-RBPU
INTEDG
T0CS
T0SE
PSA
PS2
PS1
PS0
R = De lectura
W = De escritura
U = Sin implementar. Da 0
en lectura
-n = Valor del reset POR
bit7
bit0
bit 7:
-RBPU: Bit de habilitación de resistencias de polarización en salida del PUERTO B.
1 = Resistencias inhibidas.
0 = Resistencias habilitadas.
bit 6:
INTEDG: Bits de selección de flanco de interrupción.
1 = Interrupción activa en el flanco positivo en la patilla RB0/INT.
bit 5:
T0CS: Bit de selección de fuente de reloj para TMR0
(Temporizador 0).
bit 4:
T0SE: Bit de selección de flanco de reloj en el TMR0.
bit 3:
PSA: Bit de asignación del PRESCALER (Divisor de Frecuencia).
Valor
bit
Divisor TMR0
Divisor WDT
000
1 : 2
1 : 1
001
1 : 4
1 : 2
010
1 : 8
1 : 4
011
1 : 16
1 : 8
100
1 : 32
1 : 16
101
1 : 64
1 : 32
110
1 : 128
1 : 64
111
1 : 256
1 : 128
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-x
GIE
PEIE
T0IE
INTE
RBIE
T0IF
INTF
RBIF
R = De lectura
W = De escritura
U = Sin implementar. Da 0
en lectura
-n = Valor del reset POR
bit7
bit0
bit 7:
GIE: Bit de habilitación general de interrupciones.
bit 6:
PEIE: Bit de habilitación de interrupción de periféricos.
bit 5:
T0IE: Bit de habilitación de interrupción por desbordamiento del TMR0.
1 = Habilita la interrupción del TMR0.
bit 4:
INTE: Bit de habilitación de interrupción externa en la patilla RB0/INT.
1 = Habilita la interrupción externa en la patilla RB0/INT.
bit 3:
RBIE: Bit de habilitación de interrupción por variación en puerto RB.
bit 2:
T0IF: Bit indicador de interrupción por desbordamiento del TMR0 .
bit 0:
RBIF: Bit indicador de interrupción por variación sobre el puerto RB.
1 = Ha sucedido una interrupción por variación de nivel en el puerto RB. Se debe bor
rar por software.
0 = No ha habido variación sobre el puerto RB.
2.2.2.4 REGISTRO PIE1
El registro PIE1 posee los bits de habilitación individual para las interrupciones
de periféricos.
El bit PEIE del registro INTCON debe ser 1 para permitir la habilitación de cualqu
ier
interrupción de periférico.
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
R = De lectura
W = De escritura
U = Sin implementar. Da 0
en lectura
-n = Valor del reset POR
bit7
bit0
bit 7:
PSPIE: Bit habilitador de interrupción por Lectura-Escritura en el Puerto Servidor
Paralelo (PSP).
bit 6:
ADIE: Bit de habilitación de interrupción del Convertidor Analógico Digital (ADC).
1 = Habilita la interrupción del ADC.
bit 5:
RCIE: Bit de habilitación de interrupción de recepción del USART.
1 = Habilita la interrupción de recepción del USART.
bit 4:
TXIE: Bit de habilitación de interrupción para la transmisión en el USART.
bit 3:
SSPIE: Bit de habilitación de interrupción para el Puerto Síncrono Serie (SSP).
bit 2:
CCP1IE: Bit de habilitación de interrupción del módulo de Captura /Comparación/PWM.
bit 0:
TMR1IE: Bit de habilitación de interrupción por desbordamiento del TMR1.
R/W-0
R/W-0
R-0
R-0
R/W-0
R/W-0
R/W-0
R/W-0
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
R = De lectura
W = De escritura
-n = Valor del reset POR
bit7
bit0
bit 7:
PSPIF: Bit indicador de interrupción por Lectura-Escritura del Puerto Servidor Par
alelo (PSP).
1 = Una operación de escritura o lectura ha tenido lugar. Debe borrarse por softwa
re.
bit 6:
ADIF: Bit de señalización de interrupción del Convertidor Analógico Digital (ADC).
bit 5:
RCIF: Bit de señalización de interrupción por recepción del USART.
bit 4:
TXIF: Bit de señalización de interrupción para la transmisión en el USART.
1 = El buffer de transmisión del USART está vacío (USART preparado para una nueva tras
misión).
bit 2:
CCP1IF: Bit de señalización de interrupción del módulo de Captura /Comparación/PWM.
Modo Captura
1 = Ha ocurrido una captura en el registro TMR1. Debe borrarse por software.
bit 0:
TMR1IF: Bit de señalización de interrupción por desbordamiento del TMR1.
Nota 1:
PSPIF queda reservado en los dispositivos de 28 patillas; se debe mantener siemp
re a cero.
2.2.2.6 REGISTRO PIE2
El registro PIE2 contiene los bits de habilitación de interrupción individual para l
os periféricos
CCP2, conflicto de bus de SSP y operación de escritura en la EEPROM.
U-0
R/W-0
U-0
R/W-0
R/W-0
U-0
U-0
R/W-0
---
---
---
EEIE
BCLIE
---
---
CCP2IE
R = De lectura
W = De escritura
U = Sin implementar. Da 0
en lectura
-n = Valor del reset POR
bit7
bit0
bit 7:
Sin implementar: Da cero al leer.
bit 6:
Reservado: Siempre se debe mantener este bit a cero.
bit 5:
Sin implementar: Da cero al leer.
bit 4:
EEIE: Bit de habilitación de interrupción por la operación de escritura en la EEPROM.
bit 3:
BCLIE: Bit de habilitación de interrupción por el conflicto de bus del Puerto Síncrono
Serie (SSP).
bit 0:
CCP2IE: Bit de habilitación del módulo CCP2.
U-0
R/W-0
U-0
R/W-0
R/W-0
U-0
U-0
R/W-0
---
---
---
EEIF
BCLIF
---
---
CCP2IF
R = De lectura
W = De escritura
U = Sin implementar. Da 0
en lectura
-n = Valor del reset POR
bit7
bit0
bit 7:
Sin implementar: Da cero al leer.
bit 6:
Reservado: Siempre se debe mantener este bit a cero.
bit 5:
Sin implementar: Da cero al leer.
bit 4:
EEIF: Bit de señalización de interrupción por la operación de escritura en la EEPROM.
bit 3:
BCLIF: Bit de señalización de interrupción por el conflicto de bus del Puerto Síncrono S
erie (SSP).
bit 0:
CCP2IF: Bit de señalización de interrupción del módulo CCP2.
Modo Captura:
Modo Comparación:
Modo PWM:
No se usa.
2.2.2.8 REGISTRO PCON
El registro de control de alimentación PCON contiene los bits que permiten la dife
renciación
entre el reset de conexión (POR), el reset Brown.Out (BOR), el reset Watch-Dog (WD
T) y el
reset externo -MCLR.
Nota: BOR se ignora durante la conexión (POR). Lo debe activar el usuario y cheque
arlo en los
subsiguientes resets para ver si BOR está borrado, indicando, con ello, que ha ocu
rrido un reset
BOR. El bit de estado de BOR es indiferente y no predecible si el circuito de Br
own-Out se
inhibe (borrando el bit BODEN en la palabra de configuración).
U-0
U-0
U-0
U-0
U-0
U-0
R/W-0
R/W-1
---
---
---
---
---
---
-POR
-BOR
R = De lectura
W = De escritura
U = Sin implementar. Da 0
en lectura
-n = Valor del reset POR
bit7
bit0
bit 7-2:
Sin implementar: Da cero al leer.
bit 1:
-POR: Bit indicador del estado del reset de conexión (POR).
bit 0:
-BOR: Bit indicador del estado del reset BOR
0 = Ha ocurrido un reset tipo BOR. Debe activarse por software después del reset B
OR.
2.3 PCL Y PCLATH
El registro Contador de Programa (PC) tiene un tamaño de 13 bits. El byte de menor
peso reside
en el registro PCL, que es un registro de lectura y escritura. Los 5 bits de may
or peso
(PC<12:8>) no se pueden leer, pero son susceptibles de escritura indirectamente
a través del
registro PCLATH. Después de cualquier reset, los bits de mayor peso quedan borrado
s. En la
figura 2-5 se muestra las dos situaciones para cargar el PC. El ejemplo superior
de la figura
muestra cómo se carga el PC con la escritura del PCL (PCLATH<4:0>. PCH). El ejempl
o
inferior de la figura muestra la carga del PC durante una instrucción CALL o GOTO
(PCLATH<4:3> . PCH).
FIGURA 2-5: CARGA DEL PC EN SITUACIONES DIFERENTES
2.3.2 PILA
El PIC16F876 posee una pila por hardware de 8 niveles, con un ancho de palabra d
e 13 bits. El
espacio ocupado por la pila no forma parte de la memoria de usuario, y el punter
o de pila no se
puede leer ni escribir. El PC se salva en pila cuando se ejecuta una instrucción C
ALL o cuando
se va a producir un salto debido a una interrupción. Se extrae de la pila cuando s
e ejecuta una
instrucción RETURN, RETLW o RETFIE. El PCLATH no varía en operaciones de salvar o
recuperar de pila (operaciones PUSH o POP).
La pila opera como un buffer circular: después de ocho memorizaciones (entradas) e
n pila, la
novena, sobrescribirá su valor en la primera entrada, la décima, sobrescribirá en la q
ue fue la
segunda entrada, y así sucesivamente.
Nota 1: No existe ningún bit de estado que indique condiciones de desbordamiento d
e pila.
Nota 2: No existen mnemónicos de instrucciones llamados PUSH o POP. Estas acciones
suceden al ejecutar instrucciones como CALL, RETURN, RETLW y RETFIE, o al vector
izarse
una interrupción.
2.4 PAGINANDO LA MEMORIA DE PROGRAMA
RA0/AN0
Bit0
TTL
Entrada-salida o entrada analógica 0.
RA1/AN1
Bit1
TTL
Entrada-salida o entrada analógica 1.
RA2/AN2
Bit2
TTL
Entrada-salida o entrada analógica 2.
RA3/AN3/VREF
Bit3
TTL
Entrada-salida, entrada analógica 3, o VREF.
RA4/T0CKI
Bit4
ST
Entrada-salida, o entrada externa de reloj de TIMER0.
La salida es de tipo drenador abierto.
RA5/-SS/AN4
Bit5
TTL
Entrada-salida, selección de .servidor. para el puerto
serie síncrono, o entrada analógica 4.
TTL = Entrada tipo TTL; ST = Entrada tipo Schmitt Trigger.
Cada patilla del PORTB posee polarización interna a VDD, que puede activarse media
nte un bit
de control. En el registro OPTION_REG, borrando el bit 7, llamado , se activará la
polarización. Este bit se programa a 1, y por lo tanto se suprime la polarización, c
uando el
puerto se configura como salida. Tras un reset de conexión (Power-On-Reset), la po
larización
queda inhibida.
RBPU
Cuatro patillas del PORTB, RB7 a RB4, poseen una característica especial por la qu
e pueden
provocar interrupción si cambian de estado (Interrupción por Cambio), estando config
uradas
como entradas. El estado de estas patillas se compara con su antiguo valor, memo
rizado en un
latch, de esta forma puede saber el circuito si ha habido un cambio de valor en
la entrada. El
conjunto de salidas de RB7 a RB4 se conectan a una puerta OR, para, de esta form
a, generar el
bit de petición de interrupción RBIF, cualquiera que sea la que cambie de valor.
Esta interrupción puede sacar al dispositivo del estado SLEEP (reposo). El program
ador, en la
rutina de servicio de la interrupción, puede borrar la interrupción de la siguiente
manera:
RB0/INT
Bit0
TTL/ST(1)
Patilla de entrada-salida o entrada de interrupción externa.
Polarización programable.
RB1
Bit1
TTL
Patilla de entrada-salida. Polarización programable.
RB2
Bit2
TTL
Patilla de entrada-salida. Polarización programable.
RB3/PGM
Bit3
TTL
Patilla de entrada-salida o modo de programación LVP. Polarización
programable.
RB4
Bit4
TTL
Patilla de entrada-salida (con Interrupción por Cambio). Polarización
programable.
RB5
Bit5
TTL
Patilla de entrada-salida (con Interrupción por Cambio). Polarización
programable.
RB6/PGC
Bit6
TTL/ST(2)
Patilla de entrada-salida (con Interrupción por Cambio) o depuración
in-situ. Polarización programable. Reloj de programación en serie.
RB7/
Bit7
TTL/ST(2)
Patilla de entrada-salida (con Interrupción por Cambio) o depuración
in-situ. Polarización programable. Dato de programación en serie.
TTL = Entrada con niveles TTL; ST = Entrada tipo Schmitt Trigger.
Nota 1: Este buffer es una entrada ST cuando se configura como interrupción extern
a.
Nota 2: Este buffer es una entrada ST cuando se usa en modo de programación serie.
06h, 106h
PORTB
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
xxxx xxxx
uuuu uuuu
86h, 186h
TRISB
Registro de dirección de datos del puerto B
1111 1111
1111 1111
81h, 181h
OPTION_REG
RBPU
INTEDG
T0CS
T0SE
PSA
PS2
PS1
PS0
1111 1111
1111 1111
x = Desconocido; u = Sin cambio. Las celdas oscurecidas no se emplean en el puer
to B.
3.3 REGISTROS PORTC Y TRISC
RC0/T1OSO/T1CKI
Bit0
ST
Entrada-salida. Salida de oscilación de Timer1. Entrada de reloj del
Timer1.
RC1/T1OSI/CCP2
Bit1
ST
Entrada-salida. Entrada de oscilación externa para Timer1. Entrada
del módulo Capture2. Salida del módulo Compare2. Salida del
módulo PWM2.
RC2/CCP1
Bit2
ST
Entrada-salida. Entrada de Capture1. Salida de Compare1. Salida de
PWM1.
RC3/SCK/SCL
Bit3
ST
Entrada-salida. Reloj serie síncrono para los modos SPI y I2C.
RC4/SDI/SDA
Bit4
ST
Entrada-salida. Dato de entrada en modo SPI. Dato entrada/salida
para el modo I2C.
RC5/SDO
Bit5
ST
Entrada-salida. Dato de salida del Puerto Serie Síncrono (SSP).
RC6/TX/CK
Bit6
ST
Entrada-salida. Reloj del USART (Transmisor Receptor Síncrono
Asíncrono).
RC7/RX/DT
Bit7
ST
Entrada-salida. Dato del USART (Transmisor Receptor Síncrono
Asíncrono).
ST = Entrada tipo Schmitt Trigger.
R/W-x
U-0
U-0
U-0
R/W-x
R/W-0
R/S-0
R/S-0
EEPGD
---
---
---
WRERR
WREN
WR
RD
R = De lectura
W = De escritura
U = Sin implementar. Da 0
en lectura
-n = Valor del reset POR
bit7
bit0
bit 7:
EEPGD: Bit de selección EEPROM Programa-Datos.
(Este bit no debe modificarse cuando está realizándose una operación de lectura o escr
itura).
bit 6-4:
Sin implementar: Da cero al leer.
bit 3:
WRERR: Bit indicador de error en EEPROM.
1 = Se ha finalizado prematuramente una operación de escritura.
bit 2:
WREN: Bit de habilitación de escritura en EEPROM.
bit 1:
WR: Bit de control de escritura.
1 = Inicia un ciclo de escritura. (Este bit se borra por hardware cuando se comp
leta la escritura. Por
software, solamente puede activarse.
bit 0:
RD: Bit de control de lectura.
1 = Se inicia una lectura de EEPROM. Este bit se borra por hardware y se activa
por software.
Para leer una posición de la memoria de datos, el usuario debe escribir en el regi
stro EEADR la
dirección deseada, borrar el bit de control EEPGD (EECON1<7>) y, entonces, activar
el bit de
control RD (EECON1<0>). El dato estará disponible, en el próximo ciclo de instrucción,
en el
registro EEDATA, por consiguiente podrá leerse en la próxima instrucción. EEDATA
mantendrá este valor, hasta que se efectúe otra operación de lectura, o sea modificado
expresamente por el programador.
Para escribir en una posición de la memoria EEPROM de datos, primero hay que coloc
ar la
dirección en el registro EEADR, y después el dato a escribir, en el registro EEDATA.
Entonces
se iniciará la secuencia del ejemplo 4-2, que completará el ciclo de escritura.
Ejemplo 4-2: Escritura en la EEPROM de datos
1 BSF STATUS, RP1 ; Selección de banco 2.
2 BCF STATUS, RP0 ; .
3 MOVLW DATA_EE_ADDR ;
4 MOVWF EEADR ; Dirección de escritura.
5 MOVLW DATA_EE_DATA ;
6 MOVWF EEDATA ; Dato a escribir en memoria.
7 BSF STATUS, RP0 ; Selección de banco 3.
8 BCF EECON1, EEPGD ; Memoria de datos.
9 BSF EECON1, WREN ; Habilitación de escritura.
10 BCF INTCON, GIE ; Inhibe las interrupciones.
11 MOVLW 55h ; Escribe 55h en EECON2.
12 MOVWF EECON2 ; .
13 MOVLW AAh ;
14 MOVWF EECON2 ; Escribe AAh en EECON2.
15 BSF EECON1, WR ; Inicia la escritura.
16 BSF INTCON, GIE ; Habilita interrupciones.
17 SLEEP ; Espera hasta terminar la escritura.
18 BCF EECON1, WREN ; Inhibe la escritura.
La escritura no se iniciará si la secuencia no se sigue exactamente: escribir 55h
en EECON2,
escribir AAh en EECON2, activar bit WR; esto para cada ciclo de escritura. Se re
comienda muy
encarecidamente inhibir las interrupciones durante la operación.
Asimismo, el bit WREN debe activarse al inicio de la secuencia y borrarse al fin
al. De esta
manera evitaremos escrituras accidentales durante la ejecución de programas.
Después de iniciada la secuencia de escritura, un borrado del bit WREN no afectará a
la correcta
conclusión de la operación. El bit WR estará inhibido hasta después de que se active el
bit
WREN. Ambos bits no deben activarse en la misma instrucción.
Al final del ciclo de escritura, el bit WR se borrará por hardware, y el bit indic
ador de
interrupción por finalización de ciclo de escritura (EEIF) se activará. Este bit debe
borrarse por
software.
4.5 Lectura de la memoria FLASH de Programa
Para leer una posición de la memoria de programa escribiremos los dos bytes de la
dirección en
los registros EEADR y EEADRH, activaremos el bit de control EEPGD (EECON1<7>), p
ara,
finalmente, activar el bit de control RD (EECON1<0>). Siempre que el bit de cont
rol de lectura
está activo, el microcontrolador utiliza los dos siguientes ciclos de instrucción pa
ra leer el dato.
Este dato queda disponible en los registros EEDATA y EEDATH después de la segunda
instrucción NOP. Durante estas instrucciones es cuando se efectúa la lectura de los
dos bytes (se
recuerda que la longitud de la palabra, en la memoria de programa, es de 14 bits
). Los registros
EEDATA y EEDATH mantendrán el valor leído hasta que se produzca otra lectura, o el
programador modifique su valor.
Ejemplo 4-3: Lectura de memoria FLASH
BSF STATUS, RP1 ; Selección de banco 2
BCF STATUS, RP0 ; .
MOVLW ADDRH ; Carga byte de dirección alta en el
MOVWF EEADRH ; registro EEADRH.
MOVLW ADDRL ; Carga byte de dirección baja en el
MOVWF EEADR ; registro EEADR.
BSF STATUS, RP0 ; Selecciona banco 3.
BSF EECON1, EEPGD ; Selecciona memoria de programa.
BSF EECON1, RD ; Lectura de la EEPROM.
NOP ; Durante esta instrucción y la siguiente,
NOP ; se produce la lectura de los dos bytes.
BCF STATUS, RP0 ; Selecciona banco 2.
MOVF EEDATA, W ; Carga lectura byte bajo, en W.
MOVF EEDATH, W ; Carga lectura byte alto, en W.
0
0
X
Toda la memoria de programa
Sí
No
No
No
0
1
0
Áreas desprotegidas
Sí
No
Sí
No
0
1
0
Áreas protegidas
Sí
No
No
No
0
1
1
Áreas desprotegidas
Sí
Sí
Sí
No
0
1
1
Áreas protegidas
Sí
No
No
No
1
0
0
Áreas desprotegidas
Sí
No
Sí
No
1
0
0
Áreas protegidas
Sí
No
No
No
1
0
1
Áreas desprotegidas
Sí
Sí
Sí
No
1
0
1
Áreas protegidas
Sí
No
No
No
1
1
0
Toda la memoria de programa
Sí
No
Sí
Sí
1
1
1
Toda la memoria de programa
Sí
Sí
Sí
Sí
8Dh
PIE2
---
(1)
---
EEIE
BCLIE
---
---
CCP2IE
-r-0 0--0
-r-0 0 0
0Dh
PIR2
---
(1)
---
EEIE
BCLIE
---
---
CCP2IE
-r-0 0--0
-r-0 0 0
x = Desconocido; u = Sin cambio; r = Reservado; --- = Sin implementar (se lee 0)
. Las celdas sombreadas no se
utilizan durante el acceso a la memoria FLASH.
Nota 1: Estos bits están reservados; se deben mantener siempre a cero.
5.0 MÓDULO TIMER 0 (TEMPORIZADOR 0)
El módulo Timer0 es un bloque que puede trabajar como temporizador o contador, con
las
siguientes características:
.
Temporizador o contador de 8 bits.
.
Se puede leer y programar.
.
Predivisor de 8 bits programable por software.
.
Selección de reloj interno o externo.
.
Provoca interrupción cuando desborda (cuando pasa de FFh a 00h).
.
Selección de flanco para reloj externo.
La figura 5-1 representa el esquema a bloques del Timer0 y del Predivisor, compa
rtido este
último con el WDT.
El modo temporizador se selecciona poniendo a 0 el bit T0CS (OPTION_REG <5>). En
este
modo, y trabajando sin Predivisor, la cantidad cargada en TMR0 se incrementará con
cada ciclo
de instrucción. Si se escribe sobre TMR0, el incremento de éste se inhibirá durante lo
s dos
próximos ciclos de instrucción. El usuario puede trabajar con él escribiendo y ajustan
do el valor
del registro TMR0.
5.3 Predivisor
Solamente hay disponible un módulo Predivisor, que está compartido por Timer0 y WDT.
Si se
asigna a uno de los módulos, no puede ser utilizado por el otro.
Los bits PSA y PS2:PS0 (OPTION_REG<3:0>) determinan la asignación del Predivisor,
y la
división que se efectuará.
Cuando se asigna al módulo Timer0, todas las instrucciones que escriben sobre el r
egistro
TMR0 (por ejemplo CLRF 1, MOVWF 1, BSF 1, x... etc.) borrarán el Predivisor. Cuand
o se
asigna al módulo WDT, una instrucción CLRWDT borrará el Predivisor y el Watchdog Timer
.
El Predivisor no se puede leer ni escribir.
Nota: Escribiendo sobre TMR0, cuando el Predivisor está asignado al Timer0, se bor
rará la
cuenta del Predivisor pero no se cambiará la asignación de éste.
REGISTRO 5-1: REGISTRO OPTION_REG
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
-RBPU
INTEDG
T0CS
T0SE
PSA
PS2
PS1
PS0
R = De lectura
W = De escritura
U = Sin implementar. Da
0 en lectura
-n = Valor del reset POR
bit7
bit0
bit 7:
-RBPU:
bit 6:
INTEDG
bit 5:
T0CS: Bit de selección de origen de reloj
bit 4:
T0SE: Bit de selección de flanco de reloj para TMR0.
bit 3:
PSA: Bit de asignación de Predivisor.
bit 2-0:
PS2:PS0: Bits de selección de división.
Valor de los bits División TMR0 División WDT
000 1:2 1:1
001 1:4 1:2
010 1:8 1:4
011 1:16 1:8
100 1:32 1:16
101 1:64 1:32
110 1:128 1:64
111 1:256 1:128
01h, 101h,
TMR0
Registro del módulo Timer0
xxxx xxxx
uuuu uuuu
0Bh, 8Bh,
10Bh, 18Bh
INTCON
GIE
PEIE
T0IE
INTE
RBIE
T0IF
INTF
RBIF
0000 000x
0000 000u
81h, 181h
OPTION_REG
-RBPU
INTEDG
T0CS
T0SE
PSA
PS2
PS1
PS0
1111 1111
1111 1111
x = Desconocido; u = Sin cambio; r = Reservado. Las celdas sombreadas no se util
izan en el Timer0.
6.0 Módulo Timer1
---
---
T1CKPS1
T1CKPS0
T1OSCEN
-T1SYNC
TMR1CS
TMR1ON
R = De lectura
W = De escritura
U = Sin implementar. Da
0 en lectura
-n = Valor del reset POR
bit7
bit0
bit 7-6:
Sin implementar: Se lee como 0.
bit 5-4:
T1CKPS1:T1CKPS0: Bits de selección de predivisión de reloj de entrada a Timer1.
1 = Oscilador habilitado.
0 = Oscilador anulado.
bit 2:
-T1SYNC: Bit de control de sincronización de la entrada de reloj externo de Timer1
.
TMR1CS = 1
TMR1CS = 0
bit 1:
TMR1CS: Bit de selección de origen de reloj para Timer1.
bit 0:
TMR1ON: Bit de conexión de Timer1.
1 = Timer1 habilitado.
0 = Timer1 detenido.
Cuando se habilita el oscilador del Timer1 (T1OSCEN = 1), las patillas RC1/T1OSI
/CCP2 y
RC0/T1OSO/T1CKI quedan como entradas; o sea, que se ignora el valor de TRISC<1:0
>.
6.1 Operación del Timer1 en modo temporizador
El modo temporizador se selecciona borrando el bit TMRCS (T1CON<1>). En este mod
o, la
entrada de reloj es Fosc/4; el bit de sincronización (T1CON<2>) no tiene efecto en
este modo porque el reloj interno siempre está sincronizado.
SYNCT1
6.2 Operación del Timer1 como contador
Al leer TMR1H o TMR1L cuando el Timer1 está funcionando como contador asíncrono, el
hardware garantiza la lectura correcta. Sin embargo, el usuario debe conocer la
existencia de
ciertos problemas al leer el contenido de 16 bits, en dos bloques de 8 bits, com
o quiera que
puede producirse el desbordamiento del contador entre las dos lecturas.
En la escritura, se recomienda al usuario detener el temporizador, y, entonces,
escribir el valor
deseado sobre el registro. Una escritura cuando el temporizador está siendo increm
entado puede
provocar un valor impredecible en el registro.
Se debe conectar un cristal de cuarzo entre las patillas T1OSI (entrada) y T1OSO
(salida del
amplificador oscilador). El oscilador se habilita con el bit T1OSCEN (T1CON<3>),
y
funcionará en bajo consumo a partir de 200 KHz. Este oscilador continúa funcionando
aunque
la CPU entre en modo SLEEP (alerta), y está diseñado especialmente para trabajar a 3
2 KHz. La
tabla 6-1 la selección del condensador dependiendo de la frecuencia de trabajo; en
la figura 6-3
se aprecia una aplicación del Timer1 como reloj de tiempo real.
LP
32 KHz
33 pF
33 pF
100 KHz
15 pF
15 pF
200 KHz
15 pF
15 pF
Estos valores son para guía de diseño
Cristales comprobados:
32,768 KHz
Epson C-
001R32.768K-A
+/- 20 PPM
100 KHz
Epson C-2 100.00KC-P
+/- 20 PPM
200 KHz
STD XTL 200.000KHz
+/- 20 PPM
Nota 1: Una mayor capacidad aumenta la estabilidad
del oscilador pero también aumenta el tiempo de
arranque.
Nota 2: Ya que cada oscilador o resonador posee sus
propias características, el usuario debe consultar las
especificaciones del dispositivo a utilizar.
6.6 Reset del Timer1 usando la salida de disparo del CCP
Si los módulos CCP1 o CCP2 se configuran en modo comparación para generar un .dispar
o por
suceso especial. (CCP1M3:CCP1M0 = 1011), esta señal provocará el reset del Timer1.
Nota: El .disparo por suceso especial. de los módulos CCP1 y CCP2 no activará el bit
indicador de interrupción TMR1IF (PIR<0>).
El Timer1 debe configurarse como temporizador o contador síncrono para disponer de
esta
característica. Si Timer1 está funcionando en modo contador asíncrono, este reset no s
e
producirá.
En el caso de que coincida la escritura sobre Timer1, y un .disparo por suceso e
special. desde
CCP1 o CCP2, la escritura tendrá preferencia.
En este modo de operación, la pareja de registros CCPRxH:CCPRxL produce el período p
ara
Timer1.
6.7 Reset de la pareja de registros TMR1H:TMR1L, del Timer1
Los registros TMR1H y TMR1L no se ponen a 00h con la conexión del sistema (POR), o
con
otros resets, exceptuando el reset del .disparo por suceso especial. de CCP1 o C
CP2.
El registro T1CON se borra con los reset POR o BOR. Esto produce la detención del
Timer1, y
pone el Predivisor a 1:1. Los demás resets no afectan a este registro.
0Bh, 8Bh,
10Bh, 18Bh
INTCON
GIE
PEIE
T0IE
INTE
RBIE
T0IF
INTF
RBIF
0000 000x
0000 000u
0Ch
PIR1
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
0000 0000
0000 0000
8Ch
PIE1
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
0000 0000
0000 0000
0Eh
TMR1L
Byte de menor peso del registro de 16 bits TMR1
xxxx xxxx
uuuu uuuu
0Fh
TMR1H
Byte de mayor peso del registro de 16 bits TMR1
xxxx xxxx
uuuu uuuu
10h
T1CON
---
---
T1CKPS1
T1CKPS0
T1OSCEN
T1SYNC
TMR1CS
TMR1ON
--00 0000
--uu uuuu
x = Desconocido; u = Sin cambio; r = Reservado; --- = Sin implementar (se lee 0)
. Las celdas sombreadas no se utilizan en el
Timer1.
Nota 1: Los bits PSPIE y PSPIF se reservan en el PIC 16F873/876; se deben manten
er siempre a 0.
7.0 Módulo Timer2
U-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
---
TOUTPS3
TOUTPS2
TOUTPS1
TOUTPS0
TMR2ON
T2CKPS1
T2CKPS0
R = De lectura
W = De escritura
U = Sin implementar. Da
0 en lectura
-n = Valor del reset POR
bit7
bit0
bit 7:
Sin implementar: Se lee como 0.
bit 6-3:
TOUTPS3:TOUTPS0: Bits de selección de postdivisión de Timer2.
bit 1-0:
T2CKPS1:T2CKPS0: Bit de selección de predivisión para Timer2.
00 = 1:1 valor de predivisión.
La salida de TMR2, antes del postdivisor, sirve para dar reloj al puerto SSPort,
quien utiliza esta
señal para crear su desplazamiento de datos serie. En la figura 7-1 se aprecia est
o con detalle.
0Bh,
8Bh,
10Bh,
18Bh
INTCON
GIE
PEIE
T0IE
INTE
RBIE
T0IF
INTF
RBIF
0000 000x
0000
000u
0Ch
PIR1
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
0000 0000
0000
0000
8Ch
PIE1
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
0000 0000
0000 0000
11h
TMR2
Registro del módulo Timer2
0000 0000
0000 0000
12h
T2CON
---
TOUTPS3
TOUTPS2
TOUTPS1
TOUTPS0
TMR2ON
T2CKPS1
T2CKPS0
-000 0000
-000 000
92h
PR2
Registro de período del Timer2
1111 1111
1111 1111
x = Desconocido; u = Sin cambio; r = Reservado; --- = Sin implementar (se lee 0)
. Las celdas sombreadas no se
utilizan en el Timer1.
Nota 1: Los bits PSPIE y PSPIF se reservan en el PIC 16F873/876; se deben manten
er siempre a 0.
8.0 Módulos CAPTURA/COMPARACIÓN/PWM
Cada módulo Captura/Comparación/PWM (CCP) contiene un registro de 16 bits que puede
trabajar como:
.
Registro de captura de 16 bits.
.
Registro de comparación de 16 bits.
.
Registro de relación de ciclo PWM.
Modo CCP
Temp. afectado
Captura
Comparación
PWM
Timer1
Timer1
Timer2
Tabla 8-2: Interacción de los dos módulos CCP
Modo CCPx
Modo CCPy
Interacción
Captura
Captura
Misma base de tiempos que TMR1
Captura
Comparación
El comparador se configurará para .dispara por
suceso especial., que borrará a TMR1.
Comparación
Comparación
El comparador se configurará para .disparo por
suceso especial, que borrará a TMR1.
PWM
PWM
El PWM tiene la misma frecuencia y ciclo de
actualización (la interrupción de TMR2).
PWM
Captura
Ninguna
PWM
Comparación
Ninguna
REGISTRO 8-1: REGISTRO CCP1CON/CCP2CON (DIRECCIÓN 17h/1Dh)
U-0
U-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
---
---
CCPxX
CCPxY
CCPxM3
CCPxM2
CCPxM1
CCPcM0
R = De lectura
W = De escritura
U = Sin implementar. Da
0 en lectura
-n = Valor del reset POR
bit7
bit0
bit 7-6:
Sin implementar: Se lee como 0.
bit 5-4:
CCPxX:CCPxY: Bits menos significativos de PWM.
Modo Captura: No usado.
Modo PWM: Estos bits son los dos menos significativos de la relación de ciclo de P
WM. Los ocho
más significativos se encuentran en el registro CCPRxL.
bit 3-0:
CCPxM3:CCPxM0: Bits de selección de modo CCPx.
0000 = Captura/Comparación/PWM desconectados (reset del módulo CCPx).
1000 = Modo Comparación, activa la salida con la coincidencia (se activa el bit CC
PxIF).
1001 = Modo Comparación, borra la salida con la coincidencia (se activa el bit CCP
xIF).
1010 = Modo Comparación, genera una interrupción cuando hay coincidencia (activa bit
CCPxIF, sin
efecto en la patilla CCPx)
1011 = Modo Comparación, disparo por suceso especial (activa bit CCPxIF, patilla C
CPx sin efecto);
CCP1 borra a TMR1; CCP2 borra TMR1 y arranca el convertidor A/D (si este módulo es
tá
habilitado).
8.1.1 CONFIGURACIÓN DE LA
PATILLA CCP
En modo Captura, la patilla RC2/CCP1 se
configurará como entrada activando el bit
TRISC<2>.
Cuando se cambia el modo de captura, puede generarse una falsa interrupción de cap
tura. El
usuario mantendrá borrado el bit CCP1IE (PIE1<2>) para evitar falsas interrupcione
s, y borrará
el bit indicador CCP1IF inmediatamente después de cualquier cambio en el modo de o
peración.
.
Puesta a 1.
.
Puesta a 0.
.
Sin cambio.
La acción sobre esta patilla la selecciona el valor de los bits de control CCP1M3:
CCP1M0
(CCP1CON<3:0>). Al mismo tiempo, se activa el indicador de interrupción CCP1IF.
8.2.1 CONFIGURACIÓN DE CCP
Cuando se elige el modo de generar una interrupción por programa, la patilla CCP1
no queda
afectada. El bit CCPIF se activa provocando una interrupción en CCP (si está habilit
ado).
Los siguientes pasos deben respetarse para configurar el módulo CCP como PWM:
1. Programar el período PWM, escribiendo en el registro PR2.
2. Programar el duty cycle, escribiendo en el registro CCPR1L y CCP1CON<5:4>.
3. Poner la patilla CCP1 como salida, borrando el bit 2 de TRISC (TRISC<2>).
4. Programar el valor Predivisor de TMR2 y habilitar Timer2, escribiendo T2CON.
5. Configurar el módulo CCP1 para operación como PWM.
0Bh,
8Bh,
10Bh,
18Bh
INTCON
GIE
PEIE
T0IE
INTE
RBIE
T0IF
INTF
RBIF
0000 000x
0000 000u
0Ch
PIR1
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
0000 0000
0000 0000
0Dh
PIR2
---
---
---
---
---
---
---
CCP2IF
---- ---0
---- ---0
8Ch
PIE1
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
0000 0000
0000 0000
8Dh
PIE2
---
---
---
---
---
---
---
CCP2IE
---- ---0
---- ---0
87h
TRISC
Registro de dirección del puerto C.
1111 1111
1111 1111
11h
TMR2
Registro de los módulos de TMR2.
0000 0000
0000 0000
92h
PR2
Registro de período de los módulos TMR2.
1111 1111
1111 1111
12h
T2CON
---
TOUTPS3
TOUTPS2
TOUTPS1
TOUTPS0
TMR2ON
T2CKPS1
T2CKPS0
-000 0000
-000 0000
15h
CCPR1L
Byte menos significativo del registro1 de Captura-Comparación-PWM
xxxx xxxx
uuuu uuuu
16h
CCPR1H
Byte más significativo del registro1 de Captura-Comparación-PWM
xxxx xxxx
uuuu uuuu
17h
CCP1CON
---
---
CCP1X
CCP1Y
CCP1M3
CCP1M2
CCP1M1
CCP1M0
--00 0000
--00 0000
1Bh
CCPR2L
Byte menos significativo del registro2 de Captura-Comparación-PWM
xxxx xxxx
uuuu uuuu
1Ch
CCPR2H
Byte más significativo del registro2 de Captura-Comparación-PWM
xxxx xxxx
uuuu uuuu
1Dh
CCP2CON
---
---
CCP2X
CCP2Y
CCP2M3
CCP2M2
CCP2M1
CCP2M0
--00 0000
--00 0000
x = Desconocido; u = Sin cambio; r = Reservado; --- = Sin implementar (se lee 0)
. Las celdas sombreadas no se
utilizan en PWM y Timer2.
Nota 1: Los bits PSPIE y PSPIF están reservados en el PIC 16F873/876; se deben man
tener siempre a 0.
La figura 9-1 muestra un diagrama a bloques para el modo SPI; las figuras 9-5 y
9-9 muestran
los diagramas a bloques para dos diferentes modos de trabajar I2C.
REGISTRO 9-1: SSPSTAT: REGISTRO DE ESTADO PUERTO SERIE SÍNCRONO
(DIRECCIÓN 94h)
R/W-0
R/W-0
R-0
R-0
R-0
R-0
R-0
R-0
SMP
CKE
D/-A
P
S
R/-W
UA
BF
R = De lectura
W = De escritura
U = Sin implementar. Da
0 en lectura
-n = Valor del reset POR
bit7
bit0
bit 7:
SMP: Bit de captura.
1 = Captura del dato de entrada al final del tiempo del dato de salida.
0 = Captura del dato de entrada en el centro del tiempo del dato de salida.
bit 6:
CKE: Selección de flanco de reloj para SPI (figura 9-4, figura 9-5 y figura 9-6).
Modo SPI:
CKP = 0
CKP = 1
bit 5:
D/A: Bit de selección de dato o dirección (Data/-Address), solamente en modo I2C.
(Solamente en modo I2C. Este bit se borra cuando se inhibe el módulo MSSP. SSPEN e
stá a cero).
1 = Indica que un bit de stop se ha detectado en último lugar. (este bit se pone a
cero con RESET).
bit 3:
S: Bit de arranque (Start).
(Solamente en modo I2C. Este bit se borra cuando se inhibe el módulo MSSP. SSPEN e
stá a cero).
1 = Indica que un bit de start se ha detectado en último lugar. (este bit se pone
a cero con RESET).
bit 2:
R/W: Bit de información de lectura-escritura (solamente en modo I2C).
0 = Escritura.
1 = Transmisión en progreso.
0 = Transmisión detenida.
La función OR de este bit con SEN, RSEN, PEN, RCEN o ACKEN indicará si el MSSP está en
modo
aislado.
bit 1:
UA: Actualización de dirección (10 bits, solamente en modo I2C).
1= Indica que el usuario necesita actualizar la dirección en el registro SSPADD.
bit 0:
BF: Bit de estado de buffer lleno (buffer full).
1 = Dato transmitido está en progreso (no incluye ACK y bits de STOP). SSPBUF está ll
eno.
0 = Dato transmitido no está en progreso (no incluye ACK y bits de STOP). SSPBUF es
tá vacío.
REGISTRO 9-2: SSPCON: REGISTRO DE CONTROL PUERTO SERIE SÍNCRONO
(DIRECCIÓN 14h)
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
WCOL
SSPOV
SSPEN
CKP
SSPM3
SSPM2
SSPM1
SSPM0
R = De lectura
W = De escritura
U = Sin implementar. Da
0 en lectura
-n = Valor del reset POR
bit7
bit0
bit 7:
WCOL: Bit detector de conflicto en escritura.
Modo Maestro
1 = Se intentó una escritura sobre SSPBUF cuando no eran válidas las condiciones I2C
.
0 = No existe conflicto.
Modo Servidor
0 = No existe conflicto.
bit 6:
SSPOV: Bit indicador de desbordamiento en recepción.
1 = Se ha recibido un nuevo byte cuando SSPBUF aún mantenía el dato anterior. El dat
o en SSPSR se
pierde al desbordar. En modo Servidor, el usuario leerá el SSPBUF, aunque esté trans
mitiendo un dato,
para evitar desbordamiento. En modo maestro, el bit de desbordamiento no se acti
va para evitar éste,
0 = No hay conflicto.
En modo I2C:
1 = Se recibe un byte mientras SSPBUF mantiene el dato previo. SSPOV es indifere
nte en trasmisión.
0 = No existe conflicto.
bit 5:
SSPEN: Bit de habilitación de Puerto Serie Síncrono.
En modo SPI, cuando se habilite, estas patillas deberán ser convenientemente confi
guradas como
entradas o salidas.
1 = Habilita puerto serie y configura las patillas SCK, SDO, SDI y SS como patill
as del puerto serie.
0 = Inhibe puerto serie y configura estas patillas como líneas de puerto entrada-s
alida.
En modo I2C, cuando se habilite, estas patillas deberán ser convenientemente confi
guradas como
entradas o salidas.
1 = Habilita puerto serie y configura las patillas SDA y SCL como patillas del p
uerto serie.
0 = Inhibe puerto serie y configura estas patillas como líneas de puerto entrada-s
alida.
bit 4:
CKP: Bit de selección de polaridad de reloj.
En modo SPI:
1 = Habilita reloj.
bit 3-0:
SSPM3:SSPM0: Bits de selección de modo para Puerto Serie Síncrono
0101 = Modo Servidor SPI, reloj = patilla SCK. Patilla de control SS inhibida. Ésta
puede usarse
interrupciones habilitadas.
1111 = Modo Maestro controlado por el microprograma I2C, dirección de 10 bits con
bit de start y stop,
e interrupciones habilitadas.
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
GCEN
ACKSTAT
ACKDT
ACKEN
RCEN
PEN
RSEN
SEN
R = De lectura
W = De escritura
U = Sin implementar.
Da 0 en lectura
-n = Valor del reset POR
bit7
bit0
bit 7:
GCEN: Bit de habilitación de llamada general (solamente en modo servidor I2C).
bit 6:
ACKSTAT: Bit de estado de reconocimiento (solamente en modo maestro I2C).
Valor que fue transmitido cuando el usuario inicia una secuencia de reconocimien
to al final de una
recepción.
1 = No hay reconocimiento,
0 = Reconocimiento.
bit 4:
ACKEN: Bit de habilitación de secuencia de reconocimiento (solamente en modo maest
ro I2C).
0 = Recepción detenida.
bit 2:
PEN: Bit de habilitación de condición de parada (solamente en modo maestro I2C).
1 = Inicia la condición de parada (STOP) en las patillas SDA y SCL. Se borra automát
icamente por
hardware.
0 = Detenida la condición de parada.
bit 1:
RSEN: Bit de habilitación de la condición de repetición de arranque (solamente en modo
maestro I2C).
por hardware.
Nota:
Para los bits ACKEN, RCEN, PEN, RSEN y SEN: Si el módulo I2C no está en modo detención
, estos
Adicionalmente, una cuarta patilla puede usarse cuando se opera en modo servidor
:
.
Selección de servidor (). SS
0Bh, 8Bh,
10Bh, 18Bh
INTCON
GIE
PEIE
T0IE
INTE
RBIE
T0IF
INTF
RBIF
0000 000x
0000 000u
0Ch
PIR1
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
0000 0000
0000 0000
8Ch
PIE1
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
0000 0000
0000 0000
13h
SSPBUF
Registro de recepción y transmisión del Puerto Serie Síncrono
xxxx xxxx
uuuu uuuu
14h
SSPCON
WCOL
SSPOV
SSPEN
CKP
SSPM3
SSPM2
SSPM1
SSPM0
0000 0000
0000 0000
94h
SSPSTAT
SMP
CKE
D/-A
P
S
R/-W
UA
BF
0000 0000
0000 0000
x = Desconocido; u = Sin cambio; r = Reservado; --- = Sin implementar (se lee 0)
. Las celdas sombreadas no se
utilizan por SSP en modo SPI.
Nota 1: Estos bits se reservan en los dispositivos de 28 patillas; se deben mant
ener siempre a 0.
El módulo MSSP en modo I2C implementa las funciones de maestro y servidor (incluye
ndo el
soporte de la llamada general), y proporciona interrupciones por hardware en los
bits de start y
stop para determinar la disponibilidad del bus (función multi-master). El módulo MSS
P
implementa las especificaciones de modo estándar, así como direccionamiento de 7 bit
s y 10
bits.
Un filtro de transitorios está dispuesto en las patillas SCL y SDA cuando trabajan
como
entradas. Este filtro opera en el rango de 100 a 400 KHz. En modo 100 KHz, cuand
o estas
patillas están como salidas, hay un control sobre la velocidad de subida de la pat
illa que es
independiente de la frecuencia del dispositivo.
Dos patillas se usan para transferencia de datos. Son las patillas SCL, que actúa
como reloj, y la
patilla SDA, que es el dato. Estas patillas se configuran automáticamente cuando s
e habilita el
modo I2C. Las funciones del módulo SSP se
habilitan activando SSPEN (SSPCON<5>).
Antes de seleccionar cualquier modo I2C, las patillas SCL y SDA deben programars
e como
entradas, activando los bits apropiados del registro TRIS. Al seleccionar un mod
o I2C,
programando el bit SSPEN, se habilitan las patillas SCL y SDA para ser usadas co
mo líneas de
reloj y datos, respectivamente, en modo I2C.
El bit CKE (SSPSAT<6:7>) programa los niveles de las patillas SDA y SCL en los m
odos
maestro o servidor. Cuando CKE = 1, el nivel responderá a las especificaciones de
SMBUS;
cuando CKE = 0, los niveles responderán a las especificaciones de I2C.
El registro SSPSTAT contiene el estado de la transferencia. Esta información inclu
ye: la
detección de los bits de Start (S) o Stop (P), la especificación de si el byte recib
ido fue dato o
dirección, y si es esta última, si el próximo byte es el resto de la dirección de 10 bit
s, y, por
último, si habrá una lectura o escritura en la transferencia del dato.
SSPBUF es el registro donde se carga el dato a transferir, o donde está el dato re
cibido. Este
registro desplaza el dato hacia dentro o hacia fuera del dispositivo. En operaci
ones de recepción,
SSPBUF y SSPSR crean un doble buffer receptor. Esto permitirá la recepción del próximo
byte
antes de comenzar a leer el último byte recibido. Cuando se ha recibido el dato co
mpleto, se
transfiere al registro SSPBUF y el bit indicador SSPIF se activa. Si se recibe a
lgún otro byte
completo antes de leer el registro SSPBUF, se produce desbordamiento, y el bit S
SPOV
(SSPCON<6>) se activa para indicar que se perdió el byte primero cargado en SSPBUF
y no
leído.
El registro SSPADD mantiene la dirección del servidor. En modo de 10 bits de direc
ción, el
usuario necesita escribir el byte alto de la dirección (1111 0-A9-A8-0). A continu
ación, es
necesario cargar el byte bajo de la dirección (A7:A0).
9.2.1.1 DIRECCIONAMIENTO
Cada vez que el módulo MSSP ha sido habilitado, espera a que ocurra una condición de
arranque (Start). Seguidamente, se desplazan los 8 bits en el registro SSPSR. To
dos los bits
entrantes se capturan con el flanco de subida de la línea de reloj SCL. El valor d
el registro
SSPSR<7:1> se compara con el valor del registro SSPADD. La dirección se compara en
el
flanco de bajada del octavo pulso de reloj en SCL. Si la dirección se reconoce y l
os bits BF y
SSPOV están borrados, se suceden las siguientes operaciones:
a) El valor del registro SSPSR se carga en SSPBUF en el flanco de bajada del oct
avo pulso
de SCL.
b) El bit BF (buffer lleno) se activa en la bajada de reloj del octavo pulso en
SCL.
c) Se genera un pulso de reconocimiento .
d) El bit indicador de interrupción SSPIF (PIR1<3>) se activa en el flanco de baja
da del
noveno pulso en SCL. Se producirá interrupción, si estuviese habilitada.
En modo de dirección a 10 bits, se necesitan dos bytes para recibir la dirección por
el servidor.
Los cinco bits de mayor peso del primer byte de dirección, especifican si es una d
irección a 10
bits. El bit (SPSAT<2>) indicará una escritura sobre el dispositivo servidor que r
ecibirá
el segundo byte de dirección. Para una dirección de 10 bits, el primer byte debe ser
igual a
.1111 0-A9-A8-0., donde A9 y A8 son los dos bits de mayor peso de la dirección de
10 bits.
La secuencia de operaciones para una dirección a 10 bits es la siguiente, con los
pasos 7 a 9 para
servidor transmisor:
WR/
1. Recepción del primer byte (más peso) de la dirección (bits SSPIF, BF y UA
(SSPSTAT<1>) están activados).
2. Actualización del registro SSPADD con el segundo byte (menos peso) de la direcc
ión
(borra bit UA y libera la línea SCL).
3. Lectura del registro SSPBUF (borra bit BF) y borrado del bit indicador SSPIF.
4. Recepción el segundo byte (bajo) de la dirección (se activan los bits SSPIF, BF y
UA).
5. Actualiza del registro SSPADD con el primer byte (alto) de la dirección. Esto b
orrará el
bit UA y liberará la línea SCL.
6. Lectura del registro SSPBUF (borra bit BF) y borrado del bit SSPIF.
7. Recepción de la condición de Repetición de Arranque.
8. Recepción del primer byte (alto) de la dirección (se activan los bits SSPIF y BF)
.
9. Lectura del registro SSPBUF (se borra el bit BF) y borrado del bit indicador
SSPIF.
0
0
Sí
Sí
Sí
1
0
No
No
Sí
1
1
No
No
Sí
0
1
Sí
No
Sí
Nota 1: Las celdas sombreadas muestran las condiciones donde el software del usu
ario no realizó adecuadamente el
borrado de la condición de desbordamiento.
Aunque el dispositivo esté en modo SLEEP, el módulo I2C puede recibir datos o direcc
iones.
Cuando ocurra la transferencia de un byte completo, o dirección reconocida, se sac
a al
procesador del estado sleep (si está habilitada la interrupción SSP).
0Bh,
8Bh,
10Bh,
18Bh
INTCON
GIE
PEIE
T0IE
INTE
RBIE
T0IF
INTF
RBIF
0000 000x
0000 000u
0Ch
PIR1
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
0000 0000
0000 0000
8Ch
PIE1
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
0000 0000
0000 0000
0Dh
PIR2
---
(2)
---
EEIF
BCLIF
---
---
CCP2IF
-r-0 0--0
-r-0 0 0
8Dh
PIE2
---
(2)
---
EEIE
BCLIE
---
---
CCP2IE
-r-0 0--0
-r-0 0 0
13h
SSPBUF
Registro de recepción y transmisión del Puerto Serie Síncrono
xxxx xxxx
uuuu uuuu
14h
SSPCON
WCOL
SSPOV
SSPEN
CKP
SSPM3
SSPM2
SSPM1
SSPM0
0000 0000
0000 0000
91h
SSPCON2
GCEN
ACKSTAT
ACKDT
ACKEN
RCEN
PEN
RSEN
SEN
0000 0000
0000 0000
94h
SSPSTAT
SMP
CKE
D/-A
P
S
R/-W
UA
BF
0000 0000
0000 0000
x = Desconocido; u = Sin cambio; r = Reservado; --- = Sin implementar (se lee 0)
. Las celdas sombreadas no se
utilizan por SSP en modo I2C.
Nota 1: Estos bits se reservan en los dispositivos de 28 patillas; se deben mant
ener siempre a 0.
Nota2: Estos bits se reservan en estos dispositivos; se deben mantener a 0.
La operación del modo maestro está dirigida por la generación de interrupción en la dete
cción
de las condiciones de START y STOP. Los bits de STOP (P) y START (S) se borran c
on un
reset o cuando el módulo MSSP está inhibido. El control del bus I2C puede acometerse
cuando
el bit P está activado, o el bus está desconectado con el conjunto de los bits S y P
borrados.
En modo maestro, las líneas SCL y SDA son manipuladas por el hardware de MSSP.
Los siguientes acontecimientos provocarán la activación del bit SSPIF, indicador de
interrupción de SSP, si la interrupción SSP está habilitada:
.
Condición de START.
.
Condición de STOP.
.
Byte de transferencia de datos transmitido-recibido.
.
Transmisión de reconocimiento.
.
Repetición de arranque.
Nota: El módulo MSSP, cuando se configura en modo maestro I2C, no permite colas de
espera
de sucesos. Por ejemplo, el usuario no puede iniciar una condición de start e, inm
ediatamente,
escribir el registro SSPBUF para iniciar una transmisión antes de completar la con
dición start.
En este caso, el registro SSPBUF no debe escribirse hasta que el bit WCOL esté act
ivado. Éste
será el indicador de la escritura de SSPBUF.
9.2.7.1 OPERACIÓN EN MODO MAESTRO I2C
El dispositivo maestro genera toda una serie de impulsos de reloj y las condicio
nes de START y
STOP. Se finaliza una transferencia, con la condición de STOP o con la condición de
repetición
de Start. Como quiera que la condición de Repetición de Start es también el comienzo d
e la
próxima serie transferida, el bus I2C no se desconectará.
En modo Maestro Transmisor, el dato serie se saca por SDA, mientras que la salid
a de reloj
serie es SCL. El primer byte transmitido contiene la dirección del dispositivo rec
eptor servidor
(7 bits) y el bit de Lectura-Escritura (). En este caso, el bit será 0. El dato se
rie se
transmite en 8 bits en este instante. Después de transmitir cada byte, se recibe u
n bit de
reconocimiento. Se envían las condiciones de START y STOP para indicar el comienzo
y el
final de la serie transmitida.
En modo Maestro Receptor, el primer byte transmitido contiene la dirección del ser
vidor del
dispositivo transmisor (7 bits) y el bit . En este caso, este bit deberá tener val
or lógico 1.
Por esto, el primer byte transmitido es una dirección de servidor de 7 bits, segui
do de un .1.
que indica bit de recepción. El dato serie se recibe vía SDA, y el reloj serie, por
SCL. El dato
serie de 8 bits se recibe simultáneamente al reloj. Tras la recepción de cada byte,
se transmite un
bit de reconocimiento. Las condiciones START y STOP indican el inicio y el final
de la
transmisión.
El generador de velocidad de transmisión (generador de baudios) utilizado para ope
ración en
modo SPI, es ahora usado para programar la frecuencia de reloj de SCL, para 100
Khz., 400
Khz. o 1 Mhz , en operación I2C. El generador de baudios recarga el valor contenid
o en los 7
bits de menos peso del registro SSPADD. El generador de baudios comenzará,
automáticamente, contando con una escritura en SSPBUF. Una vez que la operación se
completa (p.e. transmisión del último bit de datos seguido por ACK), el reloj intern
o detiene
automáticamente la cuenta, y la patilla SCL permanece en su último estado.
Una secuencia típica de transmisión será así:
a) El usuario genera la Condición de Start activando el bit de habilitación de START
(SEN) en SSPCON2.
b) Se activa SSPIF. El módulo esperará el tiempo necesario de start antes de que se
produzca otra operación cualquiera.
c) El usuario carga SSPBUF con la dirección a transmitir.
d) La dirección se desplaza fuera de la patilla SDA hasta que son transmitidos los
8 bits.
e) El módulo MSSP da entrada al bit ACK proveniente del dispositivo servidor y esc
ribe
este valor en el registro SSPCON2 (SSPCON2<6>).
f) El módulo genera una interrupción, al final del noveno ciclo de reloj, activando
SSPIF.
g) El usuario carga el registro SSPBUF con los 8 bits de datos.
h) El dato se desplaza fuera de la patilla SDA hasta la transmisión completa de lo
s 8 bits.
i) El módulo MSSP da entrada al bit ACK, proveniente del dispositivo servidor, y e
scribe
este valor en el registro SSPCON2 (SSPCON2<6>).
j) El módulo genera una interrupción al final del noveno ciclo de reloj, activando S
SPIF.
k) El usuario genera una condición de STOP activando el bit de habilitación de STOP
(PEN) en el registro SSPCON2.
l) La interrupción se genera cada vez que se completa la condición de STOP.
En modo I2C, el valor de recarga para BRG se localiza en los 7 bits de menos pes
o del registro
SSPADD (Figura 9-10). Cuando se carga BRG con este valor, se inicia la cuenta at
rás de BRG
hasta llegar a 0. En este momento, el contaje se detiene hasta que tiene lugar u
na nueva recarga.
El contador BRG se decrementa dos veces por ciclo de instrucción (TCY), en los rel
ojes Q2 y
Q4.
En modo I2C, el contador BRG se recarga automáticamente. Si se produce arbitraje d
e reloj, por
ejemplo, el BRG se recargará cuando la patilla SCL se vea en alto (Figura 9-11).
Para iniciar una condición START, se activará el bit SEN, que habilita la condición de
start,
registro SSPCON2<0>. Si las patillas SDA y SCL están en nivel alto, el generador d
e baudios
se recarga con el contenido de SSPADD<6:0> y se inicia el contaje. Si el grupo S
CL y SDA
están en 1 cuando el generador de baudios termina (TBRG), la patilla SDA se pone a
0. La acción
de SDA, siendo puesta a 0 cuando SCL está a 1, es la condición de START, y hace que
el bit S
se active (SSPSTAT<3> = 1). Después de esto, el generador de baudios se recarga co
n el
contenido del registro SSPADD<6:0> y continúa su contaje decremental. Cuando el ge
nerador
termina la cuenta (TBRG), el bit SEN (SSPCON2<0>) se borrará automáticamente por el
hardware. El generador de baudios se detiene, dejando la línea SDA a nivel bajo y
completando
la condición de START.
Nota: Si al comienzo de la condición de START, las patillas SDA y SCL estaban ya e
n 0, o si
durante la condición de START la línea SCL se ve baja antes que la línea SDA, ocurre u
n
conflicto de bus. En este caso, se activa el indicador de conflicto de bus BCLIF
, se suspende la
condición de START, y el módulo I2C se inicializa en su estado IDLE.
9.2.9.1 INDICADOR DE ESTADO WCOL
.
Se detecta en bajo SDA cuando SCL pasa de cero a uno.
.
SCL pasa a cero antes que SDA se estabilice en ese valor. Esto puede indicar que
otro
maestro está intentando transmitir un dato .1..
Si el usuario escribe el SSPBUF cuando una transmisión todavía está en desarrollo (aún s
e está
sacando un byte de datos), WCOL se activa y el contenido del buffer no variará (no
se produce
escritura). WCOL debe borrarse por software.
Si el usuario escribe SSPBUF cuando una recepción está desarrollándose, WCOL se activa
y el
contenido del buffer no cambia (no se realiza la escritura).
9.2.13 OSCILOGRAMA DE LA SECUENCIA DE RECONOCIMIENTO
Para habilitar una secuencia de reconocimiento hay que activar el bit ACKEN (SSP
CON2<4>),
de habilitación de la secuencia. Cuando este bit está activado, la patilla SCL se co
loca a nivel
bajo y el contenido del bit de reconocimiento de dato aparece en la patilla SDA.
Si el usuario
desea generar un reconocimiento, el bit ACKDT debe borrarse; si no, se activará el
bit ACKDT
antes del inicio de la secuencia de reconocimiento. El generador de baudios desa
rrollará una
pasada, y la patilla SCL se libera (polarizada alta). Cuando la patilla SCL se e
scruta en alto, el
generador de baudios cuenta una vuelta (TBRG). La patilla SCL es ahora llevada a
nivel bajo. A
continuación, el bit ACKEN se borra automáticamente, el generador de baudios se desc
onecta y
el módulo SSP va al modo desconectado (Figura 9-16).
El arbitraje del reloj sucede cuando el maestro, durante una recepción, transmite,
o repite
condición de start-stop, liberando la patilla SCL (SCL queda en estado flotante).
En este
momento el generador de baudios (BRG) se suspende de contaje hasta que la patill
a SCL se vea
realmente a nivel alto. Cuando esto suceda, el BRG se recarga con el contenido d
e
SSPADD<6:0> y comienza el contaje. Esto asegurará que el tiempo en alto de SCL será,
al
menos, una vuelta de contaje de BRG, en el caso de que el reloj se fuerce a nive
l bajo por un
dispositivo externo (Figura 9-18).
9.2.16 OPERACIÓN SLEEP (ALERTA)
Mientras se está en modo sleep, el módulo I2C puede recibir direcciones o datos, y c
uando
coincida la dirección o se complete una transferencia de byte, se saca al procesad
or del estado
sleep (si la interrupción SSP está habilitada).
Cuando el usuario deja la patilla SDA y ésta queda flotante, el generador de baudi
os se carga
con SSPADD<6:0> y comienza la cuenta a cero. La patilla SCL se libera entonces,
y cuando se
observa en alto, la patilla SDA se memoriza. Si SDA es 0, ha ocurrido un conflic
to de bus (por
ejemplo, que otro maestro esté intentando transmitir un .0.). Si, por otra parte,
SDA se lee en 1,
el generador de baudios se recarga y comienza el contaje. Si SDA transita de alt
o a bajo antes
que el BRG termine su cuenta, no existirá conflicto de bus, porque no hay dos maes
tros
accediendo a SDA al mismo tiempo.
Sin embargo, si SCL cambia de alto a bajo antes que el BRG termine su cuenta, y
SDA no está
estable, sucede un conflicto de bus. En cuyo caso, otro maestro está intentando tr
ansmitir un 1
durante la condición de Repetición de Start.
Si al final del tiempo de BRG, el conjunto SDA y SCL están todavía en alto, la patil
la SDA se
pone a 0 y el BRG se recarga y comienza su cuenta. Al final de ésta, independiente
mente del
estado de la patilla SCL, ésta se pone a 0 y se completa la condición de Repetición de
Start
(Figura 9-23).
9.2.18.3 CONFLICTO DE BUS DURANTE UNA CONDICIÓN DE STOP
La condición de STOP comienza fijando un 0 en SDA. Cuando ésta se lea en este valor,
la
patilla SCL se deja flotante. Si esta patilla de observa en 1 (arbitraje de relo
j), el BRG se carga
con SSPADD<6:0> y comienza el contaje. Al finalizar éste, se memoriza el valor de
SDA. Si
estuviese en 0, un conflicto de bus ha tenido lugar. Esto habrá sucedido porque ot
ro maestro
intenta enviar un 0. Si SCL se lee como 0 antes de que SDA quede flotante, no ha
y conflicto de
bus. Este es el caso de que otro maestro intente enviar un 0 (Figura 9-25).
9.3 Consideraciones de conexión del bus I2C
Para dispositivos de modo estándar del bus I2C, los valores de resistores Rp y Rs,
en la Figura
9-27, dependen de los siguientes parámetros:
.
Tensión de alimentación.
.
Capacidad del bus.
.
Número de dispositivos conectados (corriente de entrada + corriente de fuga).
La tensión de alimentación limita el mínimo valor del resistor Rp, debido al mínimo valo
r
especificado de corriente de carga de 3 mA, para una tensión de salida especificad
a de VOL máx =
0,4V. Por ejemplo, con una tensión de alimentación de VDD = 5V +/- 10%, y una VOL máx
= 0,4V
para 3 mA,
VDD en función de Rp se muestra en la Figura 9-27. El margen de ruido deseado de 0
,1 VDD
para el nivel bajo, limita el máximo valor de Rs. Opcionalmente se pueden agrupar
en serie
resistores para mejorar la susceptibilidad a las descargas electrostáticas (ESD).
La capacidad del bus es la capacidad total del cableado, conectores y patillas.
Esta capacidad
limita el valor máximo de Rp, debido al tiempo especificado de subida (Figura 9-27
).
El bit SMP es el habilitador del control del tiempo de subida. Este bit está en el
registro
SSPSTAT, y controla la velocidad de subida en las patillas de entrada-salida cua
ndo se trabaja
en modo I2C (maestro o servidor).
KRpmín7,1003,0)4,05,5(
10.0 TRANSMISOR RECEPTOR ASÍNCRONO SÍNCRONO UNIVERSAL (USART)
El módulo USART es uno de los dos módulos de E-S serie. (La USART es también conocida
como Interface de Comunicaciones Serie (SCI).) La USART puede configurarse como
sistema
asíncrono .full duplex., que puede comunicarse con dispositivos periféricos como ter
minales
CRT y ordenadores personales, o puede configurarse como sistema síncrono .half dup
lex., que
puede comunicarse con periféricos tales como circuitos integrados convertidores A/
D y D/A,
EEPROMs serie, etc.
La USART puede configurarse en los siguientes modos:
.
Asíncrono (full duplex).
.
Síncrono-maestro (half duplex).
.
Síncrono-servidor (half duplex).
El bit SPEN (RCSTA<7>) y los bits TRISC<7:6>) deben ser programados, en ese orde
n, para
configurar las patillas RC6/TX/CK y RC7/RX/DT como USART.
El módulo USART tiene, también, un multiprocesador de comunicación capaz de usar y
detectar 9 bits de dirección.
CSRC
TX9
TXEN
SYNC
---
BRGH
TRMT
TX9D
R = De lectura
W = De escritura
U = Sin implementar. Da 0 en
lectura
-n = Valor del reset POR
bit7
bit0
bit 7:
CSRC: Bit de selección de origen de reloj.
Modo Asíncrono
Indiferente.
Modo Síncrono
1 = Modo Maestro (reloj interno procedente de BRG).
bit 6:
TX9: Bit de habilitación de transmisión con 9 bits.
bit 5:
TXEN: Bit de habilitación de transmisión.
1 = Transmisión habilitada.
0 = Transmisión inhibida.
bit 4:
SYNC: Bit de selección de modo USART.
1 = Modo Síncrono.
0 = Modo Asíncrono.
bit 3:
Sin implementar: Se lee como 0.
bit 2:
BRGH: Bit de selección de velocidad de baudios.
Modo Asíncrono
1 = Alta velocidad.
0 = Baja velocidad.
Modo Síncrono
bit 1:
TRMT: Bit de estado del registro de desplazamiento de transmisión.
1 = TSR vacío.
0 = TSR lleno.
bit 0:
TX9D: Noveno bit del dato transmitido. Puede ser el bit de paridad.
REGISTRO 10-2: RCSTA: REGISTRO DE CONTROL Y ESTADO DE RECEPCIÓN
(DIRECCIÓN 18h)
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R-0
R-0
R-x
SPEN
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
R = De lectura
W = De escritura
U = Sin implementar. Da 0 en lectura
-n = Valor del reset POR
bit7
bit0
bit 7:
SPEN: Bit de habilitación de puerto serie.
bit 5:
SREN: Bit de habilitación de recepción simple.
Modo Asíncrono
Irrelevante.
Modo Asíncrono
Modo Síncrono
RSR<8> = 1
paridad
bit 2:
FERR: Bit de error por inconcordancia (framing).
0 = No existe error.
bit 1:
OERR: Bit de error por desbordamiento.
bit 0:
RX9D: Noveno bit del dato recibido. Puede ser el bit de paridad.
10.1 Generador de baudios (BRG) de la USART
El BRG sirve a los modos síncrono y asíncrono de la USART. Es un contador de 8 bits,
especializado en generar la velocidad de circulación de los bits salientes o entra
ntes. El registro
SPBRG controla el período del temporizador independiente de 8 bits. En modo asíncron
o, el bit
BRGH (TXSTA<2>) es el encargado de controlar la velocidad; en modo síncrono, este
bit se
ignora. La tabla 10-1 muestra la fórmula para el cálculo de la velocidad de los baud
ios para
diferentes modos de la USART, solamente aplicada en modo maestro (reloj interno)
.
Elegidos una velocidad y Fosc dadas, el valor entero más próximo para SPBRG puede
calcularse usando la fórmula en la tabla 10-1, pudiendo, además, determinarse el val
or del error
de velocidad existente para ese valor obtenido.
Será interesante el uso de alta velocidad (BRGH = 1), aun para menores valores de
reloj. Esto
es así porque la ecuación Fosc / [16 (X + 1)] puede reducir el error de velocidad en c
iertos
casos.
Escribir un nuevo valor en el registro SPBRG provoca el borrado del temporizador
BRG. Esto
asegurará que el BRG no espere al final del tiempo antes de sacar una nueva veloci
dad.
10.1.1 CAPTURA
El dato en la patilla RC7/RX/DT se captura tres veces por un circuito detector d
e mayoría, que
determina el valor alto o bajo del dato presente en la patilla RX.
0
Velocidad (Asíncrono) = Fosc / [64 (X + 1)]
Velocidad = Fosc / [16 (X + 1)]
1
Velocidad (Síncrono) = Fosc / [4 (X + 1)]
No utilizado
X = valor en SPBRG (0 a 255)
TABLA 10-3: BAUDIOS EN MODO ASÍNCRONO (BRG = 0)
BAUD
(K)
Fosc = 20 Mhz
Fosc = 16 Mhz
Fosc = 10 Mhz
KBAUD
%
ERROR
Valor
decimal
SPBRG
KBAUD
%
ERROR
Valor
decimal
SPBRG
KBAUD
%
ERROR
Valor
decimal
SPBRG
0,3
---
---
---
---
---
---
---
---
---
1,2
1,221
1,75
255
1,202
0,17
207
1,202
0,17
129
2,4
2,404
0,17
129
2,404
0,17
103
2,404
0,17
64
9,6
9,766
1,73
31
9,615
0,16
25
9,766
1,73
15
19,2
19,531
1,72
15
19,231
0,16
12
19,531
1,72
7
28,8
31,250
8,51
9
27,778
3,55
8
31,250
8,51
4
33,6
34,722
3,34
8
35,714
6,29
6
31,250
6,99
4
57,6
62,500
8,51
4
62,500
8,51
3
52,083
9,58
2
ALTA
1,221
---
255
0,977
---
255
0,610
---
255
BAJA
312,500
---
0
250,000
---
0
156,250
---
0
BAUD
(K)
Fosc = 4 Mhz
Fosc = 3,6864 Mhz
KBAUD
%
ERROR
Valor
decimal
SPBRG
KBAUD
%
ERROR
Valor
decimal
SPBRG
0,3
0,300
0
207
0,301
0,33
185
1,2
1,202
0,17
51
1,216
1,33
46
2,4
2,404
0,17
25
2,432
1,33
22
9,6
8,929
6,99
6
9,322
2,90
5
19,2
20,833
8,51
2
18,643
2,90
2
28,8
31,250
8,51
1
---
---
---
33,6
---
---
---
---
---
---
57,6
62,500
8,51
0
55,930
2,90
0
ALTA
0,244
---
255
0,218
---
255
BAJA
62,500
---
0
55,930
---
0
TABLA 10-4: BAUDIOS EN MODO ASÍNCRONO (BRG = 1)
BAUD
(K)
Fosc = 20 Mhz
Fosc = 16 Mhz
Fosc = 10 Mhz
KBAUD
%
ERROR
Valor
decimal
SPBRG
KBAUD
%
ERROR
Valor
decimal
SPBRG
KBAUD
%
ERROR
Valor
decimal
SPBRG
0,3
---
---
---
---
---
---
---
---
---
1,2
---
---
---
---
---
---
---
---
---
2,4
---
---
---
---
---
---
2,441
1,71
255
9,6
9,615
0,16
129
9,615
0,16
103
9,615
0,16
64
19,2
19,231
0,16
64
19,231
0,16
51
19,531
1,72
31
28,8
29,070
0,94
42
29,412
2,13
33
28,409
1,36
21
33,6
33,784
0,55
36
33,333
0,79
29
32,895
2,10
18
57,6
59,524
3,34
20
58,824
2,13
16
56,818
1,36
10
ALTA
4,883
---
255
3,906
---
255
2,441
---
255
BAJA
1250,000
---
0
1000,000
---
0
625,000
---
0
BAUD
(K)
Fosc = 4 Mhz
Fosc = 3,6864 Mhz
KBAUD
%
ERROR
Valor
decimal
SPBRG
KBAUD
%
ERROR
Valor
decimal
SPBRG
0,3
---
---
---
---
---
---
1,2
1,202
0,17
207
1,203
0,25
185
2,4
2,404
0,17
103
2,406
0,25
92
9,6
9,615
0,16
25
9,727
1,32
22
19,2
19,231
0,16
12
18,643
2,90
11
28,8
27,798
3,55
8
27,965
2,90
7
33,6
35,714
6,29
6
31,960
4,88
6
57,6
62,500
8,51
3
55,930
2,90
3
ALTA
0,977
---
255
0,874
---
255
BAJA
250,000
---
0
273,722
---
0
10.2 USART en modo Asíncrono
En este modo, la USART emplea el formato estándar .no retorno a cero. (NRZ) (un bi
t de start,
ocho o nueve bits de datos y un bit de stop). El formato más común de datos es el de
8 bits. Se
utilizará un contador especializado, llamado generador de baudios, para obtener la
s frecuencias
del oscilador. La USART transmite y recibe, en primer lugar, el bit menos signif
icativo (LSb).
Los bloques transmisor y receptor de la USART son funcionalmente independientes,
pero usan
el mismo formato de datos y la misma velocidad de transferencia. El generador de
baudios
produce una señal de reloj cada x16 o x64 de la velocidad de desplazamiento de bit
,
dependiendo del bit BRGH (TXSTA<2>). La paridad no está soportada por el hardware,
pero
puede implementarse por software (y almacenarse como el noveno bit del dato). El
modo
Asíncrono se para durante el estado SLEEP, y se selecciona borrando el bit llamado
SYNC
(TXSTA<4>).
El módulo Asíncrono USART consta de los siguientes elementos importantes:
.
Generador de velocidad de baudios (generador de baudios o BRG).
.
Circuito de captura.
.
Transmisor asíncrono.
.
Receptor asíncrono.
OCh
PIR1
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
0000 0000
0000 0000
18h
RCSTA
SPEN
RX9
SREN
CREN
---
FERR
OERR
RX9D
0000 -00x
0000 -00x
1Ah
RCREG
Registro Receptor USART
0000 0000
0000 0000
8Ch
PIE1
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
0000 0000
0000 0000
98h
TXSTA
CSRC
TX9
TXEN
SYNC
---
BRGH
TRMT
TX9D
0000 -010
0000 -010
99h
SPBRG
Registro Generador de Baudios
0000 0000
0000 0000
x = Desconocido; --- = Sin implementar (se lee 0). Las celdas sombreadas no se u
tilizan en recepción asíncrona.
Nota 1: Los bits PSPIE y PSPIF se reservan en los PIC16F873/876; siempre han de
mantenerse a cero.
10.2.3 PROGRAMACIÓN DE MODO 9 BITS CON DETECCIÓN DE DIRECCIÓN
El .
C puede trabajar con varios servidores conectados a la misma línea serie. La forma
de
seleccionar a uno cualquiera es por el envío de un byte, que será interpretado por e
l servidor
como una dirección identificativa debido a que en el envío de esta dirección el noveno
bit estará
a 1. Así pues, los receptores deberán programarse inicialmente con recepción de 9 bits
y
detección de dirección. Esto pondrá a 1 los bits RX9 y ADDEN de la figura 10.6. Cuando
llegue
un byte en serie, si el bit noveno (RSR<8> de la figura 10.6) es 1, debido a la
acción de la
puerta AND-3, el byte recibido en RSR se transferirá al registro RCREG. Esto provo
cará la
interrupción de recepción (si estuviese habilitada) y el software del receptor mirará
el registro
RCSTA para ver si ha habido error y si el noveno bit es 1. Si es así, el byte reci
bido se interpreta
como el código de una dirección, y se comparará con el código intrínseco de ese receptor.
Si
hay coincidencia, se borrará ADDEN para que los próximos bytes enviados a él puedan ll
egar
hasta RCREG por la puerta OR de ceros (ya que ahora el noveno bit enviado por el
maestro será
un 0, indicativo de byte de datos). A partir de este momento, cada llegada de by
te supondrá una
interrupción para el receptor, que se limitará a tomar los datos enviados.
Como a cada recepción el software receptor comprobará el nivel de RSR<8>, cuando éste
sea 1
(porque el transmisor desea enviar dirección), el receptor comprobará que el byte re
cibido
corresponde o no a su dirección intrínseca. Si la dirección recibida es la suya, todo
seguirá igual
y el receptor tomará los bytes enviados. Si al comprobar el byte de dirección ésta no
coincidiese
con la suya, el receptor sabe que los próximos envíos de datos no van a ser para él. P
ondrá su bit
ADDEN a 1 para impedir que se carguen en su RCREG bytes de datos que no son para
él y, de
esta forma, se impide que se le interrumpa en cada dato recibido. (Obsérvese que s
i ponemos a 1
el bit ADDEN la puerta OR de ceros dará 0 de salida pero la NAND-3 puede dar 1, y
con ello
permitir la entrada del byte a RCREG cuando se reciba un byte de dirección, que te
ndrá
RSR<8> a 1.) Con todo lo explicado se comprende que ahora, el receptor, solament
e cargará un
byte en RCREG cuando aquél lleve el noveno bit a 1. Cuando esto ocurra, de nuevo s
e
comprobará el byte identificativo de dirección para ver si vuelve a ser seleccionado
.
Cuando se programe Recepción Asíncrona con Habilitación de Detección de Dirección,
respétense los siguientes pasos:
1. Inicializar el registro SPBRG con la apropiada cadencia. Si se desea alta vel
ocidad,
poner a 1 el bit BRGH. (Sección 10.1).
2. Habilitar el puerto serie asíncrono, borrando el bit SYNC y activando el bit SP
EN.
3. Si se desea interrupción, activar el bit RCIE.
4. Si se desea recepción de 9 bits, activar RX9.
5. Activar ADDEN para habilitar la detección de la dirección.
6. Habilitar la recepción, activando el bit CREN.
7. El indicador RCIF se activará cuando se complete la recepción. Esto generará una
interrupción, si está activado el bit RCIE.
8. Leer el registro RCSTA para obtener el valor del noveno bit y determinar si h
a existido
error durante la recepción.
9. Leer los 8 bits del dato recibido, leyendo el registro RCREG. Esto permitirá sa
ber si el
dispositivo está siendo direccionado.
10. Si ha ocurrido algún error, cancelarlo, borrando el bit de habilitación CREN.
11. Si el dispositivo ha sido direccionado, borrar el bit ADDEN para permitir qu
e sean
leídos los bytes de dato y dirección en el buffer receptor, e interrumpir a la CPU.
TABLA 10-7: REGISTROS ASOCIADOS A LA RECEPCIÓN ASÍNCRONA
Dir.
Nombre
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
Valor tras
POR, BOR
Valor tras
otros resets
OCh
PIR1
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
0000 0000
0000 0000
18h
RCSTA
SPEN
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
0000 000x
0000 000x
1Ah
RCREG
Registro Receptor USART
0000 0000
0000 0000
8Ch
PIE1
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
0000 0000
0000 0000
98h
TXSTA
CSRC
TX9
TXEN
SYNC
---
BRGH
TRMT
TX9D
0000 -010
0000 -010
99h
SPBRG
Registro Generador de Baudios
0000 0000
0000 0000
x = Desconocido; --- = Sin implementar (se lee 0). Las celdas sombreadas no se u
tilizan en recepción asíncrona.
Nota 1: Los bits PSPIE y PSPIF se reservan en los PIC16F873/876; siempre han de
mantenerse a cero.
10.3 USART en modo Maestro Síncrono
OCh
PIR1
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
0000 0000
0000 0000
18h
RCSTA
SPEN
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
0000 -00x
0000 -00x
19h
TXREG
Registro Transmisor USART
0000 0000
0000 0000
8Ch
PIE1
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
0000 0000
0000 0000
98h
TXSTA
CSRC
TX9
TXEN
SYNC
---
BRGH
TRMT
TX9D
0000 -010
0000 -010
99h
SPBRG
Registro Generador de Baudios
0000 0000
0000 0000
x = Desconocido; - = Sin implementar (se lee 0). Las celdas sombreadas no se uti
lizan en recepción asíncrona.
Nota 1: Los bits PSPIE y PSPIF se reservan en los dispositivos de 28 patillas; s
iempre han de mantenerse a cero.
10.3.2 USART MAESTRO EN RECEPCIÓN SÍNCRONA
Una vez seleccionado el modo síncrono, la recepción se habilita programado cualquier
a de los
dos bits SREN (RCSTA<5>) o CREN (RCST<4>). El dato se captura en la patilla RC7/
RX/DT
en el flanco de bajada del reloj. Si está activado el bit SEN, solamente se recibi
rá una palabra; si
está habilitado el bit CREN, la recepción será continua hasta el borrado de CREN. Si s
e han de
activar ambos bits, el primero en hacerlo será CREN. Después de la entrada del último
bit, el
dato recibido en el registro receptor RSR se transferirá al registro RCREG (si está
vacío).
Cuando se complete la transferencia, se activará el indicador de interrupción RCIF (
PIR1<5>).
La interrupción actual puede habilitarse o inhibirse, activando o borrando, respec
tivamente, el
bit RCIE (PIE1<5>). El indicador RCIF es sólo de lectura, y se borrará por hardware
cuando se
lea el registro RCREG y éste quede vacío. El registro RCREG es de doble buffer (una
FIFO de
dos posiciones). Por esto es posible, simultáneamente, cargar RCREG desde la CPU,
transferir a
RCREG desde el RSR, y comenzar a desplazar en RSR desde la patilla RX. Al detect
ar el bit de
STOP que entra por la patilla RX, si el registro RCREG está todavía lleno, se activa
rá el bit de
error por desbordamiento OERR (RCSTA<1>). En este caso, la palabra existente en
RSR se
perderá. El registro RCREG puede leerse dos veces seguidas para recuperar los dos
bytes de la
FIFO. El bit OERR se borrará por software borrando CREN. Si el bit OERR está en 1, s
e inhibe
la transferencia desde el registro RSR hasta el registro RCREG, por lo que es vi
tal borrar el bit
OERR, si estuviese activado. El noveno bit recibido se memoriza en el mismo latc
h que el dato
recibido. Leyendo RCREG se cargará el bit RX9D con el nuevo valor, por consiguient
e, es
esencial para el usuario leer el registro RCSTA, antes de leer el registro RCREG
, para no perder
la información en RX9D.
Los pasos a seguir cuando se programe Maestro en Recepción Síncrona, son:
1. Inicializar el registro SPBRG con la apropiada cadencia. (Sección 10.1).
2. Habilitar el puerto serie maestro síncrono programando los bits SYNC, SPEN y CS
RC.
3. Asegurar el borrado de los bits CREN y SREN.
4. Si se desea interrupción, activar el bit RCIE.
5. Si se desea recepción de 9 bits, activar RX9.
6. Si se desea una recepción, activar el bit SREN; para recepción continua, activar
CREN.
7. El indicador RCIF se activará cuando se complete la recepción. Esto generará una
interrupción, si está activado el bit RCIE.
8. Leer el registro RCSTA para tener el valor del noveno bit (si está habilitado e
l modo) y
determinar si ha existido error durante la recepción.
9. Leer los 8 bits del dato recibido, leyendo el registro RCREG.
10. Si ha ocurrido algún error, cancelarlo borrando el bit de habilitación CREN.
TABLA 10-9: REGISTROS ASOCIADOS AL MAESTRO EN RECEPCIÓN SÍNCRONA
Dir.
Nombre
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
Valor tras
POR,
BOR
Valor tras
otros
resets
OCh
PIR1
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
0000 0000
0000 0000
18h
RCSTA
SPEN
RX9
SREN
CREN
---
FERR
OERR
RX9D
0000 -00x
0000 -00x
1Ah
RCREG
Registro Receptor USART
0000 0000
0000 0000
8Ch
PIE1
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
0000 0000
0000 0000
98h
TXSTA
CSRC
TX9
TXEN
SYNC
---
BRGH
TRMT
TX9D
0000 -010
0000 -010
99h
SPBRG
Registro Generador de Baudios
0000 0000
0000 0000
x = Desconocido; --- = Sin implementar (se lee 0). Las celdas sombreadas no se u
tilizan en recepción asíncrona.
Nota 1: Los bits PSPIE y PSPIF se reservan en los dispositivos de 28 patillas; s
iempre han de mantenerse a cero.
10.4 USART SERVIDOR EN MODO SÍNCRONO
El modo Servidor Síncrono difiere del modo Maestro en el hecho de que el reloj se
suministra
externamente a la patilla RC6/TX/CK. Esto permite al dispositivo transferir o re
cibir datos,
incluso en el estado SLEEP. Se entra en modo servidor, borrando el bit CSRC (TXS
TA<7>).
Los pasos a seguir para programar una Transmisión Síncrona como Servidor, son:
1. Habilitar el puerto serie síncrono servidor, activando los bits SYNC y SPEN, y
borrando CSRC.
2. Borrar los bits CREN y SREN.
3. Si se desea interrupción, activar el bit de habilitación TXIE.
4. Si se desea transmisión con 9 bits, activar el bit TX9.
5. Habilitar la transmisión, activando el bit TXEN.
6. Si se ha seleccionado 9 bits, el noveno bit se cargará en TX9D.
7. La transmisión comienza cargando el dato en el registro TXREG.
10.4.2 USART EN RECEPCIÓN SÍNCRONA COMO SERVIDOR
La operación como maestro y servidor síncronos es idéntica, excepto en el caso del mod
o
SLEEP. En modo servidor, el bit SREN es indiferente.
Si está habilitada la recepción, porque se activó el bit CREN antes de la instrucción SL
EEP,
podrá recibirse una palabra aunque esté en estado SLEEP. A la completa recepción de es
ta
palabra, el registro RSR transferirá el dato en su poder al registro RCREG, y, si
el bit de
habilitación de interrupción RCIE está activado, la interrupción generada sacará al dispos
itivo
del estado SLEEP. Si las interrupciones globales están habilitadas, el programa sa
ltará al vector
de interrupción 0004h.
Los pasos a seguir para programar una Recepción Síncrona como Servidor, son:
1. Habilitar el puerto serie síncrono servidor, activando los bits SYNC y SPEN, y
borrando CSRC.
2. Si se desea interrupción, activar el bit de habilitación RCIE.
3. Si se desea recepción con 9 bits, activar el bit RX9.
4. Habilitar la recepción, activando el bit CREN.
5. El indicador RCIF se activará cuando se complete una recepción. Se generará una
interrupción, si el bit RCIE se activó en su momento.
6. Leer el registro RCSTA para obtener el noveno bit (si se programó 9 bits) y det
erminar
si ha habido error durante la recepción.
7. Leer los 8 bits de datos, efectuando la lectura del registro RCREG.
8. Si hubiese algún error, borrar éste escribiendo 0 en CREN.
OCh
PIR1
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
0000 0000
0000 0000
18h
RCSTA
SPEN
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
0000 000x
0000 000x
19h
TXREG
Registro Transmisor USART
0000 0000
0000 0000
8Ch
PIE1
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
0000 0000
0000 0000
98h
TXSTA
CSRC
TX9
TXEN
SYNC
---
BRGH
TRMT
TX9D
0000 -010
0000 -010
99h
SPBRG
Registro Generador de Baudios
0000 0000
0000 0000
x = Desconocido; --- = Sin implementar (se lee 0). Las celdas sombreadas no se u
tilizan en recepción asíncrona.
Nota 1: Los bits PSPIE y PSPIF se reservan en los dispositivos de 28 patillas; s
iempre han de mantenerse a cero.
11.0 MÓDULO CONVERTIDOR ANALÓGICO-DIGITAL (CAD)
El módulo CAD posee cinco entradas para dispositivos de 28 patillas, y ocho para e
l resto de
dispositivos.
La entrada analógica carga un condensador de muestreo y retención. La salida de este
circuito
de muestreo y retención es la entrada al convertidor. Éste, genera un resultado bina
rio, función
del nivel analógico presente en la entrada, por medio de un CAD tipo aproximacione
s sucesivas.
La conversión digital es un número de 10 bits. El módulo CAD posee entrada de referenc
ia de
tensión baja y alta, que el software seleccionará en combinación con VDD, VSS, RA2 o R
A3.
El CAD posee una característica única: está hábil para operar, incluso en el modo SLEEP.
Para
trabajar en sleep, el reloj del CAD debe derivarse hacia el oscilador RC interno
, expresamente
diseñado para él.
El módulo CAD posee cuatro registros, que son:
TABLA 10-11: REGISTROS ASOCIADOS AL SERVIDOR EN RECEPCIÓN SÍNCRONA
Dir.
Nombre
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
Valor tras
POR, BOR
Valor tras
otros resets
OCh
PIR1
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
0000 0000
0000 0000
18h
RCSTA
SPEN
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
0000 000x
0000 000x
1Ah
RCREG
Registro Receptor USART
0000 0000
0000 0000
8Ch
PIE1
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
0000 0000
0000 0000
98h
TXSTA
CSRC
TX9
TXEN
SYNC
---
BRGH
TRMT
TX9D
0000 -010
0000 -010
99h
SPBRG
Registro Generador de Baudios
0000 0000
0000 0000
x = Desconocido; --- = Sin implementar (se lee 0). Las celdas sombreadas no se u
tilizan en recepción asíncrona.
Nota 1: Los bits PSPIE y PSPIF se reservan en los dispositivos de 28 patillas; s
iempre han de mantenerse a cero.
.
Registro Alto del Resultado A/D (ADRESH).
.
Registro Bajo del Resultado A/D (ADRESL).
.
Registro 0 de Control A/D (ADCON0).
.
Registro 1 de Control A/D (ADCON1).
El registro ADCON0, mostrado el REGISTER 11-1, controla la operación del módulo A/D.
El
registro ADCON1, mostrado en REGISTER 11-2, configura la función de las patillas d
e los
puertos. Éstas, pueden configurarse como entradas analógicas (RA3 también puede ser la
tensión de referencia) o como entradas-salidas digitales.
REGISTRO 11-1: REGISTRO ADCON0 (DIRECCIÓN 1Fh)
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
U-0
R/W-0
ADCS1
ADCS0
CHS2
CHS1
CHS0
GO/-DONE
---
ADON
R = De lectura
W = De escritura
U = Sin implementar. Da 0 en lectura
-n = Valor del reset POR
bit7
bit0
Los registros ADRESH:ADRESL contienen los 10 bits del resultado de la conversión A
/D.
Cuando ésta se completa, el resultado binario se carga en esta pareja de registros
del resultado,
el bit (ADCON0<2>) se borra, y el bit indicador de interrupción ADIF se activa.
El diagrama de bloques del módulo A/D se muestra en la Figura 11-1.
DONEGO/
REGISTRO 11-2: REGISTRO ADCON1 (DIRECCIÓN 9Fh)
R/W-0
U-0
U-0
U-0
R/W-0
R/W-0
R/W-0
R/W-0
ADFM
---
---
---
PCFG3
PCFG2
PCFG1
PCFG0
R = De lectura
W = De escritura
U = Sin implementar. Da 0 en lectura
-n = Valor del reset POR
bit7
bit0
bit 7:
ADFM: Bit de selección de formato de resultado A/D.
bit 6-4:
Sin implementar: Se lee como 0.
bit 3-0:
PCFG3:PCFG0: Bits de control de configuración de puerto A/D.
PCFG3:
PCFG0
AN7(1)
RE2
AN6(1)
RE1
AN5(1)
RE0
AN4
RA5
AN3
RA3
AN2
RA2
AN1
RA1
AN0
RA0
VREF+
VREF-
CHAN /
Rets(2)
0000
A
A
A
A
A
A
A
A
VDD
VSS
8/0
0001
A
A
A
A
VREF+
A
A
A
RA3
VSS
7/1
0010
D
D
D
A
A
A
A
A
VDD
VSS
5/0
0011
D
D
D
A
VREF+
A
A
A
RA3
VSS
4/1
0100
D
D
D
D
A
D
A
A
VDD
VSS
3/0
0101
D
D
D
D
VREF+
D
A
A
RA3
VSS
2/1
011x
D
D
D
D
D
D
D
D
VDD
VSS
0/0
1000
A
A
A
A
VREF+
VREF-
A
A
RA3
RA2
6/2
1001
D
D
A
A
A
A
A
A
VDD
VSS
6/0
1010
D
D
A
A
VREF+
A
A
A
RA3
VSS
5/1
1011
D
D
A
A
VREF+
VREF-
A
A
RA3
RA2
4/2
1100
D
D
D
A
VREF+
VREF-
A
A
RA3
RA2
3/2
1101
D
D
D
D
VREF+
VREF-
A
A
RA3
RA2
2/2
1110
D
D
D
D
D
D
D
A
VDD
VSS
1/0
1111
D
D
D
D
VREF+
VREF-
D
D
RA3
RA2
1/2
A = Entrada analógica.
D = Entrada-salida digital.
Nota 1: Estos canales no están disponibles en los dispositivos de 28 patillas.
Nota 2: Esta columna indica el número de canales analógicos disponibles como entrada
s A/D, y el número de
canales analógicos utilizados como entradas de referencia de tensión.
Después de configurar el módulo A/D como se desea, el canal seleccionado será leído ante
s de
iniciar la conversión. El canal analógico de entrada debe tener su correspondiente b
it del
registro TRIS programado como entrada. Pasado el tiempo de adquisición, la convers
ión A/D
puede iniciarse. Los pasos siguientes deberán respetarse para realizar una convers
ión A/D:
1. Configuración del módulo A/D:
. Configurar las patillas analógicas, tensión de referencia y E/S digital
(ADCON1).
. Seleccionar el canal de entrada analógico (ADCON0).
. Seleccionar el reloj de conversión A/D (ADCON0).
. Conectar el módulo A/D (ADCON0).
3. Espera del tiempo necesario para la adquisición del valor analógico en la entrada
.
4. Arranca la conversión:
. Activar el bit (ADCON0).
Para una correcta conversión A/D, el reloj debe seleccionarse para asegurar un tie
mpo mínimo
de 1,6.
s.
La Tabla 11-1 muestra los tiempos resultantes TAD, derivados de la frecuencia de
trabajo del
dispositivo y de la fuente de reloj seleccionada.
Tabla 11-1: TAD para máximas frecuencias de trabajo del dispositivo [dispositivos
estándar (c)]
2Tosc
00
1,25 Mhz
8Tosc
01
5 Mhz
32Tosc
10
20 Mhz
RC(1,2,3)
11
Nota 1
Nota 1: La fuente RS tiene un tiempo típico de 4.
s, pero puede variar entre 2 y 6..
s.
Nota 2: Cuando las frecuencias del dispositivo son mayores que 1Mhz, la fuente d
e reloj RC se
recomienda solamente para la operación en modo SLEEP.
Nota 3: Para dispositivos de amplio margen de tensión (LC), mirar la sección de Espe
cificaciones
Eléctricas.
Los registros ADDCON1 y TRIS controlan la operación de las patillas de puerto A/D.
Las
patillas que se vayan a emplear como entradas analógicas, deben activarse como ent
radas, en los
bits correspondientes del registro TRIS. Si estos bits están a 0, las patillas act
uarán como
salidas, y los niveles de salida lógicos (VOH o VOL) serán convertidos a código binari
o.
La operación A/D es independiente del estado de los bits CHS2:CHS0 y de los bits T
RIS.
Nota 1: Al leer el registro del puerto, cualquier patilla configurada como canal
de entrada
analógico se leerá como 0. Las patillas configuradas como entradas digitales convert
irán en
binario sus valores de tensión lógica. Los niveles analógicos de las patillas configur
adas como
entradas digitales, no afectarán a la precisión de la conversión.
Nota 2: Los niveles analógicos en cualquier patilla definida como entrada digital,
puede hacer
que el buffer de entrada consuma más corriente de la especificada en las característ
icas del
dispositivo.
Los bits de configuración, pueden programarse (se leen como 0) o dejarse sin progr
amar (leídos
como 1), para seleccionar varias configuraciones de dispositivos. Estos bits se
guardan en la
posición 2007h de memoria de programa.
El usuario notará que la dirección 2007h está fuera del espacio de la memoria de progr
ama. En
fábrica, se crea una zona especial de memoria (2000h 3FFFh), reservada a configura
ción y
pruebas, que solamente es accesible en el momento de la programación del dispositi
vo.
REGISTRO 12-1: PALABRA DE CONFIGURACIÓN (DIRECCIÓN 2007h)
CP1
CP0
DEBUG
---
WRT
CPD
LVP
BODEN
CP1
CP0
_______
PWRTE
WDTE
FOSC1
FOSC0
bit13
bit0
bits 13-12:
bits 5-4:
CP1:CP0: Bits de protección del código de memoria de Programa FLASH(2)
11 = Sin código de protección.
10 = 1F00h a 1FFFh zona protegida para PIC16F876 y 877
10 = 0F00h a 0FFFh zona protegida para PIC16F873 y 874
01 = 1000h a 1FFFh zona protegida para PIC16F876 y 877
01 = 0800h a 0FFFh zona protegida para PIC16F873 y 874
00 = 0000h a 1FFFh zona protegida para PIC16F876 y 877
bit 11:
DEBUG: Modo de depuración en dispositivo.
1 = Inhibido el depurador. RB6 y RB7 son patillas de uso general de puerto E/S.
0 = Habilitado el depurador. RB6 y RBy se dedican a depuración.
bit 10:
Sin implementar: Se lee como 0.
bit 9:
WRT: Bit de habilitación de escritura en la Memoria Flash de Programa
1 = La memoria de programa sin proteger se puede escribir mediante el control de
EECON.
0 = La memoria de programa sin proteger no se puede escribir mediante el control
de EECON.
bit 8:
CPD: Protección de códigos de la memoria de datos
1 = Sin protección.
0 = Los códigos de la memoria de datos están sin protección.
bit 7:
LVP: Bit de habilitación de Bajo Voltaje en circuito para Programación serie.
1 = La patilla RB3/PGM tiene la función PGM, que habilita la baja tensión de program
ación.
0 = La patilla RB3 es un canal digital de E/S de puerto. HV, en MCLR, puede usars
e para
programación.
bit 6:
BODEN: Bit de habilitación de Reset Brown.Out (BOR = descenso de tensión)(1)
1 = Habilitado BOR
0 = Inhibido BOR.
bit 3:
-PWRTE: Bit de habilitación de retardo a la conexión (PWRT)(1)
1 = Inhibido el PWRT.
0 = Habilitado el PWRT.
bit 2:
WDTE: Bit de habilitación de Supervisor (Watchdog).
1 = Habilitado WDT (Watchdog).
0 = Inhibido el WDT.
bit 1:0:
FOSC1:FOSC0: Bits de selección del Oscilador.
11 = Oscilador RC.
10 = Oscilador HS.
01 = Oscilador XT.
00 = Oscilador LP.
Nota 1:
Habilitando BOR, automáticamente se habilita PWRT, independientemente del valor de
l bit PWRTE.
Hay que asegurarse que PWRT está habilitado junto con BOR.
Nota 2:
Las patillas CP1:CP0 deben tener el valor ofrecido en la lista, para habilitar e
l código de protección.
12.2 Configuraciones del oscilador
XT
455 KHz
2,0 MHz
4,0 MHz
68 100 pF
15 68 pF
15 68 pF
68 100 pF
15 68 pF
15 68 pF
HS
8,0 HMS
16,0 MHz
10 68 pF
10 22 pF
10 68 pF
10 22 pF
Estos valores son solamente, como guía para diseño
Resonadores utilizados
455 KHz
Panasonic EFQ-A455K04B
+/- 0,3%
2,0 MHz
Murata Erie CSA2.00MG
+/- 0,5%
4,0 MHz
Murata Erie CSA4.00MG
+/- 0,5%
8,0 MHz
Murata Erie CSA8.00MT
+/- 0,5%
16,0 MHz
Murata Erie CSA16.00MX
+/- 0,5%
Todos los resonadores utilizados no llevan, integrados,
los condensadores de oscilación
12.2.3 OSCILADOR RC
LP
32 KHz
33 pF
33 pF
200 KHz
15 pF
15 pF
XT
200 KHZ
47-68pF
47-68pF
1 MHz
15 pF
15 pF
4 MHz
15 pF
15 pF
HS
4 MHz
15 pF
15 pF
8 MHz
15-33pF
15-33pF
20 MHz
15-33pF
15-33pF
Estos valores son orientativos para el diseño
Obsérvense las notas de arriba.
Cristales usados
32 Khz
Epson C-001R32.768K-A
+/- 20 PPM
200 Khz
STD XTL 200.000KHz
+/- 20 PPM
1 Mhz
ECS ECS-10-13-1
+/- 50 PPM
4 Mhz
ECS ECS-40-20-1
+/- 50 PPM
8 Mhz
EPSON CA-301 8.000M-C
+/- 30 PPM
20 Mhz
EPSON CA-301 20.000M-C
+/- 30 PPM
12-3 Reset
Los PIC16F87X poseen varios tipos de reset:
.
Reset a la conexión (POR).
.
Reset durante el trabajo normal.
.
Reset durante el modo SLEEP.
.
Reset WDT durante el trabajo normal.
.
Reset WDT para salir del modo SLEEP (wake-up).
.
Reset por bajada de tensión (BOR).
Algunos registros no son afectados por ninguno de estos reset. Su estado es desc
onocido con
POR, y sin cambio con cualquier otro reset. Pero otros muchos registros se borra
n con el reset
tipo POR, , WDT, durante el modo SLEEP y BOR. Los bit TO y PD se
activan o borran, dependiendo de la situación de reset encontrada, como se muestra
en la Tabla
12-4. Estos bits se usan en software para determinar la naturaleza del reset. Ve
r tabla 12-6 para
una completa descripción de los estados de reset para todos los registros.
En la figura 12-4 se muestra un esquema a bloques simplificado de la circuitería d
e reset que
contiene el dispositivo. Éste, posee un filtro de ruido en la entrada de que detec
tará e
ignorará los pulsos muy cortos.
Hay que resaltar que el reset WDT no pone a cero a la patilla .
12.4 Reset de conexión (POR)
Se genera un impulso POR cada vez que se detecta la subida de VDD entre 1,2V y 1
,7V. Para
conceder prioridad a POR, conectar directamente, o a través de un resistor, al niv
el
VDD. Esto eliminará componentes externos RC, normalmente necesitados para crear un
reset de
conexión. El máximo tiempo de subida se detalla en el apartado de Especificaciones E
léctricas.
Cuando el dispositivo arranca en operación normal (sale de la condición de reset), l
os
parámetros de trabajo del chip (tensión, frecuencia, temperatura,...) deben ser esta
bles para
asegurar la operación. Si estas condiciones no están aseguradas, el dispositivo debe
mantenerse
en reset hasta la correcta estabilidad de las condiciones de trabajo. BOR puede
utilizarse para
conseguir las condiciones de arranque.
12.5 Temporizador de conexión (PWRT)
El registro PCON posee dos bits, bit0 y bit1, dependiendo del dispositivo. Bit0
es el bit del
estado de BOR. El bit no se reconoce en el reset POR. Debe activarse por el usua
rio, y
chequearse en subsiguientes resets para ver si está borrado, indicando con ello la
existencia de
BOR. EL bit es indiferente, y no es necesariamente previsible si el circuito de
BOR está
inhibido (por el borrado del bit de configuración BODEN). El bit1 corresponde a .
Se
borra con el reset POR, y queda sin efecto en otros casos. El usuario debe activ
ar este bit
después del POR.
BOR
POR
TABLA 12-3: TEMPORIZACIÓN EN VARIAS SITUACIONES
Configuración
del oscilador
Conexión
Brown-out
Salida de SLEEP
-PWRTE = 0
-PWRTE = 1
XT, HS, LP
72ms + 1024Tosc
1024Tosc
72ms + 1024Tosc
1024Tosc
RC
72 ms
---
72 ms
---
Reset POR
000h
0001 1xxx
---- --0x
Reset MCLR durante operación normal
000h
000u uuuu
---- --uu
Reset MCLR durante SLEEP
000h
0001 0uuu
---- --uu
Reset WDT
000h
0000 1uuu
---- --uu
Abandono WDT
PC + 1
uuu0 0uuu
---- --uu
Reset BOR
000h
0001 1uuu
---- --u0
Abandono de SLEEP por interrupción
PC + 1(1)
uuu10uuu
---- --uu
u = sin cambio; x = desconocido; --- = sin implementar (se lee como 0).
Nota 1: Cuando el abandono de SLEEP se debe a una interrupción, y GIE está activada,
el PC se carga con el vector de interrupción 0004h.
TABLA 12-6: CONDICONES DE INICIALIZACIÓN PARA TODOS LOS REGISTROS
Registros
Dispositivos
Reset POR,
Reset BOR
Reset MCLR,
Reset WDT
Abandono SLEEP por
WDT o Interrupción
W
873
874
876
877
xxxx xxxx
uuuu uuuu
uuuu uuuu
INDF
873
874
876
877
N/A
N/A
N/A
TMR0
873
874
876
877
xxxx xxxx
uuuu uuuu
uuuu uuuu
PCL
873
874
876
877
0000h
0000h
PC + 1(2)
STATUS
873
874
876
877
0001 1xxx
000q quuu(3)
uuuq quuu(3)
FSR
873
874
876
877
xxxx xxxx
uuuu uuuu
uuuu uuuu
PORTA
873
874
876
877
--0x 000
--0u 000
--uu uuuu
PORTB
873
874
876
877
xxxx xxxx
uuuu uuuu
uuuu uuuu
PORTC
873
874
876
877
xxxx xxxx
uuuu uuuu
uuuu uuuu
PORTD
873
874
876
877
xxxx xxxx
uuuu uuuu
uuuu uuuu
PORTE
873
874
876
877
---- -xxx
---- -uuu
---- -uuu
PCLATH
873
874
876
877
---0 0000
---0 0000
---u uuuu
INTCON
873
874
876
877
0000 000x
0000 000u
uuuu uuuu(1)
PIR1
873
874
876
877
r000 0000
r000 0000
ruuu uuuu(1)
873
874
876
877
0000 0000
0000 0000
uuuu uuuu(1)
PIR2
873
874
876
877
-r-0 0--0
-r-0 0--0
-r-u u u(1)
TMR1L
873
874
876
877
xxxx xxxx
uuuu uuuu
uuuu uuuu
TMR1H
873
874
876
877
xxxx xxxx
uuuu uuuu
uuuu uuuu
T1CON
873
874
876
877
--00 0000
--uu uuuu
--uu uuuu
TMR2
873
874
876
877
0000 0000
0000 0000
uuuu uuuu
T2CON
873
874
876
877
-000 0000
-000 0000
-uuu uuuu
SSPBUF
873
874
876
877
xxxx xxxx
uuuu uuuu
uuuu uuuu
SSPCON
873
874
876
877
0000 0000
0000 0000
uuuu uuuu
CCPR1L
873
874
876
877
xxxx xxxx
uuuu uuuu
uuuu uuuu
CCPR1H
873
874
876
877
xxxx xxxx
uuuu uuuu
uuuu uuuu
CCP1CON
873
874
876
877
--00 0000
--00 0000
--uu uuuu
RCSTA
873
874
876
877
0000 000x
0000 000x
uuuu uuuu
TXREG
873
874
876
877
0000 0000
0000 0000
uuuu uuuu
RCREG
873
874
876
877
0000 0000
0000 0000
uuuu uuuu
CCPR2L
873
874
876
877
xxxx xxxx
uuuu uuuu
uuuu uuuu
CCPR2H
873
874
876
877
xxxx xxxx
uuuu uuuu
uuuu uuuu
CCP2CON
873
874
876
877
0000 0000
0000 0000
uuuu uuuu
ADRESH
873
874
876
877
xxxx xxxx
uuuu uuuu
uuuu uuuu
ADCON0
873
874
876
877
0000 00-0
0000 00-0
uuuu uu-u
OPTION_REG
873
874
876
877
1111 1111
1111 1111
uuuu uuuu
TRISA
873
874
876
877
--11 1111
--11 1111
--uu uuuu
TRISB
873
874
876
877
1111 1111
1111 1111
uuuu uuuu
TRISC
873
874
876
877
1111 1111
1111 1111
uuuu uuuu
TRISD
873
874
876
877
1111 1111
1111 1111
uuuu uuuu
TRISE
873
874
876
877
0000 -111
0000 -111
uuuu uuu
PIE1
873
874
876
877
r000 0000
r000 0000
ruuu uuuu
873
874
876
877
0000 0000
0000 0000
uuuu uuuu
PIE2
873
874
876
877
-r-0 0--0
-r-0 0--0
-r-u u u
PCON
873
874
876
877
---- --qq
---- --uu
---- --uu
PR2
873
874
876
877
1111 1111
1111 1111
1111 1111
SSPADD
873
874
876
877
0000 0000
0000 0000
uuuu uuuu
SSPSTAT
873
874
876
877
--00 0000
--00 0000
--uu uuuu
TXSTA
873
874
876
877
0000 -010
0000 -010
uuuu uuu
SPBRG
873
874
876
877
0000 0000
0000 0000
uuuu uuuu
ADRESL
873
874
876
877
xxxx xxxx
uuuu uuuu
uuuu uuuu
ADCON1
873
874
876
877
0--- 0000
0--- 0000
u--- uuuu
EEDATA
873
874
876
877
0--- 0000
0--- 0000
u--- uuuu
EEADR
873
874
876
877
xxxx xxxx
uuuu uuuu
uuuu uuuu
EEDATH
873
874
876
877
xxxx xxxx
uuuu uuuu
uuuu uuuu
EEADRH
873
874
876
877
xxxx xxxx
uuuu uuuu
uuuu uuuu
EECON1
873
874
876
877
x--- x000
u--- u000
u--- uuuu
EECON2
873
874
876
877
---- ----
---- ----
---- ----
u = Sin cambio; x = Desconocido; --- = Sin implementar (se lee como 0); q = Depe
nde de la condición;
r = Reservado (mantener a 0).
Nota 1: Uno o más bits en INTCON, PIR1 y/o PIR2 serán afectados (a causa del abandon
o).
Nota 2: Cuando el abandono se debe a una interrupción, y el bit GIE está activado, e
l PC se carga
con el vector de interrupción 0004h.
Nota 3: Ver Tabla 12-5 para valores de reset de condiciones específicas.
12.10 Interrupciones
La familia PIC16F87X tiene más de 14 fuentes de interrupción. El registro de control
de
interrupciones (INTCON) posee, los bits de petición de interrupción de forma individ
ual, los
bits de habilitación individual, y el bit de habilitación global (de todo el conjunt
o).
El dispositivo puede salir del estado SLEEP por una de las siguientes acciones:
1. Entrada de reset externo por la patilla .
2. Por final de temporización en WDT (si éste estuviese habilitado).
3. Interrupción en la patilla INT, interrupción por cambio en PORTB o interrupción de
algún periférico.
Cuando las interrupciones globales estén inhibidas (GIE borrado), y cualquier fuen
te de
interrupción tenga activados los bits de habilitación individual y señalización de inter
rupción,
sucede algo de los siguiente:
.
Si la interrupción ocurre antes de la ejecución del SLEEP, ésta se completa como una
instrucción NOP. Por consiguiente, el WDT y su postdivisor no se borrarán, el bit
no se activará, y el bit no se borrará.
.
Si la interrupción sucede antes o durante la ejecución de SLEEP, el dispositivo
abandonará inmediatamente el estado SLEEP. La instrucción SLEEP se ejecutará
completamente antes de producirse el abandono. De este modo, el WDT y su
postdivisor se borrarán, el bit se activará, y el bit se borrará.
Dependiendo del momento en que se chequearon los bits indicadores antes de ejecu
tar la
instrucción SLEEP, puede que éstos se activen antes de que se complete la instrucción
SLEEP.
Para determinar si se ejecutó la instrucción SLEEP, hay que mirar el bit . Si éste es
1, la
instrucción se ejecutó como una NOP. Para asegurar que el WDT está borrado, hay que ej
ecutar
una instrucción CLRWDT antes de la instrucción SLEEP.
Si los bits del código de protección no han sido programados, la Memoria de Programa
interna
puede extraerse (leerse) para verificaciones.
12.16 Posiciones ID
Cuatro posiciones de memoria (2000h 2003h) se han previsto como posiciones ID, d
onde el
usuario puede almacenar códigos de comprobación o números de identificación. Estas
posiciones no son accesibles durante la ejecución normal, pero pueden leerse y esc
ribirse en el
proceso de programación y verificación. Se recomienda que solamente se usen los 4 bi
ts menos
significativos de la posición ID.
f
Registro fichero. Dirección 0x00 a
0x7Fh.
W
Registro de trabajo (acumulador).
b
Número de bit en un registro de 8
bits
k
Dato constante o etiqueta.
x
Cualquier valor (0 o 1).
El ensamblador generará códigos
con x = 0. Es la forma de uso
recomendada para la
compatibilidad con todas las
herramientas de desarrollo de
Microchip.
d
Selección de destino; d = 0:
resultado se guarda en W,
d = 1: resultado se almacena en el
registro f.
Por defecto, f = 1.
PC
Contador de Programa.
TO
Bit de fin de temporización.
PD
Bit de bajo consumo.
1, 2
1, 2
3
3
OPERACIONES LITERALES Y DE CONTROL
ADDLW k
ANDLW k
CALL k
CLRWDT
GOTO k
IORLW k
MOVLW k
RETFIE
RETLW k
RETURN
SLEEP
SUBLW k
XORLW k
Suma W y k.
Función AND de W y k
Llamada a subrutina
Borra el WDT
Salto a la dirección k
Función OR de W y k
Mover k a W
Retorno de interrupción
Retorno cargando k en W
Retorno de subrutina
Va a modo reposo
Resta W de k
Función OREX de W y k
1
1
2
1
2
1
1
2
2
2
1
1
1
11 111x kkkk kkkk
11 1001 kkkk kkkk
10 0kkk kkkk kkkk
00 0000 0110 0100
10 1kkk kkkk kkkk
11 1000 kkkk kkkk
11 00xx kkkk kkkk
00 0000 0000 1001
11 01xx kkkk kkkk
00 0000 0000 1000
00 0000 0110 0011
11 110x kkkk kkkk
11 1010 kkkk kkkk
C, DC, Z
Z
-TO, -PD
Z
-TO, -PD
C, DC, Z
Z
D001
D001A
Tensión de
alimentación
VDD
4,0
4,5
VBOR*
---
---
---
5,5
5,5
5,5
V
Configuración de oscilación
XT, RC y LP.
Configuración de oscilación
HS.
BOR habilitado, Fmáx = 14
Mhz (Nota 7)
D002*
Tensión de retención
datos RAM (Nota 1)
VDR
---
1,5
---
V
D003
VDD arranque para
asegurar la señal de
Reset interno (POR)
VPOR
---
VSS
---
V
Ver sección .Reset de
conexión. para los detalles.
D004*
Velocidad de subida
de VDD para asegurar
el reset interno (POR)
SVDD
0,05
---
---
V/ms
Ver sección .Reset de
conexión. para los detalles.
D005
Tensión de reset BOR
VBOR
3,7
4,0
4,35
V
Habilitado bit BODEN en
configuración.
D010
D013
Corriente alimentación
(Nota 2, 5)
IDD
---
---
1,6
7
4
15
mA
Oscilación XT, y RC
Fosc = 4 Mhz, VDD = 5,5 V
(Nota 4)
Oscilación HS
Fosc = 20 Mhz, VDD = 5,5 V
D015*
Corriente BOR (Nota 6)
.
IBOR
---
85
200
.
A
BOR habilitado, VDD=5,0V
D020
D021
D021A
Corriente bajo consumo
(Nota 3, 5)
IPD
---
---
---
10,5
1,5
1,5
42
16
19
.
A
VDD=4,0V, WDT habilitado,
-40 ºC a 85 ºC
VDD=4,0V, WDT inhibido,
0 ºC a 70 ºC
VDD=4,0V, WDT inhibido,
-40 ºC a 85 ºC
D023*
Corriente BOR
(Nota 6)
.
IBOR
---
85
200
.
A
BOR habilitado, VDD = 5,0V
Símbolo: * Parámetros característicos, pero no probados.
Dato en columna .Típ. es a 5V, 25ºC, salvo otra especificación. Estos parámetros son par
a guía de
diseño, pero no están probados.
Nota 1: Este es el límite al que puede bajar VDD sin perder los datos de la RAM.
2: La corriente de alimentación es, principalmente, función de la tensión de trabajo y
de la frecuencia. Otros
factores, como la carga de las patillas E/S, la velocidad de conmutación, tipo de
oscilador, modelo del
código interno de ejecución y temperatura, también tienen efecto sobre la corriente co
nsumida.
Las condiciones de prueba para todas las medidas de IDD, en modo activo de opera
ción, son:
OSC1 = Onda cuadrada externa; todas las patillas triestado, conectadas a VDD.
-MCLR = VDD; WDT habilitado o inhibido, según se especifique.
3: La corriente en modo SLEEP no depende del tipo de oscilador. Esta corriente s
e mide con el bloque en
modo SLEEP, con todas las patillas E/S en alta impedancia y conectadas a VDD y V
SS.
4: Para configuración de oscilador RC, no se incluye la corriente a través de la R e
xterna. Ésta puede
estimarse con la fórmula Ir = VDD/2Rext (mA), con Rext en K.
.
5: El oscilador del Timer1, cuando se habilita, añade 20 .
A a la corriente especificada. Este valor sirve
como guía de diseño, pero no está probado.
6: La corriente .
es la corriente adicional consumida cuando este periférico está habilitado. Esta cor
riente se
añadirá a la base IDD o IPD medida.
7: Cuando se habilita BOR, el dispositivo operará correctamente hasta alcanzar el
punto de caída de tensión
marcado como VBOR.
Tabla 15-2: Características DC: PIC16F873/874/876/877-04 (Comercial, Industrial)
CARACTERÍSTICAS DC
Condiciones de trabajo Estándar (salvo indicación en contra)
Temperatura de trabajo 40 ºC ..
TA .
+85 ºC para industrial y
0 ºC .
TA .
+70 ºC para comercial
Parám.
Nº
Características
Símbolo
Mín.
Típ.
Máx.
Unid.
Condiciones
D001
Tensión de
alimentación
VDD
2,0
---
5,5
V
Configuración de oscilación
XT, RC y LP (DC 4 Mhz).
D002*
Tensión de retención
datos RAM (Nota 1)
VDR
---
1,5
---
V
D003
VDD arranque para
asegurar la señal de
Reset interno (POR)
VPOR
---
VSS
---
V
Ver sección .Reset de
conexión. para los detalles.
D004*
Velocidad de subida
de VDD para asegurar
el reset interno (POR)
SVDD
0,05
---
---
V/ms
Ver sección .Reset de
conexión. para los detalles.
D005
Tensión de reset BOR
VBOR
3,7
4,0
4,35
V
Habilitado bit BODEN en
configuración.
D010
D010A
Corriente alimentación
(Nota 2, 5)
IDD
---
---
0,6
20
2,0
35
mA
.
A
Oscilación XT, y RC
Fosc = 4 Mhz, VDD = 3,0V
(Nota 4)
Oscilación LP
Fosc = 32 Khz, VDD = 3,0V,
WDT inhibido.
D015*
Corriente BOR
(Nota 6)
.
IBOR
---
85
200
.
A
Habilitación BOR, VDD = 5,0V
D020
D021
D021A
Corriente bajo consumo
(Nota 3, 5)
IPD
---
---
---
7,5
0,9
0,9
30
5
5
.
A
VDD = 3,0V, WDT habilitado,
-40 ºC a 85 ºC
VDD = 3,0 V, WDT inhibido,
0 ºC a 70 ºC
VDD = 3,0 V, WDT inhibido,
-40 ºC a 85 ºC
D023*
Corriente BOR
(Nota 6)
.
IBOR
---
85
200
.
A
Habilitación BOR, VDD = 5,0V
Símbolo: * Parámetros característicos, pero no probados.
Dato en columna .Típ. es a 5V, 25ºC, salvo otra especificación. Estos parámetros son par
a guía de
diseño, pero no están probados.
Nota 1: Este es el límite al que puede bajar VDD sin perder los datos de la RAM.
2: La corriente de alimentación es, principalmente, función de la tensión de trabajo y
de la frecuencia. Otros
factores como la carga de las patillas E/S, la velocidad de conmutación, tipo de o
scilador, modelo del
código interno de ejecución y temperatura, también tienen efecto sobre la corriente co
nsumida.
Las condiciones de prueba para todas las medidas de IDD, en modo activo de opera
ción, son:
OSC1 = Onda cuadrada externa; todas las patillas triestado, conectadas a VDD.
-MCLR = VDD; WDT habilitado o inhibido, según se especifique.
3: La corriente en modo SLEEP no depende del tipo de oscilador. Esta corriente s
e mide con el bloque en
modo SLEEP, con todas las patillas E/S en alta impedancia y conectadas a VDD y V
SS.
4: Para configuración de oscilador RC, no se incluye la corriente a través de la R e
xterna. Ésta puede
estimarse con la fórmula Ir = VDD/2Rext (mA), con Rext en K.
.
5: El oscilador del Timer1, cuando se habilita, añade 20 .
A a la corriente especificada. Este valor sirve
como guía de diseño, pero no está probado.
6: La corriente .
es la corriente adicional consumida cuando este periférico está habilitado. Esta cor
riente se
añadirá a la base IDD o IPD medida.
Tabla 15-3: Características DC: PIC16F873/874/876/877-04 (Comercial, Industrial)
PIC16F873/874/876/877-20 (Comercial, Industrial)
PIC16L873/874/876/877-04 (Comercial, Industrial)
CARACTERÍSTICAS DC
Condiciones de trabajo Estándar (salvo indicación en
contra)
Temperatura de trabajo 40 ºC ..
TA .
+85 ºC para industrial y
0 ºC .
TA .
+70 ºC para comercial
Parám.
Nº
Características
Símbolo
Mín.
Típ.
Máx.
Unid.
Condiciones
D030
D030A
D031
D032
D033
D034
D034A
Tensión entrada baja
Puertos E/S
con buffer TTL
con buffer ST
-MCLR, OSC1 (modo RC)
OSC1 (en XT, HS y LP)
Puertos RC3 y RC4
con buffer ST
con SMBus
VIL
VSS
VSS
VSS
VSS
VSS
VSS
-0,5
---
0,15VDD
0,8V
0,2VDD
0,2VDD
0,3VDD
0,3VDD
0,6
V
D040
D040A
D041
D042
D042A
D043
D044
D044A
Tensión entrada alta
Puertos E/S
con buffer TTL
con buffer ST
-MCLR
OSC1 (XT, HS y LP)
OSC1 (en modo RC)
Puertos RC3 y RC4
con buffer ST
con SMBus
VIH
2,0
0,25VDD
+0,8
0,8VDD
0,8VDD
0,7VDD
0,9VDD
0,7VDD
1,4
---
VDD
VDD
VDD
VDD
VDD
VDD
VDD
VDD
5,5
+/- 1
+/- 5
+/- 5
.
A
VSS .
VPIN .
VDD,
patilla en alta imped.
VSS .
VPIN .
VDD
VSS .
VPIN .
VDD,
config. XT, HS y LP.
D080
D083
Voltaje salida baja
Puertos E/S
OSC2/CLKOUT (config.
en modo RC)
VOL
---
---
0,6
V
IOL=8,5mA, VDD=4,5V
de -40º C a 85 ºC
IOL=1,6mA, VDD=4,5V
de -40º C a 85 ºC
Símbolo: * Parámetros característicos, pero no probados.
Dato en columna .Típ. es a 5V, 25ºC, salvo otra especificación. Estos parámetros son par
a guía de
diseño, pero no están probados.
Nota 1: En configuración de oscilador RC, la patilla OSC1/CLKIN es una entrada Sch
mitt Trigger (ST). No se
recomienda que el PIC16F87X se conecte con reloj externo en modo RC.
2: La corriente de fugas en la patilla MCLR es muy dependiente del nivel de tensión
aplicado. Los niveles
expresados representan condiciones normales de trabajo. Corrientes mayores de fu
ga se obtendrán con
diferentes tensiones de entrada.
3: Una corriente negativa quiere expresar la corriente saliente de la patilla.
CARACTERÍSTICAS DC
Condiciones de trabajo Estándar (salvo indicación en contra)
Temperatura de trabajo 40 ºC ..
TA .
+85 ºC para industrial y
0 ºC .
TA .
+70 ºC para comercial
Parám.
Nº
Características
Símb.
Mín.
Típ.
Máx.
Unid.
Condiciones
D090
D092
Tensión salida alta
Puertos E/S (Nota 3)
OSC2/CLKOUT (config.
modo RC)
VOH
VDD - 0,7
---
---
V
IOH=-3,0mA. VDD=4,5V,
de 40 ºC a +85 ºC
IOH=-1,3mA. VDD=4,5V,
de 40 ºC a +85 ºC
D150
Tensión alta drenador
abierto
VOD
---
---
8,5
V
Patilla RA4
D100
D101
D102
Capacidad de carga en
patillas de salida
Patilla OSC2
Todas las patillas E/S y OSC2
(modo RC), SCL SDA en
modo I2C
COSC2
CIO
CB
---
---
15
50
400
pF
En modos XT, HS y LP, cuando
se usa reloj externo en OSC1.
D120
D121
D122
Memoria EEPROM de datos
Duración
VDD para lectura-escritura
Ciclo de borrado-escritura
ED
VDRW
TDEW
100K
Vmín
---
---
---
4
---
5,5
8
E/W
V
ms
25 ºC a 5V
Usando EECON para leer/escribir
Vmín= mínima tensión de trabajo
D130
D131
D132a
D133
Memoria de Programa
FLASH
Duración
VDD para lectura
VDD para borrado-escritura
Ciclo de borrado-escritura
EP
VPR
TPEW
1000
Vmín
Vmín
---
---
---
---
4
---
5,5
5,5
8
E/W
V
V
ms
25 ºC a 5 V
Vmím = Mín. tensión de trabajo
usando EECON para leer-escribir
Vmím = Mín. tensión de trabajo
Símbolo: * Parámetros característicos, pero no probados.
Dato en columna .Típ. es a 5V, 25ºC, salvo otra especificación. Estos parámetros son par
a guía de diseño,
pero no están probados.
Nota 1: En configuración de oscilador RC, la patilla OSC1/CLKIN es una entrada Sch
mitt Trigger (ST). No se
recomienda que el PIC16F87X se conecte con reloj externo en modo RC.
2: La corriente de fugas en la patilla MCLR es muy dependiente del nivel de tensión
aplicado. Los niveles
expresados representan condiciones normales de trabajo. Corrientes mayores de fu
ga se obtendrán con
diferentes tensiones de entrada.
3: Una corriente negativa quiere expresar la corriente saliente de la patilla.
Tabla 15-1: REQUISITOS DE TEMPORIZACIÓN DE RELOJ EXTERNO
Parám.
Nº
Símb.
Características
Mín.
Típ.
Máx.
Unid.
Condiciones
FOSC
Frecuencia CLKIN externo
(Nota 1)
DC
DC
DC
DC
---
---
---
---
4
4
20
200
MHz
MHz
MHz
MHz
Modos XTy RC
Modo
Frecuencia del oscilador
(Nota 1)
DC
0,1
4
5
---
---
---
---
4
4
20
200
MHz
MHz
MHz
KHz
Modo RC
Modo XT
Modo HS
Modo LP
1
TOSC
Período externo CLKIN
(Nota 1)
250
250
50
5
---
---
---
---
---
---
---
---
ns
ns
ns
.
s
Modo XT y RC
Modo HS
Modo HS
Modo LP
Período del oscilador
(Nota 1)
250
250
250
50
5
---
---
---
---
---
---
10,0
250
250
---
ns
ns
ns
ns
.
s
Modo RC
Modo XT
Modo HS (-04)
Modo HS (-20)
Modo LP
2
TCY
Duración ciclo instrucción
(Nota 1)
200
TCY
DC
ns
TCY = 4 / FOSC
3
TOSL,
TOSH
Duración entrada reloj externo
(OSC1) alta o baja
100
2,5
15
---
---
---
---
---
---
ns
.
s
ns
Oscilador XT
Oscilador LP
Oscilador HS
4
TOSR,
TOSF
Tiempos de subida y bajada de la
entrada externa de reloj (OSC1)
---
---
---
---
---
---
25
50
15
ns
ns
ns
Oscilador XT
Oscilador LP
Oscilador HS
Símbolo: Dato en columna .Típ. es a 5V, 25ºC, salvo otra especificación. Estos parámetros
son para guía de
diseño, pero no están probados.
Nota 1: Período del ciclo de instrucción (TCY) igual a cuatro períodos de la entrada d
e oscilación. Todos los
valores especificados se basan en la caracterización de los datos para un tipo de
oscilador particular, bajo
condiciones de trabajo estándar, con el dispositivo en ejecución de códigos. Exceder e
stos límites
especificados puede generar oscilaciones inestables y consumos de corriente mayo
res que los ofrecidos.
Todos los dispositivos se han probado trabajando con los valores .Mín.., y con un
reloj externo aplicado
a la patilla OSC1/CLKIN. Cuando se usa una entrada de reloj externo, el límite de
período .Máx.. es DC
(sin reloj) para todos los dispositivos.
TABLA 15-2: NECESIDADES DE TEMPORIZACIÓN DE CLKOUT Y E/S
Parám.
Nº
Símbolo
Características
Mín.
Típ.
Máx.
Unid.
Condicio.
10*
TosH2ckL
OSC1..
a CLKOUT.
---
75
200
ns
Nota 1
11*
TosH2ckH
OSC1.
a CLKOUT.
---
75
200
ns
Nota 1
12*
TckR
Tiempo subida CLKOUT
---
35
100
ns
Nota 1
13*
TckF
Tiempo bajada CLKOUT
---
35
100
ns
Nota 1
14*
TckL2ioV
CLKOUT.
a salida válida Puerto
---
---
0,5TCY+20
ns
Nota 1
15*
TioV2ckH
Entrada Puerto válida antes de CLKOUT.
Tosc+200
---
---
ns
Nota 1
16*
TckH2ioI
Mantenimiento entrada puerto después CLKOUT.
0
---
---
ns
Nota 1
17*
TosH2ioV
OSC1.
(ciclo Q1) a salida puerto válida
---
100
255
ns
18*
TosH2ioI
OSC1.
(ciclo Q2) a entrada puerto
válida (tiempo manten. entrada
puerto)
Estándar (F)
100
---
ns
Extendida(LF)
200
---
ns
19*
TioV2osH
Entrada válida puerto a OSC1.
0
---
---
ns
20*
TioR
Tiempo de subida de salida de
puerto
Estándar (F)
---
10
40
ns
Extendida(LF)
---
---
145
ns
21*
TioF
Tiempo de bajada de salida de
Puerto
Estándar (F)
---
10
40
ns
Extendida(LF)
---
---
145
ns
22
Tinp
Tiempo en bajo o alto en patilla INT
TCY
---
---
ns
23
Trbp
Tiempo en bajo o alto para INT por cambio en
patilla RB7 RB4
TCY
---
---
ns
30*
TmcL
Ancho pulso -MCLR
2
---
---
.
s
VDD = 5V,
-40 ºC a + 85 ºC
31*
Twdt
Período temporiz. WDT
7
18
33
ms
VDD = 5V,
-40 ºC a + 85 ºC
32*
Tost
Período arranque oscilación
---
1024Tosc
---
---
Tosc = perío. OSC1
33*
Tpwrt
Período conexión
28
72
132
ms
VDD = 5V,
-40 ºC a + 85 ºC
34*
TIOZ
Tiempo de alta impedancia desde
bajada MCLR o reset WDT
---
---
2,1
.
s
35*
TBOR
Ancho pulso de reset BOR
100
---
---
.
s
VDD .
VBOR (D005)
* Estos parámetros son característicos pero no están probados.
Dato en columna .Típ.. es a 5V, 25 ºC, salvo especificación en contra. Estos parámetros
sirven como guía de
diseño pero no están verificados.
TABLA 15-4: NECESIDADES DE RELOJ EXTERNO PARA TIMER1 Y TIMER2
Parám.
Nº
Símb.
Características
Mín
Típ
Máx
Unid.
Condiciones
40*
Tt0H
Ancho pulso alto T0CKI
Sin Prediv.
0,5TCY+20
---
---
ns
Debe coincidir
param. 42
Con Prediv.
10
---
---
ns
41*
Tt0L
Ancho pulso bajo T0CKI
Sin Prediv.
0,5TCY+20
---
---
ns
Debe coincidir
param. 42
Con Prediv.
10
---
---
ns
42*
Tt0P
Período T0CKI
Sin Prediv.
TCY + 40
---
---
ns
Con Prediv.
Mayor que:
20 ó
(TCY+40)/N
---
---
ns
N=valor Prediv.
(2, 4,... 256)
45*
Tt1H
Tiempo alto
T1CKI
Síncrono, Predivisor = 1
0,5TCY+20
---
---
ns
Debe coincidir
también el
parámetro 47
Síncr., Prediv. =
2, 4 y 8
Estándar(F)
---
---
---
ns
Extendida(LF)
---
---
---
ns
Asíncrono
Estándar(F)
---
---
---
ns
Extendida(LF)
---
---
---
ns
46*
Tt1L
Tiempo bajo
T1CKI
Síncrono, Predivisor = 1
0,5TCY+20
---
---
ns
Debe coincidir
también el
parámetro 47
Síncr., Prediv. =
2, 4 y 8
Estándar(F)
15
---
---
ns
Extendida(LF)
25
---
---
ns
Asíncrono
Estándar(F)
30
---
---
ns
Extendida(LF)
50
---
---
ns
47*
Tt1P
Período de
entrada T1CKI
Síncrono
Estándar(F)
Mayor que:
30 ó
(TCY+40)/N
---
---
ns
N=valor Prediv.
(1, 2, 4, 8)
Extendida(LF)
Mayor que:
50 ó
(TCY+40)/N
---
---
ns
N=valor Prediv.
(1, 2, 4, 8)
Asíncrono
Estándar(F)
60
---
---
ns
Extendida(LF)
100
---
---
ns
Ft1
Margen de frecuencia de entrada oscilador Timer1
(Oscilador habilitado activando el bit T1OSCEN)
DC
---
200
KHz
48
TCKEZtmr1
Retardo de increm. de Timer con respecto al
flanco de reloj externo
2Tosc
---
7Tosc
---
50*
TLC
Tiempo bajo
entrada CCP1 y
CCP2
Sin Predivisor
0,5TCY+20
---
---
ns
Con
Predivisor
Estándar(F)
10
---
---
ns
Extendida(LF)
20
---
---
ns
51*
TccH
Tiempo alto
entrada CCP1 y
CCP2
Sin Predivisor
0,5TCY+20
---
ns
Con
Predivisor
10
10
---
---
ns
20
20
---
---
ns
52*
TccP
Período de entrada CCP1 y CCP2
NTcy403
---
---
ns
N=Valor del
Predivisor
(1, 4 o 16)
53*
TccR
Tiempo de subida de la salida
de CCP1 y CCP2
Estándar(F)
---
10
25
ns
Extendida(LF)
---
25
50
ns
54*
TccF
Tiempo de bajada de la salida
de CCP1 y CCP2
Estándar(F)
---
10
25
ns
Extendida(LF)
---
25
45
ns
62
TdtV2wrH
Dato válido en la entrada antes de WR.
o
CS.
(tset-up)
20
25
---
---
---
---
ns
ns
Sólo rango
extendido
63*
TwrH2dtI
Mantenimiento dato entrada
después de WR.
o
CS..
(thold)
Estándar(F)
20
Extendida(LF)
35
64
TrdL2dtV
---
---
---
---
80
90
ns
ns
Sólo rango
extendido
65
TrdH2dtI
10
---
30
ns
70*
TssL2scH
Entrada SS.
a SCK.
o SCK.
TCY
---
---
ns
71*
TscH
Tiempo en alto de la entrada SCK (modo servidor)
TCY+20
---
---
ns
72*
TscL
Tiempo en bajo de la entrada SCK (modo servidor)
TCY+20
---
---
ns
73*
TdiV2scH,
TdiV2scL
Tiempo de anticipación de SDI respecto flanco
SCK
100
---
---
ns
74*
TscH2diL,
TscL2diL
Tiempo estable de SDI respecto a flanco de SCK
100
---
---
ns
75*
TdoR
Tiempo de subida del dato de
salida SDO
Estándar (F)
---
10
25
ns
Extendida (LF)
---
25
50
ns
76*
TdoF
Tiempo de bajada del dato de salida SDO
---
10
25
ns
77*
TssH2doZ
-SS.
a salida alta impedancia de SDO
10
---
50
ns
78*
TscR
Tiempo de subida de salida SCK
en modo maestro
Estándar (F)
---
10
25
ns
Extendida (LF)
---
25
50
ns
79*
TscF
Tiempo de bajada salida SCK modo maestro
---
10
25
ns
80*
TscH2doV,
TscL2doV
Dato de salida SDO válido
después de flanco SCK
Estándar (F)
---
---
50
ns
Extendida (LF)
---
---
145
ns
81*
TdoV2scH,
TdoV2scL
Tiempo de bajada del dato de salida SDO
TCY
---
---
ns
82*
TssL2doV
-SS.
a salida alta impedancia de SDO
---
---
50
ns
83*
TscH2ssH,
TscL2ssH
-SS.
después de flanco SCK
1,5TCY+40
---
---
ns
TABLA 15-8: NECESIDADES DE LOS BITS DE START Y STOP DEL BUS I2C
Parám.
Nº
Símb.
Características
Mín
Típ
Máx
Unid.
Cond.
90
TSU:STA
Antelación bit START
Modo 100KHz
4700
---
---
ns
Solamente en condición
repetición de START
Modo 400KHz
600
---
---
91
THD:STA
Tiempo estable bit START
Modo 100KHz
4000
---
---
ns
Después de este período
se genera el primer reloj
Modo 400KHz
600
---
---
92
TSU:STO
Antelación bit STOP
Modo 100KHz
4700
---
---
ns
Modo 400KHz
600
---
---
93
THD:STO
Tiempo estable bit STOP
Modo 100KHz
4000
---
---
ns
Modo 400KHz
600
---
---
TABLA 15-9: NECESIDADES DE LOS DATOS DEL BUS I2C
Parám.
Nº
Símbolo
Características
Mín
Máx
Unid.
Condiciones
100
THIGH
Tiempo alto de
reloj
100KHz
4,0
---
.
s
Mínima operación
1,5MHz
400KHz
0,6
Mínima operación
10MHz
Módulo SSP
1,5TCY
101
TLOW
Tiempo bajo de
reloj
100KHz
4,7
---
.
s
Mínima operación
1,5MHz
400KHz
1,3
Mínima operación
10MHz
Módulo SSP
1,5TCY
102
TR
Tiempo de subida
de
SDA y SCL
100KHz
---
1000
ns
400KHz
20+0,1Cb
300
Cb entre 10 y 400 pF
103
TF
Tiempo de bajada
de
SDA y SCL
100KHz
---
300
ns
400KHz
20+0,1Cb
Cb entre 10 y 400 pF
90
TSU:STA
Antelación bit
START
100KHz
4,7
---
.
s
Solamente en
condición
repetición de START
400KHz
0,6
91
THD:STA
Tiempo estable del
bit START
100KHz
4,0
---
.
s
Después de este
período
se genera el primer
reloj
400KHz
0,6
106
THD:DAT
Tiempo estable
dato de
entrada
100KHz
0
---
ns
400KHz
0
0,9
.
s
107
TSU:DAT
Antelación del dato
de
entrada
100KHz
250
---
ns
Nota 2
400KHz
100
92
TSU:STO
Antelación bit
STOP
100KHz
4,7
---
.
s
400KHz
0,6
109
TAA
Salida válida desde
reloj
100KHz
---
3500
ns
Nota 1
400KHz
---
---
110
TBUF
Tiempo de bus libre
100KHz
4,7
---
.
s
Tiempo bus libre antes
de
inicio nueva
transmisión
400KHz
1,3
Cb
Capacidad de carga del bus
---
400
pF
120
TckH2dtV
SYNC XMIT (Maestro y Servidor)
Dato salida válido respecto a reloj alto
Estándar (F)
---
---
80
ns
Extendida (LF)
100
121
Tckrf
Tiempos de subida y bajada de reloj
(modo Maestro)
Estándar (F)
---
---
45
ns
Extendida (LF)
50
122
Tdtrf
Tiempos de subida y bajada del dato
de salida
Estándar (F)
---
---
45
ns
Extendida (LF)
50
Dato en columna .Típ.. es a 5V, 25 ºC, salvo especificación en contra. Estos parámetros
sirven como guía de
diseño pero no están verificados.
125
TdtV2ckL
SYNC RCV (Maestro y Servidor)
Antelación de dato respecto a CK.
.
15
---
---
ns
126
TckL2dtI
Tiempo estable del dato después de
CK.
.
15
---
---
ns
Dato en columna .Típ.. es a 5V, 25 ºC, salvo especificación en contra. Estos parámetros
sirven como guía de
diseño pero no están verificados.
TABLA 15-12: PIC16F873/874/876/877-04 (COMERCIAL, INDUSTRIAL)
PIC16F873/874/876/877-20 (COMERCIAL, INDUSTRIAL)
PIC16LF873/874/876/877-04 (COMERCIAL, INDUSTRIAL)
Parám.
Nº
Símb.
Características
Mín
Típ
Máx
Unid.
Condiciones
A01
NR
Resolución
---
---
10bits
bit
VREF=VDD=5,12V
VSS .
VAIN .
VREF
A03
EIL
Error linealidad integral
---
---
< +/- 1
LSB
VREF=VDD=5,12V
VSS .
VAIN .
VREF
A04
EDL
Error linealidad diferencial
---
---
< +/- 1
LSB
VREF=VDD=5,12V
VSS .
VAIN .
VREF
A06
EOFF
Error desplazamiento (offset)
---
---
< +/- 2
LSB
VREF=VDD=5,12V
VSS .
VAIN .
VREF
A07
EGN
Error de ganancia
---
---
< +/- 1
LSB
VREF=VDD=5,12V
VSS .
VAIN .
VREF
A10
---
Monotonicidad(3)
---
garantizado
---
---
VSS .
VAIN .
VREF
A20
VREF
Voltaje de referencia
(VREF+ - VREF-)
2,0
---
VDD+0,3
V
Mínimo para
aseguarar 10 bits
de precisión
A21
VREF+
Tensión alta de referencia
AVDD-2,5
AVDD+0,3
V
A22
VREF-
Tensión baja de referencia
AVSS-0,3
VREF+ - 2
V
A25
VAIN
Tensión de entrada analógica
VSS 0,3
---
VREF +0,3
V
A30
ZAIN
Impedancia recomendada para
la fuente de tensión analógica
---
---
10,0
K.
A40
IAD
Corriente de
conversión A/D
Estándar
---
220
---
.
A
Corriente media
cuando A/D es
efectivo (Nota 1)
Extendida
---
90
---
.
A
A50
IREF
Corriente de la entrada VREF
(Nota 2)
10
---
1000
.
A
Durante adquisición
de VAIN. Basada en
la diferencia entre
VHOLD y VAIN, que
carga CHOD. Ver
Sección 11.1.
---
---
10
.
A
Durante el ciclo de
conversión A/D
* Estos parámetros son característicos pero no están probados.
Dato en columna .Típ.. es a 5V, 25 ºC, salvo especificación en contra. Estos parámetros
sirven como guía de
diseño pero no están verificados.
Nota 1: Cuando A/D está desactivado, solamente consume la pequeña corriente de fuga.
Las especificaciones de bajo consumo incluyen cualquier fuga desde el módulo A/D.
Nota 2: La corriente VREF se refiere a la patilla RA3 o VDD, la que esté seleccion
ada como entrada de referencia.
Nota 3: El resultado de la conversión A/D nunca disminuye con el incremento de ten
sión en la entrada, y no
pierde códigos.
TABLA 15-13: NECESIDADES DE CONVERSIÓN A/D
Parám.
Nº
Símb.
Características
Mín
Típ
Máx
Unid.
Condiciones
130
TAD
Período reloj A/D
Estándar
1,6
---
---
.
s
Basado TOSC, VREF ..
3,0V
Extendida
3,0
---
---
.
s
Basado TOSC, VREF .....
V
Estándar
2,0
4,0
6,0
.
s
Modo RC A/D.
Extendida
3,0
6,0
9,0
.
s
Modo RC A/D.
131
TCNV
Tiempo de conversión (no incluido
el tiempo S/H) (Nota 1)
---
12
TAD
132
TACQ
Tiempo de adquisición
Nota2
40
---
.
s
10*
---
---
.
s
El tiempo mínimo es el de
programación del amplifi-
cador. Éste se usará si la
nueva tensión de entrada no
ha cambiado más de 1 LSB
(p. e., 20,0 mV a 5,12 V)
desde la última tensión cap-
turada (mientras está activo
CHOLD.
134
TGO
Q4 a incio del reloj A/D
---
TOSC/2 .
.
---
---
Si se selecciona reloj RC
como fuente de A/D, se aña-
de un tiempo TCY antes del
inicio del reloj A/D. Esto
permite la ejecución de la
instrucción SLEEP.
* Estos parámetros son característicos pero no están probados.
Dato en columna .Típ.. es a 5V, 25 ºC, salvo especificación en contra. Estos parámetros
sirven como guía de
diseño pero no están verificados.
.
Garantizada, esta especificación, para el diseño.
Nota 1: El registro ADRES se leerá en el siguiente ciclo TCY.
Nota 2: Para condiciones mínimas ver Sección 11.1
Leyenda: MM...M Información del número particular de Microchip.
XX...X Información específica del fabricante.
AA Código de año (últimas 2 cifras del año del calendario).
BB Código de semana (la primera semana de Enero será .01.)
C Código que facilita la planta de fabricación de la base de silicio.
O = Vendedor extranjero.
C = Línea de 5..
S = Línea de 6..
H = Línea de 8..
D Número de revisión de máscara.
E = Código de la planta de montaje, o región de origen en la que se montó el bloque.
Nota: En el caso de que no esté marcado el número particular de Microchip en una línea
, se habrá
juntado en la siguiente, para limitar el número de caracteres disponible por la es
pecificación
del fabricante.
.
La marcación estándar en dispositivos OTP consiste en un número particular de Microchi
p, código
de año, código de semana, código de planta, revisión de máscara y código de montaje.
Unidades
PULGADAS
MILÍMETROS
Límites dimensión
MÍN
NOM
MÁX
MÍN
NOM
MÁX
Distancia entre filas
0,300
7,62
Número de patillas
n
28
28
Paso entre patillas
p
0,100
2,54
Ancho patilla
B
0,016
0,019
0,022
0,41
0,48
0,56
Ancho parte alta de patilla
B1
0,040
0,053
0,065
1,02
1,33
1,65
Radio de taladro en placa
R
0,000
0,005
0,010
0,00
0,13
0,25
Grosor de patilla
c
0,008
0,010
0,012
0,20
0,25
0,30
Altura desde plano de placa
A
0,140
0,150
0,160
3,56
3,81
4,06
Altura desde placa a centro
A1
0,070
0,090
0,110
1,78
2,29
2,79
Separación de la placa base
A2
0,015
0,020
0,025
0,38
0,51
0,64
Largo de patilla en taladro
L
0,125
0,130
0,135
3,18
3,30
3,43
Longitud de encapsulado
D
1,345
1,365
1,385
34,16
34,67
35,18
Ancho hasta doblado de patillas
E
0,280
0,288
0,295
7,11
7,30
7,49
Ancho de cápsula plástica
E1
0,270
0,283
0,295
6,86
7,18
7,49
Distancia extrema entre filas de patillas
eB
0,320
0,350
0,380
8,13
8,89
9,65
Ángulo de biselado de cápsula
.
5
10
15
5
10
15
Ángulo de biselado inferior de cápsula
.
5
10
15
5
10
15
Unidades
PULGADAS
MILÍMETROS
Límites dimensión
MÍN
NOM
MÁX
MÍN
NOM
MÁX
Paso entre patillas
p
0,050
1,27
Número de patillas
n
28
28
Altura desde plano de placa
A
0,093
0,099
0,104
2,36
2,50
2,64
Altura desde placa a centro
A1
0,048
0,058
0,068
1,22
1,47
1,73
Separación de la placa base
A2
0,004
0,008
0,011
0,10
0,19
0,28
Longitud de encapsulado
D
0,700
0,706
0,712
17,78
17,93
18,08
Ancho hasta doblado de patillas
E
0,292
0,296
0,299
7,42
7,51
7,59
Ancho de cápsula plástica
E1
0,394
0,407
0,419
10,01
10,33
10,64
Biselado superior indicativo
X
0,010
0,020
0,029
0,25
0,50
0,74
Radio de doblado superior
R1
0,005
0,005
0,010
0,13
0,13
0,25
Radio de doblado inferior
R2
0,005
0,005
0,010
0,13
0,13
0,25
Largo de apoyo en placa, de patilla
L
0,011
0,016
0,021
0,28
0,41
0,53
Ángulo de apoyo en placa
.
.
0
4
8
0
4
8
Distancia desde cápsula hasta inicio de doblado superior
L1
0,010
0,015
0,020
0,25
0,38
0,51
Grosor de patilla
c
0,009
0,011
0,012
0,23
0,27
0,30
Ancho patilla
B
0,014
0,017
0,019
0,36
0,42
0,48
Ángulo de biselado de cápsula
.
0
12
15
0
12
15
Ángulo de biselado inferior de cápsula
.
0
12
15
0
12
15
Unidades
PULGADAS
MILÍMETROS
Límites dimensión
MÍN
NOM
MÁX
MÍN
NOM
MÁX
Distancia entre filas
0,600
15,24
Número de patillas
n
40
40
Paso entre patillas
p
0,100
2,54
Ancho patilla
B
0,016
0,018
0,020
0,41
0,46
0,51
Ancho parte alta de patilla
B1
0,045
0,050
0,055
1,14
1,27
1,40
Radio de taladro en placa
R
0,000
0,005
0,010
0,00
0,13
0,25
Grosor de patilla
c
0,009
0,010
0,011
0,23
0,25
0,28
Altura desde plano de placa
A
0,110
0,160
0,160
2,79
4,06
4,06
Altura desde placa a centro
A1
0,073
0,093
0,113
1,85
2,36
2,87
Separación de la placa base
A2
0,020
0,020
0,040
0,51
0,51
1,02
Largo de patilla en taladro
L
0,125
0,130
0,135
3,18
3,30
3,43
Longitud de encapsulado
D
2,013
2,018
2,023
51,13
51,26
51,38
Ancho hasta doblado de patillas
E
0,530
0,535
0,540
13,46
13,59
13,72
Ancho de cápsula plástica
E1
0,545
0,565
0,585
13,84
14,35
14,86
Distancia extrema entre filas de patillas
eB
0,630
0,610
0,670
16,00
15,49
17,02
Ángulo de biselado de cápsula
.
5
10
15
5
10
15
Ángulo de biselado inferior de cápsula
.
5
10
15
5
10
15
Unidades
PULGADAS
MILÍMETROS
Límites dimensión
MÍN
NOM
MÁX
MÍN
NOM
MÁX
Paso entre patillas
p
0,031
0,80
Número de patillas
n
44
44
Ancho hasta centro de patillas extremas
n1
11
11
0
3,5
7
0
3,5
7
Distancia desde cápsula hasta inicio de doblado superior
L1
0,003
0,008
0,013
0,08
0,20
0,33
Grosor de patilla
c
0,004
0,006
0,008
0,09
0,15
0,20
Ancho patilla
B
0,012
0,015
0,018
0,30
0,38
0,45
Longitud entre extremos de patillas extremas lado 1
D1
0,463
0,472
0,482
11,75
12,00
12,25
Longitud entre extremos de patillas extremas lado 2
E1
0,463
0,472
0,482
11,75
12,00
12,25
Longitud de encapsulado lado 1
D
0,390
0,394
0,398
9,90
10,00
10,10
Longitud de encapsulado lado 2
E
0,390
0,394
0,398
9,90
10,00
10,10
Biselado esquina indicativo de patilla 1
X
0,025
0,035
0,045
0,64
0,89
1,14
Ángulo de biselado de cápsula
.
5
10
15
5
10
15
Ángulo de biselado inferior de cápsula
.
5
12
15
5
12
15
Unidades
PULGADAS
MILÍMETROS
Límites dimensión
MÍN
NOM
MÁX
MÍN
NOM
MÁX
Paso entre patillas
p
0,031
0,80
Número de patillas
n
44
44
Ancho hasta centro de patillas extremas
n1
11
11
0
3,5
7
0
3,5
7
Distancia desde cápsula hasta inicio de doblado superior
L1
0,011
0,016
0,021
0,28
0,41
0,53
Grosor de patilla
c
0,005
0,007
0,009
0,13
0,18
0,23
Ancho patilla
B
0,012
0,015
0,018
0,30
0,37
0,45
Longitud entre extremos de patillas extremas lado 1
D1
0,510
0,520
0,530
12,95
13,20
13,45
Longitud entre extremos de patillas extremas lado 2
E1
0,510
0,520
0,530
12,95
13,20
13,45
Longitud de encapsulado lado 1
D
0,390
0,394
0,398
9,90
10,00
10,10
Longitud de encapsulado lado 2
E
0,390
0,394
0,398
9,90
10,00
10,10
Biselado esquina indicativo de patilla 1
X
0,025
0,035
0,045
0,64
0,89
1,14
Ángulo de biselado de cápsula
.
5
10
15
5
10
15
Ángulo de biselado inferior de cápsula
.
5
12
15
5
12
15
Unidades
PULGADAS
MILÍMETROS
Límites dimensión
MÍN
NOM
MÁX
MÍN
NOM
MÁX
Número de patillas
n
44
44
0,050
1,27
Altura desde plano de placa
A
0,165
0,173
0,180
4,19
4,38
4,57
Altura desde placa a centro
A1
0,095
0,103
0,110
2,41
2,60
2,79
Separación de la placa base
A2
0,015
0,023
0,030
0,38
0,57
0,76
Altura del bisel del lado 1
A3
0,024
0,029
0,034
0,61
0,74
0,86
Achaflanado de la esquina 1
CH1
0,040
0,045
0,050
1,02
1,14
1,27
Achaflanado de cualquier otra esquina
CH2
0,000
0,005
0,010
0,00
0,13
0,25
Longitud entre extremos de patillas extremas lado 2
E1
0,685
0,690
0,695
17,40
17,53
17,65
Longitud entre extremos de patillas extremas lado 1
D1
0,685
0,690
0,695
17,40
17,53
17,65
Longitud de encapsulado lado 2
E
0,650
0,653
0,656
16,51
16,59
16,66
Longitud de encapsulado lado 1
D
0,650
0,653
0,656
16,51
16,59
16,66
Ancho de base
E2
0,610
0,620
0,630
15,49
15,75
16,00
Distancia centros de curvatura de patillas extremas
D2
0,610
0,620
0,630
15,49
15,75
16,00
Ancho hasta centro de patillas extremas
n1
11
11
Grosor de patilla
c
0,008
0,010
0,012
0,20
0,25
0,30
Ancho superior de patilla
B1
0,026
0,029
0,032
0,66
0,74
0,81
Ancho inferior de patilla
B
0,015
0,018
0,021
0,38
0,46
0,53
Largo parte superior de patilla
L
0,050
0,058
0,065
1,27
1,46
1,65
Radio de doblado superior
R1
0,003
0,005
0,010
0,08
0,13
0,25
Radio de doblado inferior
R2
0,015
0,025
0,035
0,38
0,64
0,89
Ángulo de biselado de cápsula
.
0
5
10
0
5
10
Ángulo de biselado inferior de cápsula
.
0
5
10
0
5
10