USB-PIC'School Guia de Usuario
USB-PIC'School Guia de Usuario
USB-PIC'School Guia de Usuario
INGENIERIA DE MICROSISTEMAS
PROGRAMADOS S.L.
email: [email protected]
www.microcontroladores.com
INTRODUCCION
CARACTERISTICAS
ARQUITECTURA DE USB-PICSCHOOL
1-1
1-2
1-4
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
1.3.7
1.3.8
1.3.9
1.3.10
1.3.11
1.3.12
1.3.13
1.3.14
1-5
1-6
1-6
1-9
1-9
1-10
1-11
1-12
1-13
1-14
1-15
1-16
1-17
1-18
La fuente de alimentacin
El oscilador
Los microcontroladores
Entradas analgicas
Entradas digitales
El generador lgico
El teclado
Salidas digitales
Salidas digitales de alta corriente
Interfase serie RS-232
Display de 7 segmentos
Pantalla LCD
Dispositivos I2C y 1-wire
Seccin de Depuracin/Grabacin
TEMA 2: EL DEPURADOR/GRABADOR
2.1
2.2
2.3
2.4
2.5
INTRODUCCION
DESCRIPCION
ENTORNO DE DESARROLLO MPLAB-IDE EMPLEADO PARA LA GRABACION
2-1
2-1
2-2
2.3.1
2.3.2
2.3.3
2.3.4
2.3.5
2.3.6
2-3
2-4
2-5
2-5
2-6
2-8
Instalacin
Seleccin de dispositivo
Seleccionando el grabador
Ficheros .HEX y buffers de memoria
Funciones ms comunes del grabador
Iconos de grabacin
2-9
2.4.1
2.4.2
2.4.3
2.4.4
2.4.5
2.4.6
2.4.7
2.4.8
2.4.9
2-9
2-10
2-11
2-12
2-12
2-13
2-13
2-13
2-13
Instalacin
Seleccin de un dispositivo
Importar un fichero .HEX
Grabacin del dispositivo
Verificando el dispositivo
Lectura de un dispositivo
Borrado del dispositivo
Verificacin del borrado
Procedimientos automticos de lectura/escritura
EL MODO DE DEPURACION
2-14
2.5.1
2.5.2
2.5.3
2.5.4
2-15
2-15
2-16
2-23
Seleccionando el dispositivo
Seleccionando el depurador
Funciones ms comunes en la depuracin
Iconos empleados en la depuracin
i-1
3.3
INTRODUCCION
TUTORIAL
3-1
3-3
3.2.1
3.2.2
3.2.3
3.2.5
3.2.6
3.2.7
3-3
3-8
3-9
3-10
3-11
Creacin de un proyecto
El programa fuente
Preparando el hardware de la aplicacin
Grabacin del dispositivo
Comprobando el funcionamiento de la aplicacin
Depuracin del ejemplo anterior
EJEMPLOS
3-13
3.3.1
3.3.2
3.3.3
3.3.4
3.3.5
3.3.6
3.3.7
3.3.8
3.3.9
3.3.10
3.3.11
3.3.12
3.3.13
3.3.14
3.3.15
3.3.16
3.3.17
3.3.18
3.3.19
3.3.20
3.3.21
3.3.22
3.3.23
3.3.24
3.3.25
3.3.26
3.3.27
3.3.28
3.3.29
3.3.30
3.3.31
3.3.32
3.3.33
3.3.34
3.3.35
3.3.36
3.3.37
3-14
3-14
3-14
3-15
3-16
3-17
3-17
3-18
3-19
3-20
3-21
3-21
3-22
3-23
3-23
3-24
3-25
3-26
3-27
3-28
3-28
3-29
3-30
3-31
3-31
3-32
3-33
3-33
3-34
3-35
3-35
3-36
3-37
3-38
3-39
3-41
3.3.38
3.3.39
3.3.40
3.3.41
3.3.42
3.3.43
i-2
3-41
3-42
3-44
3-45
3-45
3-47
3-47
Ejemplo 44: Capturas con el mdulo CCP, midiendo tiempo entre un pulsos
Ejemplo 45: Modo comparacin del CCP1, contador de eventos
Ejemplo 46: Comparacin con el mdulo CCP1, contador de eventos ajustable
Ejemplo 47: Modulacin de anchura de pulsos (PWM) mediante el mdulo CCP1
Ejemplo 48: PWM mediante el mdulo CCP1, variando la anchura
Ejemplo 49: Modulacin PWM mediante el convertidor ADC
Ejemplo 50: Modulacin PWM, modo Pulse Steering
Ejemplo 51: Modulacin PWM, modo Half-Bridge
Ejemplo 52: Modulacin PWM, modo Full-Bridge
Ejemplo 53: Modulacin PWM, modo Full-Bridge y Auto-Shutdown
Ejemplo 54: El USART, transmitiendo caracteres
Ejemplo 55: El USART, recepcin/transmisin de caracteres
Ejemplo 56: Auto Deteccin del USART
Ejemplo 57: El USART, auto deteccin y transmisin de mensajes
Ejemplo 58: El USART, monitorizacin remota
Ejemplo 59: El USART, Control remoto
Ejemplo 60: Protocolo y comunicacin 1-wire
Ejemplo 61: Comunicacin 1-wire, medir la temperatura con el DS18S20
Ejemplo 62: Comunicacin 1-wire, termostato
Ejemplo 63: Protocolo y comunicacin I2C, un secuenciador en RAM
Ejemplo 64: Comunicacin I2C, el reloj del DS1307
Ejemplo 65: Comunicacin I2C, Reloj/Calendario con el DS1307
Ejemplo 66: Aplicacin prctica, cartel publicitario
Ejemplo 67: Aplicacin prctica, Data Logger
Ejemplo 68: Aplicacin prctica, juego Adivina el nmero
Ejemplo 69: Aplicacin prctica, control de accesos
Ejemplo 70: Aplicacin prctica, Programa de test de USB-PICSchool
BIBLIOGRAFIA
1.2.3.4.5.6.7.8.-
DIRECCIONES DE INTERES
Ingeniera de Microsistemas Programados S.L. www.microcontroladores.com
Microchip. www.microchip.com
Custom Computer Services inc. (compiladores C) www.ccsinfo.com
Topway (pantallas LCD) www.topwaydisplay.com y www.topwaysz.com
Dallas Semiconductor (dispositivos 1-wire e I2C) www.maxim-ic.com
i-3
3-48
3-48
3-49
3-50
3-50
3-51
3-52
3-54
3-55
3-57
3-58
3-58
3-59
3-60
3-60
3-61
3-62
3-63
3-64
3-65
3-69
3-69
3-71
3-71
3-72
3-73
3-74
i-4
Alimentacin nica mediante F. Alimentacin externa (no incluida) de 9 a 15VDC con positivo al
centro. El laboratorio incorpora los circuitos de filtrado, estabilizacin, piloto e interruptor ON/OFF.
Admite dispositivos PIC de 8, 18, 28 y 40 patillas de las familias 12FXXX, 16FXXX y 18FXXX. De
serie se suministra con el moderno PIC16F886 de 28 pines (versin muy mejorada del PIC16F876).
1-1
Oscilador integrado a cristal de cuarzo encapsulado en DIP8 para generar la frecuencia general de
trabajo del sistema. El oscilador suministrado de serie es de 4MHz, se inserta sobre un zcalo de 8
pines y es fcilmente intercambiable por otros osciladores con otras frecuencias.
Integra el hardware necesario para la depuracin y/o grabacin del dispositivo. Dicho hardware es
compatible con el PICKIT2 de Microchip y, por tanto, se puede controlar mediante sus herramientas
software originales (MPLAB y PICKIT).
Todos los puertos con las lneas de E/S del PIC son accesibles mediante bloques de conectores que
permiten una rpida y sencilla conexin con los perifricos a controlar.
No hay conexiones predeterminadas. Cualquier perifrico se puede conectar a cualquier lnea de E/S.
Acceso a los perifricos mediante bloques de conectores que permiten realizar un rpida y fiable
conexin con las lneas de E/S del PIC. Basta emplear cable rgido de conexiones de 0.6 mm de
grosor.
Interface serie estndar RS232 con conector DB9 hembra y acceso para la gestin y control de las
seales TxD, RxD, CTS y RTS.
Reloj/calendario en tiempo real (RTC) alimentado mediante pila (incluida) y sensor de temperatura.
Ambos dispositivos se gestionan mediante el bus I2C y 1-Wire, lo que permite el aprendizaje y
empleo de estos protocolos tan empleados en las aplicaciones de carcter comercial.
8 salidas digitales pilotadas mediante leds de un elegante color azul de 3 mm y alto contraste.
Dos displays de 7 segmentos de 0.5 y nodo comn, en color azul y alto contraste. Permiten conocer
las tcnicas de decodificacin y visualizacin mediante barrido secuencial
4 salidas digitales de alta corriente mediante drivers de 4 canales a 0.6A cada uno. La tensin de
salida de estos canales se selecciona mediante jumper y puede ser fija de +5Vcc o bien una tensin
externa de referencia de hasta 36V. Tanto las salidas como la entrada de tensin externa son
accesibles mediante bornas o clemas de paso 5.08 para la conexin de cargas de consumo elevado
(rels, motores DC, motores PAP, etc.)
Pantalla LCD de 2 x 16 caracteres en blanco sobre fondo azul, y conectores que permiten el interface
a 4 u 8 bits.
8 entradas digitales formadas por 4 interruptores y 4 pulsadores activos por transicin 1-0-1.
1-2
Generador lgico de onda cuadrada con frecuencia de salida ajustable de 1Hz, 10Hz, 100Hz y 1KHz
y pilotada mediante leds.
Mdulo board de 550 contactos para el montaje sin soldadura de todo tipo de circuitos de adaptacin,
perifricos, etc..
Conector de expansin PIC-BUS 2 de 40 vas que transporta todas las seales del PIC y que permite
la conexin de todo tipo de tarjetas y circuitos externos. Este conector es 100% compatible con el de
otros productos MSE: (PICControl, GraphicLab, etc..)
1-3
Laborattorio US
L
SB-PICS
School:: Manua
al de Us
suario
T
TEMA
1 EL Ha
1:
ardware
e
Figura 1-2. Se
ecciones de USB-PICScchool
1-4
El esquema elctrico se muestra en la figura 1-4. A travs del conector CN1 se aplica la tensin de 9 a
15VDC procedente de un alimentador estndar con el positivo al centro. El interruptor SW7 conecta la
alimentacin del sistema. El diodo D1 evita la polarizacin inversa y con ello los daos que se pudieran
ocasionar al equipo. El regulador U1 estabiliza la tensin a +5Vcc 1A mximo con la que trabaja el equipo. Dicha
tensin, junto con GND estn disponibles en el conector AP1 y AP2 respectivamente para alimentar a los
circuitos y prototipos del usuario. En el conector AP3 est disponible tambin la tensin de entrada sin estabilizar
+Vin para aquellos circuitos que la requieran. El diodo led D3 indica la presencia de tensin +5Vcc.
AP1
3
2
1
D1
2
ON/OFF
U1
UA7805/TO
IN
GND
SW7
1N4148
+5Vcc
1
2
3
4
D3
Vcc ON
GND
C6
100n
+
C25
100uF
AP2
R3
470
9-15VDC
OUT
+5Vcc
CN1
1
2
3
4
AP3
1
2
3
4
+Vin
F. DE
ALIM ENTACION
1.3.2 El oscilador
Se encarga de generar la frecuencia principal de
trabajo del microcontrolador. Su esquema se muestra en la
figura 1-5.
Est formado por el dispositivo integrado X1
y la red RC formada por R23 y C3. Mediante el jumper JP1
se obtiene la seal de reloj CLKIN. Cerrando 1-2 dicha seal
la proporciona el oscilador X1. Cerrando 2-3 la seal se
obtiene de la red RC. El valor de estos componentes
determina la frecuencia de la misma (consultar parmetros
proporcionados por Microchip)
Figura 1-5. Circuito oscilador
1-5
+5Vcc
OSCILADOR
PRINCIPAL
1
2
X1
NC
VCC
GND
OUT
OSCILADOR
+5Vcc
R23
4K7
JP1
3
1
CLKIN
C3
22p
1-6
CLKIN/GP5
MCLR/GP3
VDD
GP5
GP4
GP3
GND
GP0
GP1
GP2
8
7
6
5
GP0/PGD
GP1/PGC
MCLR/RA5
PIC8PINES
1
2
3
4
5
6
7
8
9
RA2
RA3
RA4
RA5
GND
RB0
RB1
RB2
RB3
RA1
RA0
RA7
RA6
VDD
RB7
RB6
RB5
RB4
18
17
16
15
14
13
12
11
10
CLKI/RA7
CLKOUT/RA6
RB7/PGD
RB6/PGC
PIC18PINES
MCLR/RE3
MCLR/RE3
CLKI/RA7
CLKOUT/RA6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
RE3
RA0
RA1
RA2
RA3
RA4
RA5
GND
RA7
RA6
RC0
RC1
RC2
RC3
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
VDD
GND
RC7
RC6
RC5
RC4
28
27
26
25
24
23
22
21
20
19
18
17
16
15
RB7/PGD
RB6/PGC
CLKI/RA7
CLKOUT/RA6
PIC28PINES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
RE3
RA0
RA1
RA2
RA3
RA4
RA5
RE0
RE1
RE2
VDD
GND
RA7
RA6
RC0
RC1
RC2
RC3
RD0
RD1
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
VDD
GND
RD7
RD6
RD5
RD4
RC7
RC6
RC5
RC4
RD3
RD2
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
RB7/PGD
RB6/PGC
PIC40PINES
JUMPER
JP2
POSICION
1-2
2-3
JP3
1-2
2-3
18 Pines
JP4
1-2
2-3
JP5
1-2
2-3
28/40
Pines
JP5
1-2
2-3
JP6
1-2
2-3
DESCRIPCION
Por defecto CLKIN. Entrada de reloj externo que se obtiene desde el
oscilador principal.
GP5. Lnea de E/S de propsito general si est disponible en el
dispositivo.
Por defecto PICMCLR. Entrada de reset externo. Imprescindible en los
ciclos de lectura/grabacin del dispositivo.
GP3. Lnea de E/S de propsito general si est disponible en el
dispositivo.
Por defecto PICMCLR. Entrada de reset externo. Imprescindible en los
ciclos de lectura/grabacin
RA5. Lnea de E/S de propsito general si est disponible en el
dispositivo.
Por defecto CLKIN. Entrada de reloj externo que se obtiene desde el
oscilador principal.
RA7. Lnea de E/S de propsito general si est disponible en el
dispositivo.
Por defecto CLKIN. Entrada de reloj externo que se obtiene desde el
oscilador principal.
RA7. Lnea de E/S de propsito general si est disponible en el
dispositivo.
Por defecto PICMCLR. Entrada de reset externo. Imprescindible en los
ciclos de lectura/grabacin del dispositivo.
RE3. Lnea de E/S de propsito general si est disponible en el
dispositivo.
1-7
GP3
JP4
GP4
GP5
3
RA2
RA3
RA4
JP3
+5Vcc
1
2
3
4
PIC1
VDD
GP5
GP4
GP3
C7
100n
8
7
6
5
CLKIN
100n
GND
GP0
GP1
GP2
C8
RA1
RA0
RA7
RA6
VDD
RB7
RB6
RB5
RB4
PIC18PINES
RA2
RA3
RA4
RA5
GND
RB0
RB1
RB2
RB3
PIC2
PIC8PINES
1
2
3
4
5
6
7
8
9
18
17
16
15
14
13
12
11
10
PICDATA
PICCLK
GP2
+5Vcc
RA1
RA0
RA6
PICDATA
PICCLK
RB5
RB4
JP5
1
JP6
RE3
PICMCLR
RA7
RA0
RA1
RA2
RA3
RA4
RA5
RA6
RC0
RC1
RC2
RC3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
PIC3
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
VDD
GND
RC7
RC6
RC5
RC4
PIC28PINES
RE3
RA0
RA1
RA2
RA3
RA4
RA5
GND
RA7
RA6
RC0
RC1
RC2
RC3
C9
100n
28
27
26
25
24
23
22
21
20
19
18
17
16
15
+5Vcc
PICDATA
PICCLK
RB5
RB4
RB3
RB2
RB1
RB0
RC7
RC6
RC5
RC4
+5Vcc
RA0
RA1
RA2
RA3
RA4
RA5
RE0
RE1
RE2
RA6
RC0
RC1
RC2
RC3
RD0
RD1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
PIC4
C10
100n
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
VDD
GND
RD7
RD6
RD5
RD4
RC7
RC6
RC5
RC4
RD3
RD2
PIC40PINES
RE3
RA0
RA1
RA2
RA3
RA4
RA5
RE0
RE1
RE2
VDD
GND
RA7
RA6
RC0
RC1
RC2
RC3
RD0
RD1
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
PICDATA
PICCLK
RB5
RB4
RB3
RB2
RB1
RB0
RD7
RD6
RD5
RD4
RC7
RC6
RC5
RC4
RD3
RD2
1-8
RB0
RB1
RB2
RB3
RA5
P2
10K
P1
10K
R6
470
1
2
3
4
5
6
7
8
R5
470
AP16
ENTRADAS ANALOGICAS
ENTRADAS ANALOGICAS
Segn el esquema, las lneas de los potencimetros son directamente accesibles desde el bloque de
conexin AP16 correspondiente y se las puede conectar cualquier tipo de circuito elctrico analgico.
1-9
RP4 SIL
5
4
3
2
1
10K
1
2
3
4
5
10K
+5VCC
+5VCC
SW5
SW4
SW3
SW11 2
SW10 2
SW9 2
SW8 2
E0
E1
E2
E3
E4
E5
E6
E7
SW6
RP5 SIL
R15
470
R14
470
R13
470
R12
470
R11
470
R10
470
R9
470
R8
470
1
2
3
4
5
6
7
8
E0
E1
E2
E3
E4
E5
E6
E7
AP18
ENTRADAS DIGITALES
ENTRADAS
DIGITALES
FREQ.SELEC.
SW2
R16
+5VCC
+5VCC
U6
4
SEL
1Hz
10K
10Hz
1
C20
100n
VDD
100Hz
1KHz
GND
SY M-10
GENERADOR LGICO
OUT
D14
1Hz
D15
10Hz
D16
100Hz
D17
1KHz
2K2
3
AP8
4
3
2
1
R28
FREQ. OUT
1-10
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
8
7
6
5
4
3
2
1
F3
F2
F1
F0
C3
C2
C1
C0
>
<
TECLADO4X4
La rutina software encargada de explorar el teclado tiene que determinar qu tecla se ha pulsado. Para
ello, por ejemplo, se configura las lneas RB0-RB3 (las columnas) como salidas y RB4-RN7 (las filas) como
entradas. Secuencialmente se van activando cada una de las columnas al tiempo que se lee el estado de las
filas. Cuando se detecta que una fila est activa es porque se pulso una tecla. Basta conocer qu columna se
1-11
1
2
3
4
5
6
7
8
9
RP2 SIL
2K2
S7
S6
S5
S4
D13
D12
D11
D10
S3
D9
S2
D8
S1
D7
1
2
3
4
5
6
7
8
S0
S1
S2
S3
S4
S5
S6
S7
AP17
SALIDAS DIGITALES
SALIDAS
DIGITALES
1-12
S0
D6
GND
L293D
VCC
JP7
3
OUT1
OUT2
11
OUT3
14
OUT4
U4
16
+5VCC
IN1
IN2
IN3
GND
EN2
VDD
GND
IN4
GND
EN1
12
S1
13
S2
S3
S4
+VM
GND
C18
10
15
100n
+5VCC
1
2
3
4
E1
E2
E3
E4
AM PLIFICADOR DE
F
4 CANALES
AP6
ENTRADAS AL DRIVER
1-13
CN5
C15
100n
R1IN
R2IN
R1OUT
R2OUT
C1+
C1-
C2+
C2-
V+
V-
RTS
TxD
CTS
RxD
13
8
14
7
4
5
C16
100n
GND
C14
100n
MAX232
C13
RTS
CTS
RxD
TxD
+5VCC
ROJO (Tx)
VERDE (Rx)
R7
470
100n
CANAL
SERIE
RS-232
4
3
2
1
AP5
INTERFACE RS-232
D5
C17
100n
15
1
3
U3
T1OUT
T2OUT
T1IN
T2IN
Vcc
12
9
11
10
16
RTS
RxD
CTS
TxD
5
9
4
8
3
7
2
6
1
CANAL SERIE
+5VCC
1-14
1
2
3
4
AP10
a
b
c
d
e
f
g
dp
AC
330
10
9
7
5
4
2
1
6
a
b
c
d
e
f
g
dp
10
9
7
5
4
2
1
6
AC
DATOS
16
15
14
13
12
11
10
9
U9 UNIDADES
LSD356DBK-20
1
2
3
4
5
6
7
8
a
b
c
d
e
f
g
dp
AC
1
2
3
4
5
6
7
8
U8 DECENAS
LSD356DBK-20
AC
RP1 DIL
AP21
DECENAS
UNIDADES
Q5
BC547
Q6
BC547
CONTROL
+5VCC
1-15
Este potente perifrico de salida va a permitir representar cualquier tipo de mensaje compuesto de letras,
nmeros y smbolos produciendo adems diferentes efectos de visualizacin como desplazamientos a izquierda
y derecha, parpadeos, scrolls, etc.
La transferencia de informacin entre la pantalla LCD y el microcontrolador se realiza en paralelo en
grupos de 4 u 8 bits de datos y se conecta con las lneas de E/S mediante el conector AP20. El esquema
elctrico se muestra en la figura 1-27.
Existe adems otro conector, el AP9, donde se conectan las seales que controlan el flujo y tipo de
informacin que se transfiere. Con la seal RS se determina si la pantalla recibe el cdigo ASCII del carcter a
visualizar (nivel 1) o bien un cdigo de instruccin (nivel 0). Mediante la seal RW el microcontrolador informa
a la pantalla LCD si se va a leer o escribir sobre la misma. Finalmente, con la seal E, se habilita o no a esa
pantalla. Cuando esta seal vale 0 la pantalla queda desconectada, las lneas de datos quedan en alta
impedancia. Cuando vale 1 , la pantalla queda habilitada para recibir o mandar datos.
U7
LCD
INTERFACE LCD
R18
L0
L1
L2
L3
L4
L5
L6
L7
+5VCC
C21
100n
3
2
1
E
RW
RS
6
5
4
D7
D6
D5
D4
D3
D2
D1
D0
14
13
12
11
10
9
8
7
16
15
LL+
1K
GND
4
3
2
1
AP20
DATOS
8
7
6
5
4
3
2
1
RS
RW
E
AP9
CONTROL
+5VCC
1-16
+5VCC
32.768KHz
1
2
3
8
C19
BT1
U5
DS1307
X1
X2
VBAT
VCC
AP7
SDA
SCL
SQW/OUT
SDA
4
SCL
SQW 3
1-Wire 2
1
5
6
7
I2C
GND
U10
3V
1
2
3
100n
GND
DQ
VCC
DS18S20
+5VCC
DS18S20
1
1-17
El modo RUN se emplea cuando el dispositivo est grabado. Las tres seales del PIC anteriormente
mencionadas se consideran lneas de E/S de propsito general y estn disponibles a travs de los bloques de
conexin correspondientes, para ser utilizadas por los perifricos de la aplicacin.
En el modo ICSP el laboratorio queda configurado para que el PIC actual en l insertado se pueda
Depurar/Grabar a travs de las seales que se aplican mediante el conector RJ11 (ICSP- In Circuit Serial
Programming). Estas seales a su vez las debe proporcionar un depurador/grabador externo dotado de su
correspondiente software. Por ejemplo entre otros, se pueden emplear los sistemas ICD2 o ICD3 de Microchip
que tambin, al igual que nuestro USB-PICSchool, se controlan y gestionan mediante el entorno integrado de
desarrollo MPLAB-IDE. Este se puede obtener y actualizar de forma gratuita desde www.microchip.com.
1-18
1-19
1-20
MPLAB-IDE V8.36
PICkit 2 V2.61
Las capacidades de depuracin del USB-PICSCHOOL permiten la ejecucin del programa de aplicacin
en tiempo real, con puntos de ruptura (BreakPoints) y paso a paso. As, es posible visualizar los registros
internos y hacer un seguimiento analizando el contenido de los mismos conforme se van ejecutando las
instrucciones del programa. Tambin es posible modificar ese contenido para estudiar y seguir la repercusin
que esto puede provocar en el curso de la ejecucin. Todo ello en tiempo real y sin extraer el PIC de nuestro
laboratorio, empleando la tcnica conocida como ICD=In Circuit Debugger (Depuracin en Circuito).
Las limitaciones de depuracin/grabacin del USB-PICSCHOOL son las mismas que las del PICkit-2 de
Microchip y estn sujetas a las limitaciones inherentes al controlador que se vaya a emplear. Algunos
controladores, los ms antiguos, no admiten depuracin en circuito (ICD). Algunos admiten un nico punto de
ruptura o breakpoint y otros admiten varios. Para este tipo de detalles es necesario consultar la informacin
tcnica especfica del controlador y que suministra el fabricante en sus correspondientes data sheet y/o en el
entrono de desarrollo MPLAB-IDE. En el CDROM se adjunta la informacin tcnica del PIC16F866 que se
incluye en el laboratorio.
2.2 DESCRIPCION
La figura 2-1 muestra la seccin de
Depuracin/Grabacin que integra el laboratorio
USB-PICSchool y en donde se destacan los
elementos ms importantes, que se comentan a
continuacin:
2-1
Se trata de un conector USB hembra tipo B para la conexin con un puerto USB del PC. Para
ello se emplea un cable adaptador macho tipo B a macho tipo A, que se incluye en el equipo.
2.
Este led se activa siempre que el USB-PICSCHOOL est realizando algn ciclo activo
transfiriendo informacin hacia/desde el PC a travs del puerto USB.
3.
Conector RJ11 para la conexin, en modo ICSP, con otros dispositivos externos que se
encarguen de la Depuracin/Grabacin. Contiene las seales propias de grabacin: PGC, PGD,
GND, Vcc y MCLR/Vpp, conocidas como seales ICSP In Circuit Serial Programming
(Programacin Serie en Circuito). Estn distribuidas como se muestra en la figura 2-2 y en la
siguiente tabla.
NPIN
1
2
3
4
5
6
SEAL
MCLR/Vpp
VDD
GND
PGD
PGC
NC
DESCRIPCION
Seal Vpp de grabacin
Alimentacin +VDD
Tierra de alimentacin
Seal de datos
Seal de reloj
No conectada
4.
5.
2-2
En el presente documento no pensamos hacer un manual de usuario del MPLAB-IDE. En el CDROM que
acompaa a nuestro laboratorio USB-PICSCHOOL se incluye una copia original en Ingles del manual que
proporciona Microchip.
Lo que si haremos ser un pequeo resumen de todas las operaciones relacionadas con la grabacin de
los dispositivos instalados en USB-PICSchool que, a todos los efectos, es compatible con la herramienta
PICKit-2 de Microchip.
IMPORTANTE !! para realizar cualquier operacin de depuracin y/o grabacin es imprescindible colocar el
conmutador en la posicin USB. Una vez grabado el controlador con un programa funcional, dicho conmutador
se coloca en la posicin RUN para ejecutar la aplicacin de forma autnoma.
2.3.1 Instalacin
La instalacin de MPLAB-IDE
es totalmente automtica y no supone
ninguna complicacin. Basta con seguir
paso a paso las instrucciones que van
apareciendo. En la figura 2-3 se
muestra la pantalla principal de
MPLAB-IDE para hacer una breve
descripcin de las opciones del men
principal.
Contiene todas las opciones y comandos relacionados con el manejo de ficheros: abrir fichero,
salvar fichero, imprimir, importar, exportar, etc..
Edit
Contiene todas las opciones y comandos tpicos de cualquier editor de texto: buscar, buscar y
sustituir, cortar, pegar, marcar, etc..
View
Con esta opcin podemos abrir, visualizar y organizar sobre el rea de trabajo diferentes tipos de
ventanas relacionadas con el PIC seleccionado: memoria de programa, memoria de datos,
registros especiales, EEPROM, etc..
Project
Presenta todos los comandos y opciones relacionados con los proyectos: abrir proyecto, cerrar,
salvar proyecto, ensamblar y/o compilar, etc..
2-3
Programmer
Tools
Mediante este men se accede a una serie de utilidades y herramientas software que, en
sucesivas versiones de MPLAB-IDE, van apareciendo.
Configure
Windows
Selecciona diferentes formas de visualizacin de las distintas ventanas que podemos visualizar
sobre el rea de trabajo.
Help
2-4
Figura 2-5. Tipos de grabadores admitidos por la versin actual del MPLAB-IDE
Vemos una lista de los sistemas de grabacin que el MPLAB-IDE puede emplear para grabar el
dispositivo PIC16F886 seleccionado. En nuestro caso seleccionamos el PICKit-2 que es compatible con el
USB-PICSCHOOL que disponemos en estos momentos.
Inmediatamente el MPLAB-IDE trata de
establecer conexin con nuestro USB-PICSCHOOL
(compatible con PICKit-2). Si todo est va bien nos
debe aparecer en la ventana Output una serie de
mensajes como los mostrados en la figura 2-6, que
nos indican que se ha localizado el PICKit-2, la
alimentacin es de 4.98V y que el PICKit-2 (USBPICSchool) se encuentra listo y conectado.
Figura 2-6.
PICSCHOOL)
Conexin
con
PICKit-2
(USB-
Si en el scalo del laboratorio estuviera insertado el PIC seleccionado anteriormente, tambin aparecera
el mensaje PIC16F886 found (Rev 0x2) indicando que dicho PIC ha sido identificado. En caso de que el PIC no
estuviera insertado en el zcalo, aparecera el mensaje PKWarn0003: Unexpected device ID: Please verify that
a PIC16F886 is correctly installed in the application. (Expected ID = 0xE00, ID Read = 0x0). Esto nos recuerda
que debemos insertarlo para poder proceder con las operaciones propias del grabador.
2-5
Memoria de programa. Contiene el cdigo hexadecimal de las instrucciones del programa que el
controlador debe ejecutar.
Memoria de datos. Contiene informacin adicional o datos que se grabarn en la memoria EEPROM de
datos del controlador.
Memoria de configuracin. Contiene informacin sobre la configuracin del controlador y valores de
identificacin.
El MPLAB-IDE dispone de otros tantos buffers de memoria. Cada vez que se ensambla o compila un
programa fuente se genera el correspondiente fichero HEX y esos buffers se llenan con el resultado hexadecimal
de ese ensamblado de forma que, posteriormente, puedan copiarse o grabarse sobre la memoria fsica del PIC.
Mediante la comando File Import tambin es posible importar ficheros HEX procedentes de otras
fuentes distintas a las generadas por el MPLAB-IDE. Sea como fuere, cada vez que se abre un fichero HEX, los
tres buffers de memoria del MPLAB-IDE se llenan con sus correspondientes contenidos: memoria, datos y
configuracin, para su posterior grabacin sobre el PIC.
Los buffers del MPLAB tambin se pueden llenar manualmente con contenidos hexadecimales, mediante
los correspondientes comandos:
View Program Memory: Permite visualizar y modificar el contenido del buffer correspondiente a la
memoria de programa
View EEPROM: Permite visualizar y modificar el contenido del buffer correspondiente a la memoria
EEPROM de datos.
Configure Configuration Bits: Permite visualizar y modificar los bits de configuracin del buffer
correspondiente a la memoria de configuracin.
Configure ID Memory: Permite visualizar y modificar los datos ID de identificacin del buffer
correspondiente a la memoria de configuracin.
Una vez hemos abierto u obtenido un fichero HEX, los tres buffers de memoria del MPLAB-IDE
contendrn la informacin necesaria que deber grabarse en las memorias del controlador, tal y como veremos a
continuacin.
2.3.5 Funciones ms comunes del grabador
Cuando se ha seleccionado el tipo de grabador
(PICKit-2 = USB-PICSCHOOL) y se ha realizado la
conexin con l, se activan todas las opciones que se
encuentra en el men Programmer y que son propias
de un tpico grabador. Ver la figura 2-7.
La primera opcin, Select Programmer, se
emple anteriormente para seleccionar el tipo de
grabador que vamos a emplear. En nuestro caso
seleccionamos el PICKit-2 que es compatible con
nuestro USB-PICSCHOOL. A continuacin se detallan
las opciones restantes.
Program
Realiza el proceso de grabacin propiamente dicho. Copia los contenidos de la memoria de programa,
memoria de datos y memoria de configuracin actual en los buffer del MPLAB-IDE, sobre las correspondientes
memorias fsicas del controlador.
2-6
Conectar automticamente al empezar. Cada vez que se selecciona el programador PICKit-2 (USBPICSCHOOL) se procede automticamente a la conexin con el mismo. En caso contrario hay que
ejecutar manualmente el comando Programmer Connect
2-7
En la pestaa Warnings tenemos la posibilidad de activar o no los mensajes y avisos que deseamos que
aparezcan si se producen determinados eventos.
2.3.6 Iconos de grabacin
La mayor parte de las opciones del men Programmer se pueden ejecutar mediante una serie de
iconos de acceso directo como los mostrados en la figura 2-9.
2-8
2-9
2-10
Tambin tenemos acceso a la memoria de configuracin haciendo click sobre el enlace Configuration.
La figura 2-14 muestra el valor actual, en binario, de la palabra o palabras de configuracin del PIC16F886 tal y
como se obtuvo al leer el fichero HEX de ejemplo.
2-11
Permite leer la memoria del PIC y el contenido lo copia sobre los buffers de memoria del
software PICKit-2.
Write:
Lee el contenido de los buffers de memoria del software PICKit-2 y lo graba sobre la memoria
fsica del PIC.
Verify:
Verifica que el contenido de los buffers sea el mismo que el contenido del PIC
Erase:
Borra tanto los buffers de memoria del software PICKit-2 como la memoria fsica del PIC
Blank Check
Pulsamos el botn Write para proceder a grabar el controlador con el contenido de los buffers, previo
borrado del mismo. En la ventana de estado tendremos constancia de si ha habido algn problema o bien el ciclo
de grabacin se realiz correctamente.
Tambin es posible actuar nicamente sobre las regiones de memoria que deseemos dentro del PIC.
Efectivamente, en el la parte superior izquierda tanto del buffer de memoria de programa (Program Memory)
como del buffer de la memoria de datos (EEPROM Data), disponemos de sendos CheckBox para habilitar
(Enabled) o no el buffer correspondiente. Seleccionamos as sobre qu regiones deseamos o no actuar con las
diferentes opciones y segn la siguiente tabla:
CHECKBOX
Memoria de
Memoria EEPROM
Programa
de datos
Activado
Activado
Activado
Desactivado
Desactivado
Activado
Desactivado
Desactivado
OPCIONES
Write/Read/Verify
Erase/Blank Check
Todas las regiones de
memoria del PIC
Memoria de programa y
memoria de configuracin
nicamente la memoria
EEPROM de datos
No permitido
2-12
2-13
2-14
Figura 2-18.
PICSCHOOL)
Conexin
del
PICkit-2
(USB-
2-15
Clear Memory
Borra las diferentes regiones o reas de memoria
que se emplean durante la depuracin y que se pueden
seleccionar mediante el men desplegable como el
mostrado en la figura 2-20. All memory borra todas las
regiones, Program Memory borra slo la memoria de
programa, GPRs borra la memoria RAM de datos,
EEPROM borra la memoria EEPROM de datos y
Configuration Bits borra la palabra de configuracin.
Estas regiones de memoria del MPLAB-IDE se
pueden visualizar y/o modificar mediante el comando
View del men principal y se corresponden con las
regiones o reas de memoria fsica del PIC.
Run
Ejecuta en tiempo real las instrucciones que en ese momento se encuentren en la regin o rea de
memoria de programa del PIC. Dichas instrucciones forman el programa ejecutable que se habr obtenido en el
ltimo ensamblado realizado, o bien, como consecuencia de haber abierto un fichero HEX cuyo contenido se ha
de grabar previamente en el dispositivo.
2-16
2-17
2-18
2-19
Ahora basta con ejecutar el programa en tiempo real (Run). Todas las instrucciones comprendidas entre
la posicin actual del PC (flecha verde) y el crculo rojo (breakpoint) se ejecutarn en tiempo real, a la velocidad
propia del controlador.
2-20
Advanced Breakpoints
Esta opcin est destinada a las herramientas hardware de alto nivel para la emulacin en tiempo real
como son el ICE2000 y el ICE4000. No funciona por tanto con el depurador de USB-PICSCHOOL; est
deshabilitada.
Los Breakpoints avanzados permiten establecer muchas y complejas condiciones de parada durante la
emulacin/depuracin del programa de aplicacin del usuario. Puntos de parada no slo basados en la direccin
de una instruccin como se vio anteriormente.
Permite establecer condiciones tales como Cuando el PC se encuentre en la direccin X, se est
realizando un ciclo de escritura sobre la posicin Y de memoria RAM, el valor del registro Z sea igual a 0x033 y
esta condicin se repita 18 veces, entonces se produce la parada y la ejecucin se detiene.
Programm
Esta opcin permite grabar directamente el contenido de las distintas reas de memoria del MPLAB-IDE
sobre las correspondientes regiones de la memoria fsica del PIC. Es especialmente til para grabar la
informacin directamente importada desde un fichero HEX.
Efectivamente, con esta opcin no es necesario abrir un programa fuente (ASM o C) ni ensamblarlo o
compilarlo. Basta con abrir un fichero HEX mediante File Import , que contenga la informacin a grabar.
Read
Es la opuesta a la anterior. Lee el contenido de las diferentes regiones de memoria del PIC y lo deposita
sobre las correspondientes reas de memoria del MPLA IDE.
Mediante File Export podemos guardar la informacin recin leda sobre un fichero HEX.
2-21
Settings
Con esta opcin se abre una ventana similar a la mostrada en la figura 2-26 y que permite activar o no
una serie de procesos internos. En la pestaa Settings hemos elegido los tres que consideramos ms
importantes:
2-22
2-23
2-24
El primer paso para el diseo del software de una aplicacin es editar el programa fuente. Para
ello se puede emplear cualquier editor de textos tpico y que sea capaz de guardar ficheros de
texto tipo ASCII como pueden ser el WordPad o el Bloc de notas incluidos en Windows, el
Microsoft Word, etc.. El entorno de desarrollo MPLAB-IDE que proponemos, integra un completo
editor de textos sin necesidad de tener que recurrir a ningn otro.
Se escribe el programa fuente siguiendo la sintaxis propia del lenguaje de programacin que
estemos empleando: Ensamblador, C, BASIC, etc.. La extensin del archivo que contiene el
programa fuente suele indicar el tipo de lenguaje para el que est escrito (*.ASM, *.C, *.BAS,
etc..).
Ensamblar y/o compilar consiste en traducir el programa fuente escrito mediante el editor de
textos, en su equivalente en cdigo mquina o hexadecimal. Para ello existen diferentes
herramientas segn el tipo de lenguaje empleado. Las herramientas para traducir cdigo
ensamblador suelen ser gratuitas y estn disponibles en la web del fabricante. En el caso de
Microchip el propio MPLAB-IDE integra el ensamblador.
Las herramientas compiladoras para C, BASIC o cualquier otro tipo de lenguaje de alto nivel,
suelen tener un determinado coste. De todas formas es posible encontrar en la red versiones
shareware de las mismas, versiones demo e incluso versiones para su evaluacin.
3-1
En el proceso de traduccin se pueden producir errores. Estos errores son siempre de tipo
sintctico. Es decir, la herramienta empleada para la traduccin ha encontrado alguna
incongruencia en el programa fuente, instrucciones desconocidas, parmetros incorrectos, etc.
Es algo as como si se detectaran faltas de ortografa. En este caso el proceso se detiene y se
debe volver al editor del programa fuente (punto 1) para corregir los errores encontrados.
Cuando un programa fuente est correctamente escrito, los ensambladores y/o compiladores
generan una serie de archivos. Uno de ellos, el ms importante, contiene el resultado de la
traduccin, es decir el cdigo mquina o hexadecimal. La extensin de este archivo es *.HEX. El
resto de archivos suelen ser archivos auxiliares y contienen informacin de la traduccin,
listados, informacin para simulacin, depuracin, emulacin, etc.. Suelen ser necesarios y
empleados por las herramientas hardware/software para la depuracin, emulacin y/o
simulacin.
Obtenido el fichero ejecutable *.HEX debemos ahora verificar su funcionamiento. Para ello todos
los fabricantes disponen de una serie de herramientas hardware/software que permiten
comprobar el correcto funcionamiento del programa de aplicacin recin obtenido y, en su
defecto, facilitar la localizacin del/los fallo/s.
La herramienta ms profesional pero de mayor coste es la conocida como Emulador. Est
formado por un hardware y un software especial que permiten un anlisis en tiempo real del
resultado de la ejecucin. El emulador se conecta fsicamente en el hardware de la aplicacin del
diseo sustituyendo a todos los efectos y, sin ningn tipo de restriccin, al microcontrolador que
en dicho hardware debiera estar insertado. Mediante el software de emulacin adecuado el
emulador ejecuta el programa de aplicacin como si del propio microcontrolador se tratara,
controlando en tiempo real a todos los perifricos existentes. Es posible detener la ejecucin en
un momento determinado (breakpoint), ejecutar paso a paso todas las instrucciones,
visualizar/modificar los registros internos, analizar tiempos de ejecucin, registrar sucesos o
eventos externos y un largo etctera.
En el caso de los PICs, Microchip dispone de sendos emuladores como el IC2000 y el IC4000
cuyo control se realiza mediante el conocido entorno integrado MPLAB-IDE. Tambin existen
varios fabricantes o terceras partes que comercializan este tipo de herramientas para estos
microcontroladores.
En un trmino medio y a un coste bastante asequible nos encontramos con los Depuradores en
Circuito (ICD) como el que integra el laboratorio USB-PICSchool (compatible con el PICkit-2).
Algunos microcontroladores, como es el caso de algunos dispositivos PIC, incorporan en su
interior mecanismos de depuracin integrados. Basta un sencillo hardware externo llamado ICD
para comunicar dichos mecanismos con el software de depuracin. Gracias al sistema ICD el
programa de aplicacin del usuario se graba fsicamente sobre el propio microcontrolador al que
se le supone insertado en el hardware final (p.e. el USB-PICSchool). Este programa se ejecuta
por tanto en tiempo real gestionando as todos los perifricos que hubiera conectados. El ICD
tambin permite el empleo de puntos de parada (breakpoints), ejecucin paso a paso,
visualizacin/modificacin de registros, etc..
Puesto que el ICD es una herramienta de bajo coste, tambin tiene una serie de limitaciones o
restricciones. Dado que se emplean algunos recursos del propio microcontrolador, estos no
estn disponibles para el usuario. Consume parte del rea de programa, algunas lneas de E/S y,
cada vez que se modifique el programa de aplicacin, es necesario volver a re grabarlo sobre el
microcontrolador con el desgaste que esto supone. En ningn caso se puede por tanto comparar
un Depurador con un Emulador. De estas restricciones ya hablemos en el apartado de
Depuracin del tema anterior. Decir que el entorno MPLAB-IDE tambin da soporte a la
depuracin mediante los sistemas ICDx y el PICkit-2 (compatible con el depurador del laboratorio
USB-PICSchool).
Por ltimo nos encontramos con las herramientas de simulacin. Es la solucin menos
profesional pero la mayor parte de fabricantes la distribuyen de forma gratuita a sus usuarios. Se
trata de un software que se ejecuta en el PC y trata de simular el comportamiento del
3-2
El ltimo paso consiste en hacer las pruebas finales y definitivas. El microcontrolador recin
grabado se inserta en el hardware final de la aplicacin donde se verifica el correcto
funcionamiento de todo el conjunto hardware/software.
3-3
Este gestor nos va guiando a definir el proyecto y se puede resumir en los siguientes pasos:
1
3-4
Dar nombre al proyecto e indicar la carpeta donde ha de guardarse, tal y como se muestra en la figura 3-5.
En este caso el proyecto se
denomina Ejemplo 1 y se guardar en
la carpeta que seleccionemos al pulsar
Bowse
Esta carpeta es la que se sugiri
crear anteriormente para guardar en ella
todos los programas fuentes de ejemplo
(*.ASM) que se suministran en el CDROM.
Figura 3-5.
proyecto
Asignando
nombre
al
Asignar el programa fuente asociado al proyecto. Ver la figura 3-6. En el caso que nos ocupa los
programas de ejemplo se supone estn editados y almacenados en una carpeta creada por el usuario y
procedentes del CD-ROM. De esta manera evitamos tener que teclearlos. En otros casos habra que
editarlos mediante el editor de textos que dispone el propio MPLAB-IDE.
3-5
Seleccionamos el fichero
Ejemplo 1.asm y se pulsa el
botn Add. Al proyecto Ejemplo 1
le hemos asignado el programa
fuente Ejemplo 1.asm
Conviene indicar que un
proyecto puede tener asignado
ms de un programa fuente.
Por ltimo el gestor de proyectos presenta una ventana resumen como la mostrada en la figura 3-7
donde se resume el proyecto.
Se indica tipo de dispositivo
empleado,
herramienta
de
ensamblado/compilacin
y
carpeta y nombre del fichero
que contiene el proyecto.
Cuando
se
pulsa
Finalizar se visualiza la ventana
principal de MPLAB-IDE que
muestra el rea de trabajo y
una pequea ventana que
resumen al proyecto Ejemplo
1.mcp y los ficheros asociados.
Tambin podemos configurar el rea de trabajo de MPLAB a nuestro gusto, visualizando las ventanas
que nos interesen, su tamao, posicin, etc.. Por ejemplo y, como referencia, podemos abrir el programa fuente
para tenerlo siempre a la vista. Se emplea la opcin File/Open del men principal y se busca y selecciona el
fichero Ejemplo 1.asm. Mediante la opcin View se pueden abrir ventanas que representan la memoria RAM
del dispositivo (File Registers), sus registros internos (Special Function Registers), la memoria EEPROM de
datos (si la hubiera), etc. La figura 3-8 puede servir como muestra del rea de trabajo configurada a gusto del
usuario.
3-6
3-7
;Tipo de procesador
;Definiciones de registros internos
;Ajusta los valores de las palabras de configuracin durante el ensamblado. Los bits no empleados
;adquieren el valor por defecto. Estos y otros valores se pueden modificar segn las necesidades
__config _CONFIG1, _LVP_OFF&_PWRTE_ON&_WDT_OFF&_EC_OSC&_FCMEN_OFF
__config _CONFIG2, _WRT_OFF&_BOR40V
Inicio
Loop
org
goto
org
0x00
Inicio
0x05
clrf
bsf
bsf
clrf
clrf
bcf
clrf
movlw
movwf
bcf
PORTB
STATUS,RP0
STATUS,RP1
ANSEL
ANSELH
STATUS,RP1
TRISB
b'00111111'
TRISA
STATUS,RP0
movf
movwf
goto
PORTA,W
PORTB
Loop
end
;Palabra 1 de configuracin
;Palabra 2 de configuracin
;Vector de reset
En todo programa fuente se permite la inclusin de comentarios que facilitan la compresin del mismo
aadiendo todo tipo de explicaciones tanto en la cabecera del programa como en las instrucciones que lo
forman. En el caso del ensamblador todo comentario debe empezar con ;.
La directiva List informa al ensamblador del tipo de dispositivo para el que debe realizar la traduccin.
Por su parte la directiva include permite aadir ficheros previamente editados. Normalmente el contenido de
3-8
E0
RA0
S0
RB0
E1
RA1
S1
RB1
E2
RA2
S2
RB2
E3
RA3
S3
RB3
E4
RA4
S4
RB4
E5
RA5
S5
RB5
E6
S6
E7
S7
E. DIGITALES
SALIDAS DIGITALES
3-9
Bsicamente
consiste
en
ensamblar/compilar el programa fuente (*.ASM) para
obtener el programa en cdigo mquina (*.HEX).
Recordemos que nuestro proyecto Ejemplo 1.mcp
est compuesto del programa fuente Ejemplo
1.asm. Como ya se ha explicado anteriormente, tras
el ensamblado se obtiene una serie de ficheros
como es el ejecutable Ejemplo 1.hex, de listado
Ejemplo 1.lst, de errores Ejemplo 1.err, de
simulacin Ejemplo 1.cod, etc..
La figura 3-12 muestra alguna de las
opciones del men Project, entre las que se
encuentra la opcin Buid All (ctrl.+F10) que es la
que emplearemos para proceder a ensamblar.
3-10
Todo ello sin salir del entrono MPLAB-IDE desde donde se edit el programa fuente, se ensambl y se
grab sobre el PIC16F886 alojado en USB-PICSchool !!
3.2.6 Comprobando el funcionamiento de la aplicacin
El dispositivo PIC16F886 ya est grabado, vamos a verificar el correcto funcionamiento de la aplicacin:
1
Comprobar que cualquier actuacin sobre los interruptores/pulsadores de entrada queda inmediatamente
reflejado sobre los leds de salida. Recordar que los pulsadores estn normalmente, en situacin de
reposo, a nivel 1. Cuando se accionan generan nivel lgico 0.
Es el momento de experimentar con el programa Ejemplo 1.asm para modificarlo como queramos y repetir
todos los pasos explicados en el presente tutorial. Tambin es el momento de ir revisando los diferentes
ejemplos propuestos a continuacin y cuyos programas fuentes se suministran en el CD-ROM.
3.3.7 Depuracin del ejemplo anterior
Es otra, la mejor, de las prestaciones del laboratorio, La Depuracin !!. Como ya se explic en el
TEMA 2, USB-PICSchool tiene capacidad para hacer depuracin en circuito en tiempo real del programa recin
ensamblado/compilado. La posibilidad de ejecutar ese programa paso a paso, con puntos de parada
(breakpoints), etc.., as como el poder visualizar/modificar registros internos, RAM de datos, etc, nos permite
seguir el desarrollo del mismo y localizar de forma efectiva los posibles fallos.
Bsicamente se siguen los mismos pasos que para la grabacin:
1
3-11
Proceder a ensamblar el programa fuente mediante ProjectBuild All. Como ya se explic, esto inicia el
proceso de ensamblado del programa fuente. Si no se detecta ningn error, el ejecutable se graba
automticamente sobre el PIC16F866 alojado en el laboratorio. ASI DE FCIL !!
Ocasionalmente, se hay algn problema de comunicacin con el PC, puede ser necesario establecer la
misma mediante la opcin Connect y proceder a grabar manualmente mediante la opcin Program del
men Debugger
Mediante las opciones del men Debugger o bien de los iconos previstos al efecto, el programa se va
ejecutando paso a paso, con puntos de parada, etc..
3-12
Teclado
I2C_16FXXX
1-Wire_PIC16
DS18S20_PIC16
DS1307_16FXXX
DESCRIPCION
Contiene las etiquetas que definen los registros y los bits del
PIC16F886
Contiene una macro para realizar temporizaciones variables a
partir de una determinada velocidad de trabajo
Contiene rutinas para el manejo de una pantalla LCD
alfanumrica compatible con el controlador HD44780. Se
adaptan a la familia PIC16 mediante un interface de 4 bits
Contiene rutinas para el control de una teclado matricial de 4 x
4 como el del laboratorio USB-PICSchool
Contiene rutinas bsicas para la comunicacin I2C mediante
controladores de la familia PIC16
Contiene rutinas para implementar, va software, comunicacin
serie segn el protocolo 1-wire
Contiene rutinas y funciones para el control del sensor de
temperatura DS18S20 de Dallas. Adaptadas para la familia
PIC16.
Contiene rutinas y funciones para el control del reloj/calendario
en tiempo real (RTC) DS1307. Adaptadas para la familia
PIC16
3-13
RA0
S0
RB0
E1
S1
RB1
E2
S2
E3
S3
E4
S4
E5
S5
E6
S6
E7
S7
E0
E. DIGITALES
SALIDAS DIGITALES
Comentarios
Este ejemplo realiza un sencillo tratamiento a partir de una seal de entrada.
RB7
1
0
0
1
RB6
0
1
0
1
RB5
1
0
0
1
SALIDAS
RB4
RB3
0
1
1
0
0
1
1
0
RB2
0
1
1
0
RB1
1
0
1
0
RB0
0
1
1
0
Esquema
Las lneas de entrada RA0 y RA1 se conectan con los interruptores E0 y E1 respectivamente. Las lneas RB0RB7 se conectan con los leds S0-S7. Ver el esquema de la figura 3-16.
3-14
RA0
S0
RB0
E1
RA1
S1
RB1
E2
S2
RB2
E3
S3
RB3
E4
S4
RB4
E5
S5
RB5
E6
S6
RB6
E7
S7
RB7
E. DIGITALES
SALIDAS DIGITALES
La secuencia se inicia al pulsar "I" (RA0) que activa el cilindro "V" (RB0).
Este en su avance empuja la pieza a tornear y acciona el sensor "b" (RA2) activando el rel del motor "M"
(RB1). Comienza el torneado.
Durante el avance se alcanza el sensor "c" (RA3) que desactiva el cilindro "V" (RB0) inicindose el
retroceso del mismo.
Al volver a pasar por "b" (RA2), se desconecta "M" (RB1).
Cuando se alcanza el final de carrera "a" (RA1) se activa una seal acstica "A" (RB2) para que el
operario retire la pieza, coloque otra nueva y, se inicie un nuevo ciclo, al pulsar "I" (RA0).
Esquema
El pulsador I E4 se conecta con RA0 e inicia la secuencia. Los pulsadores E6 y E7 simulan los sensores b y
c respectivamente y se conectan con las entradas RA2 y RA3. El pulsador E5 representa al final de carrera a
y se conecta con RA1. Por su parte el led S0 se conecta con RB0 y representa al cilindro V mientras que el led
S1 se conecta con RB1 y representa al motor M. El esquema de conexiones se resume en la figura 3-17.
3-15
S0
E1
S1
E2
S2
E3
(M)
RB0
RB1
S3
(I)
E4
(a)
E5
(b)
E6
(c)
E7
Comentarios
(V)
RA0
S4
RA1
S5
RA2
S6
RA3
S7
E. DIGITALES
SALIDAS DIGITALES
Programa que consiste en un conjunto de instrucciones que siguen fielmente la secuencia de funcionamiento de
la mquina simulada. Se recuerda por otra parte que los pulsadores empleados en la simulacin son activos por
nivel 0 cada vez que se accionan.
Al accionar el pulsador "I" (RA0) el cabezal realiza un descenso rpido de aproximacin, activando el
motor de bajada rpida "BR"(RB3).
Al llegar al sensor "b" (RA2), se activa el rel "M" (RB1) que hace girar el motor de la broca y se realiza un
descenso lento para el taladrado de la pieza "BL" (RB4).
Cuando se activa el sensor "c" (RA3) se considera que la pieza est taladrada. Se inicia una subida rpida
del cabezal "SR" (RB0) al tiempo que el rel "M" (RB1) de giro sigue activado.
Cuando se alcanza el final de carrera "a" (RA1), se detiene la subida rpida "SR"(RB0), el rel de giro "M"
(RB1) y se activa una seal acstica "A" (RB2) de aviso. El ciclo comienza con una nueva pulsacin de "I"
(RA0).
Esquema
El pulsador de entrada E4 I se conecta con RA0 e
inicia la secuencia. Los pulsadores E6 y E7 simulan
los sensores b y c y se conectan con las seales
RA2 y RA3 respectivamente. El final de carrera a
se simula con el pulsador E5 y se conecta con la
entrada RA1. Los leds de salida S0-S4 se conectan
con las lneas RB0-RB4. Respectivamente simulan
las seales que controlan la subida rpida del
cabezal (SR), el motor (M), la seal de aviso (A), la
bajada rpida del cabezal (BR) y la bajada lenta
(BL). Seguir el esquema de conexiones de la figura
3-18.
E0
S0
E1
S1
E2
S2
E3
E4
E5
E6
E7
E. DIGITALES
S3
(I)
(a)
(b)
(c)
RA0
S4
RA1
S5
RA2
S6
RA3
S7
(SR)
(M)
(A)
(BR)
(BL)
RB0
RB1
RB2
RB3
RB4
SALIDAS DIGITALES
3-16
Dos rels "M1" (RB0) y "M2" (RB1) gobiernan dos motores que arrastran dos cintas transportadoras. "M1"
(RB0) transporta piezas y "M2" (RB1) embalajes.
Un sensor "DP" (RA1) detecta el paso de piezas y, otro "DE" (RA2), detecta el correcto posicionamiento de
un envase.
Al detectarse el paso de 10 piezas, el envase se considera lleno, se activa una seal acstica "A" (RB2) y,
la cinta que transporta embalajes, se desplaza hasta situar un nuevo envase vaco.
En este momento se desactiva la seal acstica "A" (RB2) y nuevamente avanza la cinta de piezas
repitindose as el ciclo.
Un interruptor "I" (RA0) activa o no a todo el sistema.
Esquema
E0
E1
(I)
(DE)
RA0
RA2
E2
S1
S2
E3
E4
S0
(M2)
(A)
RB0
RB1
RB2
S3
(DP)
RA1
S4
E5
S5
E6
S6
E7
S7
E. DIGITALES
(M1)
SALIDAS DIGITALES
Dos rels "M1" (RB0) y "M2" (RB1) gobiernan dos motores que arrastran dos cintas transportadoras. "M1"
(RB0) transporta piezas y "M2" (RB1) embalajes.
Un sensor "DP" (RA1) detecta el paso de piezas y, otro "DE" (RA2), detecta el correcto posicionamiento de
un envase.
Al detectarse el paso de 10 piezas, el envase se considera lleno, se activa una seal acstica "A" (RB2) y,
la cinta que transporta embalajes, se desplaza hasta situar un nuevo envase vaco.
En este momento se desactiva la seal acstica "A" (RB2) y nuevamente avanza la cinta de piezas
repitindose as el ciclo.
Un interruptor "I" (RA0) activa o no a todo el sistema.
3-17
E0
E1
(I)
(DE)
RA0
RA2
E2
S1
S2
E3
E4
S0
(M2)
(A)
RB0
RB1
RB2
S3
(DP)
RA1
S4
E5
S5
E6
S6
E7
S7
E. DIGITALES
(M1)
SALIDAS DIGITALES
Comentarios
En el ejemplo anterior se pudo comprobar claramente que el n de piezas a envasar era incorrecto. No es que el
programa estuviera mal diseado, sino que el pulsador que simula el paso de piezas provoca un desagradable
efecto rebote. Un nico accionamiento del pulsador puede suponer generar varias seales que, por supuesto son
detectadas por el PIC. Estos rebotes se producen en todos los dispositivos electromecnicos. Es posible que
este efecto se haya notado tambin en el interruptor que detecta el posicionamiento de embalajes.
Para evitarlo se intercala una temporizacin al detectar un cambio de estado o accionamiento. De esta forma
esperamos que las lminas metlicas de los contactos se estabilicen.
En este ejemplo se hace uso por vez primera de la Macro Delay de temporizacin contenida en el fichero
MSE_Delay.INC, que se incluye en nuestro programa fuente de ejemplo mediante la directiva include
"MSE_Delay.inc". Este fichero y las rutinas que contiene se utilizar en numerosos ejemplos posteriores y
permite realizar temporizaciones de forma rpida y cmoda. Se obtiene una precisin razonable con valores de
temporizacin desde 1 hasta 2000 mS y con frecuencias del oscilador (Fosc) que van desde 1MHz hasta 48MHz.
Para hacer uso de esta Macro de temporizacin, nuestros programas fuente deben incorporar obligatoriamente
las siguientes directivas (analizar el programa fuente del ejemplo que nos ocupa):
1. #define Fosc 4000000: Para definir la frecuencia a la que trabaja el controlador, y a partir de la cual
se calculan los diferentes valores de tiempo. En el caso del laboratorio USB-PICSchool de serie
incorpora un oscilador de 4MHz.
2. MSE_Delay_V equ 0x73: Para definir el inicio de un rea libre de memoria RAM donde las rutinas de
temporizacin almacenan y manipulan sus propias variables. Esas rutinas emplean 3 posiciones
contiguas o variables que, en el ejemplo actual, empiezan en la posicin 0x73.
3. include "MSE_Delay.inc": Esta directiva incorpora o pega en nuestro programa fuente el fichero
que contiene las rutinas propias que conforman la Macro Delay de temporizacin.
4. Delay xxxx Milis: Es el nombre de la Macro que nos permite hacer una temporizacin de xxxx
Milisegundos. Esta macro instruccin se puede insertar en nuestro programa fuente tantas veces sea
necesaria y con el valor deseado.
3.3.8 Ejemplo 8: Juego de luces
Objetivos
Se va a realizar un juego de luces con unos leds conectados a las lneas de la Puerta B. Se iluminarn de forma
secuencial de izda. a dcha. y viceversa en funcin del valor de la entrada RA0. El intervalo en que cada led
permanece encendido es de 0.25s (250 mS)
3-18
Comentarios
Nuevamente
se
hace
uso
del
fichero
MSE_Delay.inc y de su rutina o Macro Delay de
temporizacin.
S0
RB0
E1
S1
RB1
E2
S2
RB2
E3
S3
RB3
E4
S4
RB4
E5
S5
RB5
E6
S6
RB6
E7
S7
RB7
E0
RA0
E. DIGITALES
SALIDAS DIGITALES
Recordemos que cuando vayamos a grabar el dispositivo con este programa, el conmutador del laboratorio debe
estar en la posicin USB. Una vez grabado y realizadas las conexiones necesarias pasamos el conmutador a la
posicin RUN para observar la ejecucin y el funcionamiento de las salidas conectadas e RB7:RB0.
Sin embargo, si elegimos la depuracin como modo de trabajo, el conmutador se debe quedar en la posicin
USB tanto cuando se graba el programa como cuando se ejecuta el mismo bien sea paso a paso, con punto de
parada o en tiempo real. En este caso veremos que las salidas RB7 y RB6 NO FUNCIONAN. Esto es porque en
el modo de depuracin estas lneas las emplea el propio sistema ICD para la comunicacin con el PC y no estn
por tanto disponibles como lneas de E/S del usuario. Es una de las limitaciones propias de un depurador ICD tal
y como ya se explicaron el TEMA 2 de este manual.
Este detalle debe tenerse muy presente en aquellos ejemplos o aplicaciones que vayan a emplear a RB7
y RB6 como lneas de E/S.
Esquema
A la vista del esquema de la figura 3-22 conectar los
interruptores E0 y E1 con las lneas de entrada RA0
y RA1. Los leds S0-S1 se conectan con las seales
RB0 y RB1 y visualizarn de forma constante el
estado de esas entradas. El led S7 se conecta a la
salida RB7 y estar constantemente parpadeando
cada 0.5 s.
E0
RA0
S0
RB0
E1
RA1
S1
RB1
E2
S2
E3
S3
E4
S4
E5
S5
E6
S6
E7
S7
E. DIGITALES
3-19
SALIDAS DIGITALES
RB7
E0
S0
E1
S1
RB1
E2
S2
RB2
E3
S3
RB3
S4
RB4
E5
S5
RB5
E6
S6
RB6
E7
S7
RB7
E4
Comentarios
E. DIGITALES
RB0
SALIDAS DIGITALES
Cada vez que se acciona el pulsador E4 se provoca una interrupcin externa por flanco descendente en la patilla
RB0/INT configurada como entrada. El programa de tratamiento ilumina los leds de salida durante 1 seg. y los
vuelve a apagar, retornando al programa principal. Este simplemente consiste en mantener al PIC en el modo
SLEEP de bajo consumo de forma constante que slo despierta cundo se produzca la mencionada
interrupcin.
Cabe mencionar que en este ejemplo, por variar, la temporizacin de 1 segundo se realiza mediante el empleo
del TMR0. Efectivamente este se ajusta para que desborde cada 10mS. Cuando se hayan contado 100
desbordamientos, habr transcurrido el segundo deseado.
Recordemos que cuando vayamos a grabar el dispositivo con este programa, el conmutador del laboratorio debe
estar en la posicin USB. Una vez grabado y realizadas las conexiones necesarias pasamos el conmutador a la
posicin RUN para observar la ejecucin y el funcionamiento de las salidas conectadas e RB7:RB1.
Sin embargo, si estamos en modo de depuracin, el conmutador se debe quedar en la posicin USB tanto
cuando se graba el programa como cuando se ejecuta el mismo bien sea paso a paso, con punto de parada o en
tiempo real. En este caso veremos que las salidas RB7 y RB6 NO FUNCIONAN. Esto es porque en el modo de
depuracin estas lneas las emplea el propio sistema ICD para la comunicacin con el PC y no estn por tanto
disponibles como lneas de E/S del usuario. Es una de las limitaciones propias de un depurador ICD tal y como
ya se explicaron el TEMA 2 de este manual.
Este detalle debe tenerse muy presente en aquellos ejemplos o aplicaciones que vayan a emplear a RB7
y RB6 como lneas de E/S.
3-20
E0
RB0
S0
RA0
E1
RB1
S1
RA1
E2
RB2
S2
RA2
E3
S3
E4
S4
E5
S5
E6
S6
E7
S7
E. DIGITALES
Comentarios
SALIDAS DIGITALES
Dos son los puntos a destacar en este ejemplo. En primer lugar hacemos notar que aunque en todos los
ejemplos anteriores la puerta A se configuraba como entrada y la B como salida, esto no tiene porqu ser as.
Las puertas A y B se pueden configurar indistintamente como entrada y/o como salida.
Tambin destacamos el hecho de que la interrupcin por cambio de estado se puede aplicar a TODAS las lneas
de la puerta B que estn configuradas como entradas. Adems esa capacidad de interrupcin se puede habilitar
o no de forma individual a cada una de ellas.
En la familia PIC16F87X dicha capacidad solo era aplicable a las lneas RB7:RB4 que estuvieran configuradas
como entradas y se habilitaban en bloque, es decir, o todas esas entradas tenan capacidad de interrupcin o
ninguna de ellas.
Finalmente apreciamos que el programa principal coloca al controlador en el modo SLEEP de bajo consumo.
Solo despierta y ejecuta programa cuando se produce una de esas interrupciones.
Resumiremos diciendo que la familia PIC16F88X potencia notablemente su capacidad de interrupciones
externas.
3.3.12 Ejemplo 12: El Watch Dog Timer (WDT)
Objetivos
El ejemplo trata de mostrar el funcionamiento del WDT que provoca un RESET peridicamente si no se le
refresca. Tambin muestra cmo distinguir entre un RESET provocado por el WDT o por cualquier otra fuente.
Efectivamente, si se provoca un RESET por activacin de MCLR o el Power On Reset al conectar, se produce un
flash de 0.2 seg. sobre la salida RB3. Si el RESET es provocado por desbordamiento del WDT, el flash de 0.1
seg, se realiza sobre la salida RB0. Mediante las entradas RA3:RA0 se ajusta el preescaler de 16 bits asociado
al WDT. De esta forma se puede conseguir que el WDT desborde en 12 intervalos diferentes que van desde los
0.13 seg. hasta los 270 seg. El tiempo se duplica de un intervalo al siguiente.
3-21
E0
RA0
S0
E1
RA1
S1
E2
RA2
S2
E3
RA3
S3
E4
S4
E5
S5
E6
S6
E7
S7
E. DIGITALES
Comentarios
RB0
RB3
SALIDAS DIGITALES
El WDT se alimenta a partir de un oscilador interno e independiente de 31KHz (periodo de 32uS). Dispone de un
prescaler de 8 bits controlado mediante el OPTION_REG y, otro de 16 bits, que se controla mediante WDTCON.
El tiempo total para desbordar es de 32uS * OPTION_REG * WDTCON. En el presente ejemplo el prescaler de
OPTION_REG es de 128. De esta forma el intervalo de desbordamiento es de 32uS * 128 * WDTCON. Por su
parte WDTCON se carga con el valor binario procedente de las entradas RA3:RA0. De esta forma se obtienen
desbordamientos a intervalos variables segn la siguiente tabla:
RA3:RA0
0000
0001
0010
0011
0100
0101
WDTCON
32
64
128
256
512
1024
TIEMPO
0.13 s
0.26 s
0.52 s
1.05 s
2.11 s
4.22 s
RA3:RA0
0110
0111
1000
1001
1010
1011
WDTCON
2048
4096
8192
16384
32768
65536
TIEMPO
8.45 s
16.91 s
32.82 s
67.65 s
135.30 s
270.60 s
Mediante este ejemplo tambin se destaca otra de las diferencias entre la antigua familia PIC1687X y la actual
PIC16F88X. En aquella slo se dispona de un nico preescaler de hasta 128 que se gestionaba desde el
OPTION_REG. En la familia actual se dispone de lo mismo y se le aade un nuevo registro, el WDTCON, con
un nuevo preescaler de hasta 65536. De esta forma el tiempo de desbordamiento del WDT, en caso de no ser
refrescado, aumenta hasta los 270.60 segundos.
3.3.13 Ejemplo 13: El display de 7 segmentos
Objetivos
El programa presenta sobre uno de los displays de 7 segmentos del laboratorio USB-PICSchool, el estado lgico
presente en la entrada RA0, visualizando 1 o 0 segn corresponda. Con la entrada RA1 se activa o no el
punto decimal del display.
a
b
c
d
e
f
g
dp
AC DEC
AC UNI
7 SEGMENTOS
Esquema
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7
E0
RA0
E1
RA1
E2
E3
E4
E5
E6
+5 Vcc
E7
E. DIGITALES
3-22
Los interruptores E0 y E1 se conectan con las seales RA0RA1 respectivamente, que sern configuradas como
entradas. En la figura 3-27 se muestra el montaje prctico.
Comentarios
El ejemplo es una simple muestra de cmo visualiza dos nmeros (0 y 1) sobre uno de los dos displays de 7
segmentos del laboratorio. Sirve como una primera toma de contacto con la decodificacin a 7 segmentos.
3.3.14 Ejemplo 14: Decodificador BCD-7 segmentos
Objetivo
Mediante 4 seales de entrada se introduce el cdigo BCD (desde 0 hasta F) del dgito a visualizar sobre el
display 7 segmentos correspondiente a las unidades.
a
b
c
d
e
f
g
dp
AC DEC
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7
E0
RA0
E1
RA1
E2
RA2
E3
RA3
E4
E5
AC UNI
7 SEGMENTOS
Esquema
E6
E7
+5 Vcc
E. DIGITALES
3-23
Esquema
a
b
c
d
e
f
g
dp
AC DEC
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7
Comentarios
RA3
3-24
RA1
Comentarios
E1
E2
E3
E4
AC UNI
RA0
E5
AC DEC
E0
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7
a
b
c
d
e
f
g
dp
E6
RA2
E7
RA3
E. DIGITALES
1Hz
F.OUT.
RA4/T0CKI
AC UNI
AC DEC
U30
SYM10
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7
a
b
c
d
e
f
g
dp
.
10Hz
100Hz
1KHz
G. LOGICO
+5 Vcc
3-25
E1
E2
E3
E4
AC UNI
E5
AC DEC
E0
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7
E6
RA2
RA3
E7
RA0
E. DIGITALES
0x2100
0xff
Con ellas, cuando se ensambla y/o compila y se genera el fichero .HEX, se incluye en ste informacin para que
el sistema de Depuracin/Grabacin del laboratorio USB-PICSchool grabe fsicamente cualquier valor sobre
cualquier posicin de la memoria EEPROM del PIC. As la directiva org 0x2100 establece la direccin inicial de
la EEPROM y la directiva de 0xff el dato a grabar (0xff). Obtenemos pues un fichero .HEX con la informacin a
grabar tanto en la memoria de programa, como en la EEPROM de datos, como en la memoria de configuracin
del PIC.
3-26
D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14
4
5
6
RS
R/W
E
2X16
RB3
RB2
RB1
RB0
RA1
RA2
RA3
Comentarios
El programa hace uso de las rutinas para el manejo de la
pantalla LCD y estn contenidas en el archivo
LCD4bitsPIC16.INC. Dichas rutinas son de propsito
general y se pueden emplear en cualquier aplicacin que
requiera el empleo de una pantalla. Se debe incluir en
cualquier programa fuente mediante el simple empleo de
la directiva INCLUDE. La imagen de la figura 3-35
muestra una fotografa del montaje propuesto y que
servir para sucesivos ejemplos.
3-27
PARAM. DE ENTRADA
Ninguno
PARAM. DE SALIDA
Ninguno
LCD_INI
Ninguno
Ninguno
LCD_DATO
W=Contiene el carcter a
visualizar
W=Contiene el comando
a ejecutar por la pantalla
LCD
Ninguno
LCD_REG
Ninguno
DESCRIPCION
Configura las E/S para adaptarlas a
la pantalla LCD
Rutina para la inicializacin segn
especificaciones del fabricante
Enva a la pantalla el dato a
visualizar
Enva a la pantalla el comando que
debe ejecutar.
3-28
S0
S1
S2
S3
S4
S5
S6
S7
F3
F2
F1
F0
C3
C2
C1
C0
8
7
6
5
4
3
2
1
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
>
<
TECLADO4X4
SALIDAS DIGITALES
3-29
PARAM. DE ENTRADA
Ninguno
PARAM. DE SALIDA
W=Cdigo BCD de la
tecla pulsada
W=0x80 si no se pulsa
ninguna tecla en ese
instante
DESCRIPCION
Realiza una exploracin de las 4 filas
y columnas de que consta el teclado
del laboratorio.
D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14
RS
R/W
E
2X16
4
5
6
PANTALLA LCD
8
7
6
5
4
3
2
1
F3
F2
F1
F0
C3
C2
C1
C0
Esquema
>
<
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
RA1
RA2
RA3
TECLADO4X4
3-30
Tambin es de destacar que, gracias tanto al teclado matricial de 4x4 como al interface de 4 bits con la pantalla
LCD, es posible gestionar ambos perifricos consumiendo tan solo 11 lneas de E/S del PIC. Este es un detalle
importante ya que ambos perifricos nos pueden solucionar el interface humano con mltiples aplicaciones, a un
costo relativamente pequeo de lneas de E/S.
3.3.24 Ejemplo 24: Interrupcin por cambio de estado
Objetivos
Se trata de un ejemplo similar al anterior en cuanto a que sobre la pantalla LCD se visualiza la tecla pulsada. La
diferencia consiste en que la exploracin del teclado slo se realiza cuando se detecte una interrupcin por
cambio de estado en las lneas RB4-RB7 como consecuencia de pulsar cualquier tecla.
Esquema
El mismo que se emple en el ejemplo anterior.
Comentarios
Este ejemplo se basa en la capacidad que tienen las lneas de la puerta B para provocar una interrupcin cuando
cualquiera de ellas cambia de estado. Esta caracterstica ya se utiliz en el ejemplo 11.
El programa principal se mantiene detenido en el modo SLEEP de bajo consumo. Cuando se pulsa cualquier
tecla hay un cambio de estado y se produce una interrupcin que despierta al PIC. El programa de tratamiento
correspondiente se encarga de determinar qu tecla se puls para, posteriormente, visualizarla sobre el LCD. Se
trata de una muy interesante aplicacin. En el ejemplo anterior el PIC estaba en ejecucin constante esperando
que se pulse una tecla. En este ejemplo el PIC se mantiene en standby y slo reacciona cuando tiene lugar una
pulsacin.
3-31
Esquema
SALIDAS DIGITALES
S0
S1
S2
S3
S4
S5
S6
S7
Comentarios
El ejemplo pretende introducirnos en el manejo del TMR1, sus posibilidades y su configuracin. Bsicamente el
TMR1 consiste en un contador ascendente de 16 bits y dispone de un preescaler de hasta 8. Dispone de
diferentes modos de trabajo algunos de los cuales se vern en ste y prximos ejemplos. En esta ocasin se
configura para que acte en el modo temporizador y provoque una interrupcin cada 0.1. El nmero de
interrupciones producidas se ver reflejado en formato binario sobre los leds de salida.
3-32
10Hz
100Hz
1KHz
D0
D1
D2
D3
D4
D5
D6
D7
SYM10
RC0/T1CKI
7
8
9
10
11
12
13
14
G. LOGICO
S0
S1
S2
S3
S4
S5
RA1
RA2
RA3
S6
RB3
RB2
RB1
RB0
S7
RS
R/W
E
2X16
4
5
6
1Hz
F.OUT.
Esquema
Comentarios
Al igual que le TMR0, el TMR1 tambin puede contar pulsos de entrada con flanco ascendente y que se aplican
por la patilla RC0/T1CKI. El generador que dispone el laboratorio USB-PICScholl se encarga de suministrar los
pulsos a contar.
Se recomienda variar la frecuencia de dicho generador (entre 1Hz y 1KHz) para apreciar la variacin que se
produce en el contaje y apreciar, gracias al led S0, cmo las evoluciones del contador se realizan en el flanco
ascendente de la seal.
3.3.28 Ejemplo 28: El TMR1 como contador de eventos externos con control de disparo
Objetivos
Es un ejemplo similar al anterior. Se trata de contar el nmero de pulsos externos que se le aplican al TMR1 y
visualizar la cuenta (en binario) sobre la pantalla LCD. En esta ocasin habilitamos la capacidad de disparo que
permite detener o reanudar la cuenta del TMR1 mediante una seal exterior.
Esquema
Se muestra en la figura 3-41. Es idntico al empleado en el ejemplo anterior al que adems se le aade la
conexin entre RB5 y el interruptor E0 a travs del cual se realiza el control de la funcin de disparo del TMR1.
3-33
RB5
7
8
9
10
11
12
13
14
D0
D1
D2
D3
D4
D5
D6
D7
RS
R/W
E
E0
E1
E2
E3
E4
E7
S0
S1
S2
S3
S4
S5
S6
S7
RA1
RA2
RA3
E5
G. LOGICO
RB3
RB2
RB1
RB0
E6
4
5
6
10Hz
100Hz
1KHz
SYM10
RC0/T1CKI
2X16
1Hz
F.OUT.
SALIDAS DIGITALES
E. DIGITALES
1Hz
F.OUT.
10Hz
100Hz
1KHz
SYM10
RC0/T1CKI
G. LOGICO
S0
S1
S2
S3
S4
S5
S6
SALIDAS DIGITALES
S7
Comentarios
RB0
3-34
2X16
1Hz
F.OUT.
D0
D1
D2
D3
D4
D5
D6
D7
SYM10
RC0/T1CKI
7
8
9
10
11
12
13
14
RS
R/W
E
PANTALLA LCD
4
5
6
Esquema
10Hz
100Hz
1KHz
G. LOGICO
RB3
RB2
RB1
RB0
RA1
RA2
RA3
Comentarios
Este es un buen ejemplo de trabajo conjunto entre el TMR0 y el TMR1. El TMR1 se configura para trabajar como
contador de pulsos externos. Por su parte el TMR0 provoca una interrupcin cada 10mS. Cuando se han
producido 100 interrupciones habr transcurrido 1 segundo, en este momento el TMR1 deja de contar. En otras
palabras, el TMR1 cuenta los pulsos que le entran durante un intervalo de 1 segundo. El resultado de la cuenta
representa por tanto los ciclos/segundo (Hz) de la seal de entrada y se visualizan en el LCD. Posteriormente se
inicia una nueva medida.
a
b
c
d
e
f
g
dp
AC DEC
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7
RA2
RA3
3-35
E0
RA0
S0
E1
RA1
S1
E2
RA2
S2
E3
RA3
S3
E4
RA4
S4
E5
RA5
S5
E6
S6
E7
S7
E. DIGITALES
RB0
SALIDAS DIGITALES
3-36
Interrupcin
256 uS
1024 uS
4096 uS
32768 uS
64512 uS
Periodo en RB0
2560 uS (2.5 mS)
10240 uS (10.2 mS)
40960 uS (40.9 mS)
327680 uS (327.6 mS)
645120 uS (645.1 mS)
Frecuencia en RB0
390 Hz
96.65 Hz
24.41 Hz
3.05 Hz
1.5 Hz
RA0
S0
E1
RA1
S1
E2
RA2
S2
E3
S3
E4
S4
E5
S5
E6
S6
E7
S7
E. DIGITALES
RB0
SALIDAS DIGITALES
Comentarios
Con este ejemplo se pretende ilustrar la facultad que tienen los dispositivos PIC16F88X para alterar
dinmicamente, en ejecucin, la frecuencia del oscilador principal del sistema.
El ejemplo como tal es bastante sencillo. Se trata de hacer que la salida RB0 cambie de estado cada un cierto
nmero fijo de ciclos mquina, concretamente unos 500000. Hasta ahora la velocidad de trabajo del micro era
constante de 4MHz producidos por el oscilador externo del laboratorio USB-PICSchool. Con este dato sabemos
que cada ciclo mquina se ejecuta en 1 uS (4Tosc), por lo que en este caso la salida RB0 cambiara cada
500000 uS (0.5 Seg.).
Ahora bien, los dispositivos PIC16F88X disponen de un oscilador interno que se activa mediante el bit SCS del
registro OSCCON. En este momento el oscilador externo del laboratorio queda inhabilitado. A su vez ese
oscilador interno tiene la posibilidad de generar hasta 8 frecuencias de trabajo diferentes que van desde los
8MHz (ms alto que el propio oscilador externo del laboratorio) hasta los 32KHz (muy lento pero de muy bajo
consumo).
Existen tres bits en el registro OSCCON que permiten seleccionar de entre uno de esos 8 valores de oscilador
interno. Pues bien, en nuestro programa de ejemplo esos bits se cargarn dinmicamente (en tiempo de
ejecucin) con el valor actual procedente de las lneas RA2:RA0 conectadas con los interruptores E2:E0.
3-37
Fosc Interno
31 KHz
125 KHz
250 KHz
500 KHz
1 MHz
2 MHz
4 MHz
8 MHz
4 Tosc
129 uS
32 uS
16 uS
8 uS
4 uS
2 uS
1 uS
0.5 uS
3.3.34 Ejemplo 34: El mdulo CVREF, Generar una tensin analgica variable
Objetivos
Emplear el mdulo CVREF (generador de tensin de referencia) que integran los dispositivos PIC16F88X para
generar una tensin analgica variable con salida por RA2/CVREF. El valor de la tensin de salida depender
del valor binario de las entradas RC4:RC0 conectadas con los interruptores E4:E0.
Esquema
E0
RC0
E1
RC1
E2
RC2
E3
RC3
E4
RC4
Tal y como se muestra en la figura 3-47 las lneas RC0RC4 se conectan con los interruptores E0-E3 y el
pulsador E4 respectivamente.
RA2/CVREF
E5
E6
E7
E. DIGITALES
Comentarios
Otra de las mejoras que integran los PIC16F88X frente a sus predecesores PIC16F87X. El mdulo CVREF
consiste en un convertidor D/A de 4 bits y es capaz de generar una tensin analgica variable que se puede
emplear como tensin de referencia para otros mdulos integrados en el PIC o simplemente como una tensin
analgica que se obtiene por la lnea RA2/CVREF y que se puede usar en mltiples aplicaciones.
Dispone de un registro, el VRCON, con el que se configura mltiples modos de funcionamiento del mdulo
CVREF y se selecciona el valor de la tensin a generar. Efectivamente, dispone de 4 bits para seleccionar un
valor de entre 16 posibles y otro bit para seleccionar entre dos rangos: el alto y el bajo. En nuestro programa de
ejemplo esos 5 bits se modificarn dinmicamente (en tiempo de ejecucin) con el valor binario que suministran
las lneas RC4:RC0. Las entradas RC3:RC0 se conectan con los interruptores E3:E0 del laboratorio y aplican el
valor binario de 4 bits con el que se genera la tensin de salida. La entrada RC4 se conecta con el pulsador E4 y
permite seleccionar el rango alto o bajo de trabajo.
3-38
3: 0
32
Suponiendo que Vdd=5V el valor mnimo ser cuando RC3:RC0 = 0000 (0) 1.25 V
Suponiendo que Vdd=5V el valor mximo ser cuando RC3:RC0 = 1111 (15) 3.593V
En el rango bajo (Rc4=1) la tensin de salida CVREF queda definida por la siguiente ecuacin:
3: 0
24
Suponiendo que Vdd=5V el valor mnimo ser cuando RC3:RC0 = 0000 (0) 0 V
Suponiendo que Vdd=5V el valor mximo ser cuando RC3:RC0 = 1111 (15) 3.125 V
Como el mdulo CVREF consiste en un convertidor
D/A de 4 bits, entre el mnimo y mximo disponemos
de una escala de 16 valores posibles.
La figura 3-48 muestra el montaje prctico del ejemplo
34 sobre el laboratorio USB-PICScool. Se puede
apreciar el empleo de un simple voltmetro para
mediar la tensin analgica de salida entre la lnea
RA2/CVREF y GND.
3.3.35 Ejemplo 35: El mdulo CVREF, Generando una seal en diente de sierra
Objetivos
Mediante el empleo del mdulo CVREF se trata de obtener una seal en diente de sierra por la salida
RA2/CVREF.
Esquema
Se muestra en la figura 3-49 y bsicamente se basa en conectar la lnea
de salida de seal RA2/CVREF con un canal del osciloscopio. Este
visualizar la seal en diente de sierra de salida.
Comentarios
En el ejemplo la variable Valor se va incrementando entre 0 y 16 al tiempo que se va depositando sobre el
registro VRCON. De esta manera tensin de salida generada por ste ir incrementndose desde el mnimo
(Valor = 0) hasta el mximo (Valor = 16) y vuelta a empezar desde 0. Recordemos que el mdulo CVREF
consiste en un convertidor D/A de 4 bits.
3-39
3-40
RA3/C1IN+
RA4/C1OUT
+5Vcc
S0
P1
P2
S1
S2
S3
Tal y como se muestra en el esquema de la figura 351 ambas tensiones analgicas se generan
mediante los dos potencimetros del laboratorio
USB-PICSchool y estarn comprendidas entre 0 y
5V. P1 permite ajustar la tensin analgica que se
aplica a la entrada RA0/C12IN0- del comparador y
P2 a la entrada RA3/C1IN+.
S4
S5
S6
P1
P2
E. ANALOGICAS
S7
SALIDAS DIGITALES
Comentarios
Otra de las ventajas aadidas en la familia PIC16F88X frente a su predecesora PIC16F87X, es que integra un
mdulo comparador de tensiones analgicas con dos comparadores independientes entre s. En este ejemplo
usamos al comprador C1.
Segn cmo se le configure, el comparador C1 puede comparar dos tensiones analgicas que se pueden aplicar
desde mltiples fuentes. En el presente ejemplo la entrada invertida se aplica por la lnea RA0/C12IN0- y la
entrada no invertida por la lnea RA3/C1IN+.
La salida del comprador se puede configurar para disparar diferentes eventos internos y tambin se puede
obtener por la lnea RA4/C1OUT que es como se usa en el ejemplo. Esta salida se activa cuando la tensin de la
entrada no invertida aplicada por RA3/C1IN+ es mayor que la aplicada por RA0/C12IN0-.
Los comparadores son independientes entre s y tambin respecto al resto del microcontrolador, es decir, no
necesita atencin alguna por parte del firmware. Efectivamente, una vez que se le activa y configura, el
controlador puede dedicarse a otras tareas sin prestarle mayor atencin. Si se desea, puede provocar
interrupcin cada vez que se active la salida. En el caso del ejemplo que nos ocupa obsrvese que el controlador
simplemente queda en el modo Sleep de bajo consumo aunque el comparador sigue con su tarea.
Podemos emplear un voltmetro para medir las tensiones de entrada y contrastarlas con el resultado que ofrece
el comparador a su salida.
3.3.37 Ejemplo 37: El mdulo comparador, comparando una tensin analgica con otra fija de referencia
Objetivos
Se trata de emplear el comparador C1 para comparar dos tensiones: una tensin analgica que se introduce por
RA0/C12IN0- con otra tensin de referencia que la genera el mdulo CVREF. Es decir, tenemos un comparador
con tensin de referencia ajustable.
3-41
S1
E2
RC2
S2
E3
RC3
S3
E4
S4
E5
S5
E6
S6
E7
S7
E. DIGITALES
+5Vcc
V
P1
P1
RC1
E1
S0
RC0
E0
RA0/C12IN0-
RA4/C1OUT
RA2/CVREF
P2
P2
SALIDAS DIGITALES
E. ANALOGICAS
3-42
PANTALLA LCD
E4
P1
RC3
E3
RC2
E2
2X16
D0
D1
D2
D3
D4
D5
D6
D7
RC1
7
8
9
10
11
12
13
14
E1
+5Vcc
RS
R/W
E
RC0
4
5
6
E0
P2
RB3
RB2
RB1
RB0
E5
E6
RA1
RA2
RA3
E7
E. DIGITALES
P1
P2
E. ANALOGICAS
3-43
PANTALLA LCD
+5Vcc
D0
D1
D2
D3
D4
D5
D6
D7
P1
7
8
9
10
11
12
13
14
4
5
6
RS
R/W
E
2X16
P2
RB3
RB2
RB1
RB0
RA1
RA2
RA3
P2
E. ANALOGICAS
Comentarios
Los dispositivos PIC16F88X disponen de un convertidor A/D de 10 bits de resolucin y 11 o 14 canales de
entrada analgica. La tensin de referencia determina la resolucin por bit: (Res. = Vref/1024). Por ejemplo, con
Vref=5 res.= 4.8 mV/Bit; con Vref=2.5V res.= 2.4 mV/Bit. En los ejemplos propuestos se emplea la propia
Vdd (+5V) de alimentacin como tensin de referencia.
El ejemplo, a pesar de su sencillez, resume claramente los pasos necesarios para realizar una conversin:
1. Mediante los registros ANSEL y ANSELH se selecciona qu lneas de E/S actuarn como lneas
analgicas o digitales. En los ejemplos vistos hasta ahora las lneas de E/S se empleaban bsicamente
como lneas de E/S digitales. En esta ocasin RA0/AN0 se configura como lnea analgica.
2. Por coherencia aquellas lneas que hayan sido configuradas como analgicas, se deben tambin
configurar como entradas mediante los correspondientes registros TRIS. En nuestro ejemplo RA0/AN0
se configura como entrada.
3. Con los registros ADCON0 y ADCON1 se determina la configuracin y funcionamiento del propio mdulo
convertidor. Una de las tareas ms frecuentes a realizar es la seleccin de qu entrada analgica, de
todas las que haya, deseamos hacer la conversin. Debemos recordar que aunque hayamos
configurado varias lneas como entradas analgicas, convertidor slo hay uno. Slo se puede hacer la
conversin de una entrada analgica cada vez.
4. El bits GO de ADCON0 y el ADIF de PIR1 permiten realizar una nueva conversin de la entrada
analgica seleccionada en ese instante y determinar cundo una conversin ha finalizado.
El ejemplo propone realizar la conversin de la tensin presente en el canal RA0/AN0. Esta se puede variar con
el potencimetro P1 del laboratorio. El resultado de 10 bits de la conversin se visualiza, en binario, sobre la
pantalla LCD.
3-44
RA0/AN0
+5Vcc
D0
D1
D2
D3
D4
D5
D6
D7
P1
7
8
9
10
11
12
13
14
4
5
6
RS
R/W
E
2X16
P2
RB3
RB2
RB1
RB0
RA1
RA2
RA3
V
P1
P2
E. ANALOGICAS
3-45
PANTALLA LCD
+5Vcc
RB5/AN13
+5Vcc
P1
D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14
4
5
6
RS
R/W
E
2X16
P2
RB3
RB2
RB1
RB0
RA1
RA2
RA3
P1
P2
E. ANALOGICAS
3-46
2X16
1Hz
RC2/CCP1
SYM10
D0
D1
D2
D3
D4
D5
D6
D7
F.OUT.
7
8
9
10
11
12
13
14
RS
R/W
E
PANTALLA LCD
4
5
6
Esquema
RB3
RB2
RB1
RB0
10Hz
100Hz
1KHz
G. LOGICO
RA1
RA2
RA3
Comentarios
En este ejemplo se pretende mostrar el funcionamiento del mdulo CCP1 en el modo de captura. El TMR1
evoluciona a una frecuencia conocida. Se captura el valor que adquiere el TMR1 entre dos flancos ascendentes
de la seal de entrada y que suministra el generador del laboratorio USB-PICSchool. Ese valor capturado
representa el periodo de la seal. Trabajando a 4MHz y con un preescaler de 1:8, el TMR1 evoluciona cada 8S.
El valor mnimo que puede adquirir el TMR1 es de 1 lo que supone un periodo de 8S y una frecuencia de
125Kz. El valor mximo que puede adquirir el TMR1 es de 65535, lo que supone un periodo de 0.524 seg. y una
frecuencia de 2Hz. La lectura que se visualiza sobre el LCD representa el contaje realizado por el TMR1 entre un
flanco ascendente y el siguiente.
En el caso del ejemplo escrito en ensamblador a la lectura que ofrece el LCD se le debe multiplicar por 8 S
(cada evolucin del TMR1) para obtener el periodo final.
En el caso del ejemplo escrito en, C la pantalla LCD nos ofrece directamente el periodo medido ya que el propio
programa se encarga de realizar la multiplicacin por 8.
3.3.43 Ejemplo 43: Capturas con el mdulo CCP1, midiendo la anchura de un pulso
Objetivo
Se pretende medir el tiempo transcurrido entre el flanco ascendente y el descendente de la seal de entrada que
suministra el generador del laboratorio. Con ello se obtiene la duracin del pulso de esa seal de entrada.
Esquema
El mismo que en el ejemplo anterior.
Comentarios
El ejemplo es similar al anterior. Se trata de conocer la evolucin del TMR1 entre un flanco ascendente y otro
descendente. Si conocemos que el TMR1 evoluciona cada 8 S trabajando a una velocidad de 4MHz con un
preescaler de 1:8, multiplicamos este valor por el valor actual del TMR1 y que aparece en el LCD. Se obtiene as
la duracin de la anchura del pulso.
3-47
3.3.44 Ejemplo 44: Capturas con el mdulo CCP1, midiendo el tiempo entre un pulso y el siguiente
Objetivos
Se trata de medir el tiempo que transcurre entre un pulso y el siguiente de la seal de entrada aplicada por
RC2/CCP1.
Esquema
El mismo que en los ejemplos anteriores
Comentarios
Este es el ltimo ejemplo dedicado al mdulo CCP1 en su modo de captura. En esta ocasin se mide el tiempo
que transcurre entre el flanco descendente de un pulso y el ascendente del siguiente. Con ello conocemos el
lapsus de tiempo entre dos pulsos.
En el caso del ejemplo escrito en ensamblador a la lectura que ofrece el LCD se le debe multiplicar por 8 S
(cada evolucin del TMR1) para obtener el tiempo.
En el caso del ejemplo escrito en, C la pantalla LCD nos ofrece directamente el tiempo entre un pulso y otro ya
que el propio programa se encarga de realizar la multiplicacin por 8.
La lnea RB0 acta como salida y se conecta al led S0. Esta salida
cambiar de estado cada vez que al TMR1 le entren un determinado
nmero de pulsos externos.
S0
S1
RB0
1Hz
RC0/T1CKI
SYM10
F.OUT.
3-48
S2
S3
S4
S5
S6
Se muestra en la figura 3-60. El generador lgico del laboratorio USBPICSchool se emplea para aplicar los pulsos a contar. Se conecta
con la lnea RC0/T1CKI. El TMR1 acta como contador de eventos
externos.
S7
SALIDAS DIGITALES
Esquema
10Hz
100Hz
1KHz
3.3.46 Ejemplo 46: Comparacin con el mdulo CCP1, contador de eventos ajustable
Objetivos
Se basa en el ejemplo anterior. El TMR1 cuenta tantos pulsos externos como indique el valor que se introduce
desde los interruptores conectados en RA0-RA5, Cuando se alcanza el valor fijado la salida RB0 cambia de
estado.
Esquema
S0
E1
RA1
S1
E2
RA2
S2
E3
RA3
S3
E4
RA4
S4
E5
RA5
S5
E6
S6
E7
S7
E. DIGITALES
RB0
1Hz
F.OUT.
RC0/T1CKI
SYM10
E0
RA0
G. LOGICO
10Hz
100Hz
1KHz
SALIDAS DIGITALES
3-49
Comentarios
La modulacin de anchura de pulsos consiste en obtener una seal de salida ajustable tanto en periodo como en
la anchura del pulso. Se emplea el TMR2 y su registro de periodos PR2 as como el registro CCP1RL en caso de
emplear el mdulo CCP1. Cuando el TMR2 alcanza el valor de PR2 (periodo de la seal), la salida RC2/CCP1
cambia de estado y pasa a nivel 1. El TMR2 inicia una nueva cuenta. Cuando se alcanza el valor fijado en el
registro CCPR1L (anchura del pulso) la salida RC2/CCP1 vuelve a cambiar de estado pasando ahora a nivel 0
El TMR2 se inicia nuevamente y el ciclo se repite. Variando los valores de PR2 y CCPR1L se puede modificar la
seal de salida tanto en periodo como en anchura.
En el ejemplo se emplea el TMR2 con un preescaler 1:1 por lo que trabajando a 4MHz evoluciona cada 1S.
Conocido este dato es fcil determinar el valor qu hay que cargar en PR2 y CCPR1L para obtener el periodo y
la anchura.
Para comprobar el funcionamiento del presente ejemplo se recomienda el empleo de un osciloscopio que
visualice la seal presente en RC2/CCP1 y permita constatar los resultados. Tambin hay que destacar que el
funcionamiento del mdulo PWM es totalmente independientemente del programa en ejecucin. Efectivamente,
una vez programado el mdulo CCP1 y el TMR2, la seal de salida se obtiene de forma automtica sin que el
programa de aplicacin tenga que intervenir a no ser que sea para modificar los valores de PR2 y/o de CCPR1L.
Por ltimo indicamos que para realizar estas medidas y otras de los sucesivos ejemplos, hemos empleado el
osciloscopio PoScope basic 2 de la firma PoLabs (www.poscope.com) y de la cual somos distribuidores. Se
trata de un instrumento de bajo coste, que se conecta al PC mediante uno de los puertos USB. Lo hemos
elegido como herramienta de trabajo por su bajo coste, reducido tamao, emula diferentes instrumentos y lo
podemos conectar al mismo PC (de sobre mesa o porttil) con el que estamos realizando los presentes
ejemplos.
3-50
E0
RA0
E1
RA1
E2
RA2
E3
RA3
E4
RA4
E5
RA5
RC2/CCP1
E6
E7
E. DIGITALES
Comentarios
El ejemplo nos muestra la posibilidad de variar la anchura del pulso de salida de acuerdo a parmetros externos
como puede ser el valor binario que se introduce por las lneas RA0-RA5, conectadas a sendos
interruptores/pulsadores. A una frecuencia de 4MHz y con un preescaler de 1:16, el TMR2 evolucionada cada 16
S. El registro de periodos PR2 se carga con el valor 200 por lo que el periodo de la seal de salida es de
3200S (200 * 16). El registro CCPR1L se carga con el valor binario procedente de las entradas RA0-RA5 y
puede variar entre 0 y 63. De esta manera la anchura del pulso oscila entre 0 y 1024S (64 * 16). Se recomienda
emplear un osciloscopio conectado a la salida RC2/CCP1 para comprobar el correcto funcionamiento de la
aplicacin. Tambin se recuerda que los pulsadores E4 y E5 conectados en RA4 y RA5, cuando estn en reposo
proporcionan nivel lgico 1. Tenerlo en cuenta a la hora de introducir el valor binario de entrada.
Por ltimo indicamos que para realizar estas medidas y otras de los sucesivos ejemplos, hemos empleado el
osciloscopio PoScope basic 2 de la firma PoLabs (www.poscope.com) y de la cual somos distribuidores. Se
trata de un instrumento de bajo coste, que se conecta al PC mediante uno de los puertos USB. Lo hemos
elegido como herramienta de trabajo por su bajo coste, reducido tamao, emula diferentes instrumentos y lo
podemos conectar al mismo PC (de sobre mesa o porttil) con el que estamos realizando los presentes
ejemplos.
3.3.49 Ejemplo 49: Modulacin PWM mediante el convertidor ADC
Objetivos
Se trata de modular la anchura del pulso de la seal de salida que proporciona el mdulo CCP1 sobre la lnea
RC2/CCP1, en funcin de la tensin analgica introducida por RA0/AN0 previa conversin.
Esquema
P1
+5Vcc
RA0/AN0
P2
RC2/CCP1
P1
P2
E. ANALOGICAS
3-51
3-52
RA0/AN0
P1
+5Vcc
P2
RC2/P1A
RB2/P1B
Comentarios
P1
P2
RB1/P1C
RB4/P1D
E. ANALOGICAS
En el ejemplo se genera una seal PWM a partir de una tensin analgica por RA0/AN0. Dicha seal PWM se
obtiene simultneamente por las 4 salidas RC2/P1A, RB2/P1B, RB1/P1C y RB4/P1C y puede ser empleada en
aplicaciones en que se deban mantener sincronizados diferentes dispositivos (p.e. servos).
Mediante un osciloscopio de doble trazo podemos ir analizando las seales de salida, de 2 en 2, para observar
que son idnticas entre s. Tambin se puede emplear un analizador lgico para visualizar simultneamente los
cuatro canales de salida. Nosotros hemos empleado el modelo PoScope Basic 2 en el modo analizador lgico
de funcionamiento y el resultado obtenido se puede apreciar en la figura 3-67.
3-53
P1
+5Vcc
RA0/AN0
Esquema
P2
RC2/P1A
RB2/P1B
P1
P2
E. ANALOGICAS
Comentarios
Esta capacidad se aplica slo al generador PWM del mdulo CCP1 mejorado de los dispositivos PIC16F88X. El
modo semi puente en H (Half-Bridge). Genera dos seales de salida tiles para activar cargas o dispositivos de
tipo push-pull. La seal PWM se obtiene por RC2/P1A y su complementaria por RB2/P1B. Para evitar instantes
en que ambas cargas push-pull pudieran estar activadas simultneamente, con el consiguiente corto circuito que
esto pudiera provocar, se puede generar un retardo programable entre ambas seales ("Dead-Band Delay").
En el ejemplo se genera una seal PWM a partir de una tensin analgica por RA0/AN0. Mediante un
osciloscopio de doble trazo podemos analizar las seales de salida en RC2/P1A y en RB2/P1B, medir el periodo
de las mismas, la anchura del pulso y el retardo entre ambas como se muestra en la figura 3-69. Nosotros hemos
empleado el modelo PoScope Basic 2 en el modo oscilador de funcionamiento.
La seal superior, en rojo, se corresponde con la seal en RC2/P1A y la azul con la de RB2/P1B. Se aprecia
claramente que ambas seales estn desfasadas 180 y que la seal en RB2/P1B est retrasada respecto a la
de RC2/P1A. Ese retraso se llama "Dead-Band Delay" y es programable. Puede evitar daos elctricos en caso
de que dos cargas se activen simultneamente.
3-54
3-55
RA2
E1
E2
P1
P1
P2
E3
P2
RC2/P1A
E4
RB2/P1B
E5
RB1/P1C
E6
RB4/P1D
E7
E. ANALOGICAS
E. DIGITALES
3-56
RA1/C12IN1+5Vcc
P1
RA2
E1
E0
E2
P2
E3
P1
P2
RC2/P1A
E4
RB2/P1B
E5
RB1/P1C
E6
RB4/P1D
E7
E. ANALOGICAS
E. DIGITALES
El mdulo CCP1 mejorado en el modo PWM de trabajo. Se encarga de generar una seal modulada en
anchura a travs de 4 salidas y que se puede aplicar directamente a un puente en H. En este ejemplo
tambin se contempla el control Auto-Shutdown que permite la desconexin inmediata de las seales
de salida en caso de ocurrir un determinado evento.
El mdulo convertidor ADC para convertir la tensin analgica presente en la entrada RA0/AN0 en un
valor binario gracias al cual se obtiene la seal PWM de salida.
El mdulo CVREF para generar una tensin de referencia fija que, en el ejemplo, es de 2.5V
El mdulo comparador C1. Este compara la tensin presente en la entrada RA1/C12IN-, procedente del
potencimetro P2 el laboratorio, con la tensin fija de referencia de 2.5V que proporciona el mdulo
CVREF. Cuando el comparador determine que es mayor, dispara el control de Auto-Shutdown.
3-57
Esquema
Conectar la lnea RC6/TxD con la seal TxD y la lnea RC7/RxD con la
seal RxD. Ambas seales se encuentran en el conector AP5 de la
seccin de Interface RS-232 del laboratorio USB-PICSchool. Ver la
figura 3-73.
Figura 3-73. Ejemplo 54
RTS
CTS
RC7/RxD
RxD
RC6/TxD
TxD
INTERFACE RS232
Comentarios
Este ejemplo muestra lo sencillo que resulta realizar la transmisin serie de cualquier carcter o byte. Emplea el
USART que integran los PIC de la serie 16F88X entre otros. La recepcin se puede realizar sobre un PC dotado
de un software estndar de comunicaciones como puede ser el Hyper Terminal que viene incorporado en todas
las versiones de Windows. Hay que configurarlo para realizar una comunicacin a 9600 baudios, 8 bits por
carcter y sin paridad. Se puede emplear un cable serie DB9 macho-hembra pin a pin que se conecta entre el
conector de interface RS-232 del laboratorio y el canal libre del PC.
3.3.55 Ejemplo 55: EL USART, recepcin/transmisin de caracteres
Objetivos
En este ejemplo se realiza transmisin y recepcin mediante el USART. El programa espera que se reciba un
carcter o byte. Este se visualiza en binario sobre unos leds conectados a las lneas RB0-RB7. Acto seguido el
mismo carcter recibido se retransmite a modo de eco.
3-58
RTS
CTS
S0
RB0
S1
RB1
S2
RB2
S3
RB3
RC7/RxD
RxD
S4
RB4
RC6/TxD
TxD
S5
RB5
S6
RB6
S7
RB7
INTERFACE RS232
SALIDAS DIGITALES
Comentarios
En este ejemplo se propone el empleo de una interrupcin que se provoca cada vez que se recibe un byte. El
programa de tratamiento lo visualiza sobre los leds de salida y lo retransmite. Tanto la transmisin como la
recepcin se puede realizar sobre un PC dotado de un software estndar de comunicaciones como puede ser el
Hyper Terminal que viene incorporado en todas las versiones de Windows. Hay que configurarlo para realizar
una comunicacin a 9600 baudios, 8 bits por carcter y sin paridad. Se puede emplear un cable serie DB9
macho-hembra pin a pin que se conecta entre el conector de interface RS-232 del laboratorio y el canal libre del
PC.
3.3.56 Ejemplo 56: Auto deteccin del USART
Objetivos
Habilitar la capacidad de auto deteccin de baudios que tiene el mdulo USART mejorado de los dispositivos
PIC16F88X. El ejemplo, una vez sincronizado, se limita a retransmitir el byte o carcter recin recibido.
Esquema
Se trata del mismo esquema que se emple en el ejemplo 55
Comentarios
Una nueva aportacin de la familia PIC16F88X frente a sus antecesores de la familia PIC16F87X, es la
capacidad que tiene el USART para detectar automticamente los baudios con los que se ha de establecer una
comunicacin.
El ciclo de auto deteccin se inicia cuando se activa el bit ABDEN del registro BAUDCTL. A partir de ese
momento el USART espera a que el terminal remoto le enve el carcter ASCII U que en binario corresponde
con el cdigo 0b01010101, como primer carcter de todos. Cuando se recibe, el USART mide el intervalo de
tiempo en cada transicin 0-1-0 y a partir de ah determina los baudios con los que el terminal remoto le
transmiti dicho carcter U. Ya est el ajuste de los baudios realizado, el bit ABDEN se pone a 0 y puede
comenzar la comunicacin propiamente dicha.
En el ejemplo dicha comunicacin consiste simplemente en retransmitir los caracteres que se van recibiendo, al
tiempo que su cdigo se visualiza en los leds de salida conectados a las lneas de la Puerta B.
Como terminal remoto se puede usar un PC dotado de un canal serie y de un programa de comunicaciones
como puede ser el Hyper terminal de Windows. Debemos recordar que una vez grabado el programa de ejemplo
y realizadas las conexiones entre el canal serie del laboratorio USB-PICSchool y el canal serie del PC, tenemos
que enviar desde el PC el carcter U como primer carcter antes de empezar la comunicacin.
3-59
RTS
CTS
RC7/RxD
RxD
RC6/TxD
TxD
INTERFACE RS232
Comentarios
El ejemplo usa la misma capacidad de auto deteccin que se emple anteriormente. Una vez realizado el
sincronismo se procede a transmitir una serie de mensajes.
Como terminal remoto se puede usar un PC dotado de un canal serie y de un programa de comunicaciones
como puede ser el Hyper terminal de Windows. Debemos recordar que una vez grabado el programa de ejemplo
y realizadas las conexiones entre el canal serie del laboratorio USB-PICSchool y el canal serie del PC, tenemos
que enviar desde el PC el carcter U como primer carcter antes de empezar la transmisin de mensajes.
E0
RA0
E1
RA1
RTS
E2
RA2
CTS
E3
RA3
E4
RA4
E5
RA5
E6
RA6
RC7/RxD
RxD
RC6/TxD
TxD
INTERFACE RS232
E7
E. DIGITALES
3-60
S0
RB0
S1
RB1
S2
RB2
S3
RB3 RC7/RxD
RxD
S4
RB4
RC6/TxD
TxD
S5
RB5
S6
RB6
S7
RB7
RTS
CTS
INTERFACE RS232
SALIDAS DIGITALES
Comentarios
Aqu tenemos otro caso con una clara utilidad prctica. Se trata de gobernar desde el terminal remoto el estado
de las salidas RB0:RB7 al tiempo que se monitoriza su estado. Desde el terminal se manda una serie de
comandos del 0 al 7. Cuando uno de estos comandos es recibido por nuestra aplicacin, la salida RB0:RB7
correspondiente cambia de estado. A continuacin se retransmite al terminal el estado actual de todas las salidas
para su monitorizacin.
Tambin podemos pensar en este ejemplo que, en lugar de activar o desactivar los leds del laboratorio, podemos
controlar de forma remota cualquier otro tipo de perifrico.
Como terminal remoto podemos utilizar un PC dotado de un software estndar de comunicaciones como puede
ser el Hyper Terminal que viene incorporado en todas las versiones de Windows. Hay que configurarlo para
realizar una comunicacin a 9600 baudios, 8 bits por carcter y sin paridad. Se puede emplear un cable serie
DB9 macho-hembra pin a pin que se conecta entre el conector de interface RS-232 del laboratorio y el canal libre
del PC.
3-61
DS1307
RTC
DS18S20
t
PANTALLA LCD
SDA
D0
D1
D2
D3
D4
D5
D6
D7
SCL
3V.
BAT.
SQW
RC1
1-W
7
8
9
10
11
12
13
14
4
5
6
RS
R/W
E
2X16
RB3
RB2
RB1
RB0
RA1
RA2
RA3
INTERFACE
I2C/1-WIRE
1-WIRE/I2C
Comentarios
El protocolo 1-wire de comunicacin es una de la formas ms verstiles de comunicar nuestro PIC con otros
dispositivos como es el sensor de temperatura DS18S20 que nos ocupa. Slo se necesita un hilo !!
Todos los dispositivos 1-wire, por normativa, deben incluir un nmero ID nico de 8 bytes que lo identifica de
todos los dems. Este ejemplo consiste en leer dicho nmero ID y visualizarlo sobre el LCD.
La familia PIC16F88X no integra ningn mdulo hardware para realizar una comunicacin segn la norma o
protocolo 1-Wire. Habr que implementarlo por software. En este caso empleamos la lnea RC1 como lnea de
bus para esa comunicacin.
En primer lugar necesitamos unas libreras o rutinas genricas que realicen las tareas ms comunes en la
comunicacin 1-wire. Dichas rutinas diseadas por Ingeniera de Microsistemas Programados S.L estn
incluidas en el fichero 1-wire_PIC16.inc del CD-ROM que se entrega con el equipo.
Para poder hacer uso del fichero 1-wire_PIC16.inc nuestros programas fuente deben incorporar
obligatoriamente las siguientes directivas (analizar el programa fuente del ejemplo que nos ocupa):
1. #define Fosc 4000000: Para definir la frecuencia a la que trabaja el controlador, y a partir de la cual
se calculan los diferentes valores de tiempo. En el caso del laboratorio USB-PICSchool de serie
incorpora un oscilador de 4MHz.
2. _1Wire_var equ 0x66: Para definir el inicio de un rea libre de memoria RAM donde las rutinas de
manejo del bus 1-wire almacenan y manipulan sus propias variables. Esas rutinas emplean 4 posiciones
contiguas o variables que, en el ejemplo actual, empiezan en la posicin 0x66.
3. include "1-wire_PIC16.inc: Esta directiva incorpora o pega en nuestro programa fuente este fichero
que contiene las rutinas y funciones bsicas del protocolo 1-wire.
4. call nombre_rutina: Es la llamada, desde nuestro programa fuente o desde otras libreras, a una de las
rutinas para su ejecucin. Es posible que antes de llamarlas, algunas rutinas necesiten parmetros de
3-62
PARAM. DE ENTRADA
Ninguno
_1WRead_Byte
Ninguno
_1WWrite_Byte
La variable _1W_Dato
debe tener el dato a
escribir
PARAM. DE SALIDA
El bit C del STATUS=0 si
el dispositivo 1-wire est
presente.
En
caso
contrario C=1
El dato ledo en la
variable _1W_Dato
Ninguno
DESCRIPCION
Rutina que genera el pulso de Reset
sobre el bus 1-wire y detecta si hay
presencia o no de algn dispositivo
Lee del bus 1-wire un byte completo
que se devuelve en la variable
_1W_Dato
Escribe el byte presente en la
variable _1W_Dato sobre el bus 1wire
El ejemplo emplea estas rutinas para enviar comandos y recibir datos del DS18S20 para luego visualizarlos
sobre la pantalla LCD.
3-63
PARAM. DE
ENTRADA
Ninguno
DS18S20_Read
Ninguno
DS18S20_Convert_T
Ninguno
DS18S20_ASCII
El
buffer
DS18S20_Byte_0 a
DS18S20_Byte_8
tiene
la
ltima
lectura medida
PARAM. DE SALIDA
DESCRIPCION
El
buffer
DS18S20_Byte_0
a
DS18S20_Byte_4 tiene
la cadena ASCII
3-64
S0
PANTALLA LCD
SDA
D0
D1
D2
D3
D4
D5
D6
D7
SCL
S2
SQW
RC1
S3
DS1307
RTC
1-W
7
8
9
10
11
12
13
14
4
5
6
RS
R/W
E
2X16
S1
3V.
BAT.
RB3
RB2
RB1
RB0
RA1
RA2
RA3
S4
S5
INTERFACE
I2C/1-WIRE
DS18S20
t
S6
S7
RB4
1-WIRE/I2C
SALIDAS DIGITALES
3-65
RC4
SDA
RC3
SCL
RB0
3V.
BAT.
S1
RB1
S2
RB2
DS1307
RTC
S3
RB3
S4
RB4
DS18S20
t
S5
RB5
S6
RB6
S7
RB7
SQW
1-W
INTERFACE
I2C/1-WIRE
S0
1-WIRE/I2C
SALIDAS DIGITALES
Comentarios
El protocolo I2C de comunicacin es otra de la formas ms verstiles de comunicar nuestro PIC con otros
dispositivos como es el reloj/calendario en tiempo real (RTC) DS1307 que nos ocupa. Slo se necesitan dos
hilos !!
En el mercado existen un gran nmero de dispositivos I2C diferentes. Podemos encontrar dispositivos con
memorias de diferentes tipos, relojes en tiempo real, convertidores ADC y DAC, controladores de diferentes
perifricos y un largo etctera. Probablemente el protocolo del bus I2C sea el ms extendido del mercado.
El bus I2C para la comunicacin serie sncrona emplea dos nicas lneas: SDA es la lnea de datos y es
bidireccional; SCL es la lnea de sincronismo o reloj y es unidireccional.
La familia PIC16F88X integra un mdulo hardware llamado MSSP (Master Synchronous Serial Port) capaz de
realizar comunicaciones serie segn las normas o protocolos SPI o I2C. En el laboratorio USB-PICSchool y en
los ejemplos propuesto emplearemos el I2C cuyas lneas son RC4/SDA y RC3/SCL.
En primer lugar necesitamos unas libreras o rutinas genricas que realicen las tareas ms comunes en la
comunicacin I2C. Dichas rutinas diseadas por Ingeniera de Microsistemas Programados S.L estn incluidas
en el fichero I2C_16FXXX.inc del CD-ROM que se entrega con el equipo.
Para poder hacer uso del fichero I2C_16FXXX.inc nuestros programas fuente deben incorporar obligatoriamente
las siguientes directivas (analizar el programa fuente del ejemplo que nos ocupa):
1. I2C_Var equ 0x60: Para definir el inicio de un rea libre de memoria RAM donde las rutinas de manejo
del bus I2C almacenan y manipulan sus propias variables. Esas rutinas emplean 12 posiciones
contiguas o variables que, en el ejemplo actual, empiezan en la posicin 0x60.
2. include "I2C_16FXXX.inc: Esta directiva incorpora o pega en nuestro programa fuente este fichero
que contiene las rutinas y funciones bsicas del protocolo I2C.
3. call nombre_rutina: Es la llamada, desde nuestro programa fuente o desde otras libreras, a una de las
rutinas para su ejecucin. Es posible que antes de llamarlas, algunas rutinas necesiten parmetros de
entrada o salida pasa su correcto funcionamiento. Leer con cuidado los comentarios y explicaciones que
acompaan a cada una de ellas en el fichero I2C_16FXXX.inc.
3-66
PARAM. DE ENTRADA
Ninguno
PARAM. DE SALIDA
Ninguno
I2C_Send_Start
Ninguno
Ninguno
I2C_Sentd_Stop
Ninguno
Ninguno
I2C_Send_Byte
En W el byte a transmitir
Ninguno
I2C_Read_Byte
Bit 0 de ACK=0 se
transmite ACK.
Bit 0 de ACK=1 se
transmite NACK
Dir_I2C=Direccin del
dispositivo
I2C_Dir_Ini=Direccin
inicial interna
I2C_N_Bytes=N
de
bytes a leer
Dir_I2C=Direccin del
dispositivo
I2C_Dir_Ini=Direccin
inicial interna
I2C_N_Bytes=N
de
bytes a escribir
A partir de I2C_Buffer
los bytes a escribir
En W el byte recibido
Leer_I2C
Escr_I2C
DESCRIPCION
Inicia el mdulo MSSP del PIC para
trabajar en el modo I2C
Genera la secuencia de inicio
necesaria para comenzar una
transferencia de datos
Genera la secuencia de fin
necesaria
para
finalizar
una
transferencia de datos.
Transmite el byte presente en W y
espera a recibir el bit ACK
Recibe un byte y lo devuelve en W.
Genera el bit ACK o NACK en
funcin del bit 0 de la variable ACK
A partir de I2C_Buffer
se almacenan los bytes
ledos
Ninguno
Tambin son necesarias una serie de funciones o rutinas para el control especfico del reloj/calendario en tiempo
real (RTC) modelo DS1307. Dichas rutinas hacen uso de las rutinas anteriormente mencionadas y estn
incluidas en el fichero DS1307_16FXXX.INC del CD-ROM que se entrega con el equipo.
Para poder hacer uso del fichero DS1307_16FXXX.INC nuestros programas fuente deben incorporar
obligatoriamente las siguientes directivas (analizar el programa fuente del ejemplo que nos ocupa):
1. DS1307_Var equ 0x73: Para definir el inicio de un rea libre de memoria RAM donde las rutinas de
manejo del DS1307 almacenan y manipulan sus propias variables. Esas rutinas emplean 9 posiciones
contiguas o variables que, en el ejemplo actual, empiezan en la posicin 0x73.
2. include " DS1307_16FXXX.INC: Esta directiva incorpora o pega en nuestro programa fuente este
fichero que contiene las rutinas y funciones para el control del RTC DS1307.
3. call nombre_rutina: Es la llamada, desde nuestro programa fuente o desde otras libreras, a una de las
rutinas para su ejecucin. Es posible que antes de llamarlas, algunas rutinas necesiten parmetros de
entrada o salida pasa su correcto funcionamiento. Leer con cuidado los comentarios y explicaciones que
acompaan a cada una de ellas en el fichero DS1307_16FXXX.INC.
3-67
PARAM. DE ENTRADA
Ninguno
PARAM. DE SALIDA
Ninguno
DS1307_Off
Ninguno
Ninguno
DS1307_W_Byte
W=Dato a escribir
I2C_Dir_Ini=Direccin
interna a escribir
I2C_Dir_Ini=Direccin
interna a leer
Ninguno
Ninguno
DS1307_Seg=
Segundos (00-59)
DS1307_Min =
Minutos (00-59)
DS1307_Hor = Horas
(1-12 AM/PM) o (0023)
DS1307_Dia = Da de
la semana (1-7)
DS1307_Fecha = Da
del mes (1-31)
DS1307_Mes = Mes
(1-12)
DS1307_Anno = Ao
(00-99)
DS1307_Control
=
Registro de control
Ninguno
DS1307_R_Byte
DS1307_R_Data
DS1307_W_Data
DS1307_Out_0
DS1307_Out_1
DS1307_Out_1H
DS1307_Out_4K
DS1307_Out_8K
DS1307_Out_32K
DS1307_Seg=
Segundos (00-59)
DS1307_Min =
Minutos (00-59)
DS1307_Hor = Horas
(1-12 AM/PM) o (00-23)
DS1307_Dia = Da de la
semana (1-7)
DS1307_Fecha = Da
del mes (1-31)
DS1307_Mes = Mes
(1-12)
DS1307_Anno = Ao
(00-99)
DS1307_Control
=
Registro de control
Ninguno
Ninguno
Ninguno
Ninguno
Ninguno
Ninguno
W=Dato ledo
DESCRIPCION
Activa el funcionamiento del RTC
DS1307
Desactiva el funcionamiento del
RTC. Mientras haya alimentacin
se mantienen todos los datos
internos. El consumo se reduce a la
mnima expresin (unos 10nA)
Escribe un byte en cualquiera de
las posiciones internas del DS1307
(0x00-0x3F)
Lee un byte de cualquiera de las
posiciones internas del DS1307
(0x00-0x3F)
Lee los 8 bytes del DS1307 que
corresponden con la fecha y la hora
del dispositivo as como el valor del
registro de control actual.
Obtiene por tanto la fecha y la hora
Ninguno
Ninguno
Ninguno
Ninguno
Ninguno
Ninguno
3-68
Salida SQW=0
Salida SQW=1
Salida SQW=1Hz
Salida SQW=4KHz
Salida SQW=8KHz
Salida SQW=32KHz
RC3
SCL
D0
D1
D2
D3
D4
D5
D6
D7
RC4
3V.
BAT.
SQW
1-W
7
8
9
10
11
12
13
14
4
5
6
RS
R/W
E
2X16
RB3
RB2
RB1
RB0
RA1
RA2
RA3
INTERFACE
I2C/1-WIRE
DS1307
RTC
DS18S20
t
1-WIRE/I2C
Comentarios
Una primera aplicacin del bus I2C y del dispositivo DS1307 que consiste sencillamente en visualizar sobre la
pantalla LCD la hora actual contenida en el dispositivo DS1307. Dicha visualizacin se realiza en el formato:
HH:MM:SS.
Si se conecta por primera vez el dispositivo, lo ms probable es que el reloj parta de 0 y se visualice 00:00:00. A
partir de ese momento se apreciar el avance del mismo. Si disponemos de una pila observaremos que, a pesar
de desconectar la alimentacin general y volver a conectarla, el reloj mantiene la hora.
3-69
RC3
SCL
E1
E2
DS1307
RTC
7
8
9
10
11
12
13
14
1-W
4
5
6
E0
3V.
BAT.
SQW
D0
D1
D2
D3
D4
D5
D6
D7
RS
R/W
E
2X16
RC4
RB3
RB2
RB1
RB0
RA1
RA2
RA3
E3
RB4(Ajuste)
E4
INTERFACE
I2C/1-WIRE
DS18S20
t
E5
E6
1-WIRE/I2C
RB5(Sel)
E7
E. DIGITALES
3-70
D0
D1
D2
D3
D4
D5
D6
D7
SDA
RC3
SCL
3V.
BAT.
SQW
RC1
1-W
RB3
RB2
RB1
RB0
RA1
RA2
RA3
E0
E1
E2
DS1307
RTC
7
8
9
10
11
12
13
14
4
5
6
RS
R/W
E
2X16
RC4
E3
RB4 (Ajuste)
E4
INTERFACE
I2C/1-WIRE
DS18S20
t
1-WIRE/I2C
E5
E6
RB5 (Sel)
E7
E. DIGITALES
3-71
PANTALLA LCD
D0
D1
D2
D3
D4
D5
D6
D7
SDA
RC3
SCL
E0
3V.
BAT.
E1
SQW
RC1
E2
DS1307
RTC
1-W
7
8
9
10
11
12
13
14
RB4 (Ajuste)
E4
INTERFACE
I2C/1-WIRE
E5
E6
RB5 (Sel)
E7
INTERFACE RS232
E. DIGITALES
TxD
RTS
RA1
RA2
RA3
E3
DS18S20
t
RxD
RB3
RB2
RB1
RB0
CTS
4
5
6
RS
R/W
E
2X16
RC4
RC6/TxD
RC7/RxD
Comentarios
Tambin en esta ocasin se trata de una aplicacin basada en ejemplos anteriores. Sobre la pantalla LCD se
visualiza la fecha y la hora como si se tratara de un simple reloj digital con sus correspondientes funciones de
ajuste.
Cada cierto tiempo se toma una muestra de la temperatura actual y se transmite va serie junto con la fecha y
hora en la que se tom esa muestra. La transmisin se realiza va serie mediante el empleo del USART del PIC.
Como terminal remoto podemos utilizar un PC dotado de un software estndar de comunicaciones como puede
ser el Hyper Terminal que viene incorporado en todas las versiones de Windows. Hay que configurarlo para
realizar una comunicacin a 9600 baudios, 8 bits por carcter y sin paridad. Se puede emplear un cable serie
DB9 macho-hembra pin a pin que se conecta entre el conector de interface RS-232 del laboratorio y el canal libre
del PC.
El software Hyper Terminal se puede configurar para capturar y almacenar toda la informacin recibida sobre un
fichero de tipo texto. Luego podremos examinar dicho fichero y hacer un historial de la evolucin de la
temperatura en base a la fecha y la hora. Todo un completo sistema de adquisicin de datos !!
3-72
D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14
4
5
6
8
7
6
5
4
3
2
1
F3
F2
F1
F0
C3
C2
C1
C0
RS
R/W
E
2X16
>
<
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
RA1
RA2
RA3
TECLADO4X4
Comentarios
Es un simple ejemplo de divertimento en el que se
conjuga el manejo de la pantalla LCD y el teclado. Se
emplean una serie de rutinas de propsito general
que ya han sido empleadas en mltiples ocasiones.
Cabe mencionar la forma en que el programa obtiene
un nmero aleatorio. Para ello emplea el TMR0.
Este timer est constantemente evolucionado, hasta
que en un momento se lee su valor y a partir de l se
obtiene un nmero aleatorio entre 00 y 99. Se
entiende que es un nmero aleatorio dado que es
imposible predecir el valor que tiene el TMR0 en un
momento dado. En la fotografa de la figura 3-89 se
aprecia un instante del desarrollo del juego.
3-73
D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14
8
7
6
5
4
3
2
1
F3
F2
F1
F0
C3
C2
C1
C0
(RELE)
S2
S3
S4
RS
R/W
E
S1
4
5
6
RA4
S0
2X16
S5
>
<
S6
RA5
S7
(BEEP)
SALIDAS DIGITALES
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
RA1
RA2
RA3
TECLADO4X4
0x2100
0x01,0x02,0x03,0x04
3-74
D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14
4
5
6
8
7
6
5
4
3
2
1
RA3
RA2
F3
F2
F1
F0
C3
C2
C1
C0
RA1
RC4
SDA
RC3
SCL
RC1
>
<
3V.
BAT.
SQW
RS
R/W
E
2X16
1-W
INTERFACE
I2C/1-WIRE
TECLADO4X4
DS1307
RTC
DS18S20
t
1-WIRE/I2C
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
7 SEGMENTOS
a
b
c
d
e
f
g
dp
AC UNI
S0
S1
S2
S3
S4
S5
S6
S7
AC DEC
RA5
RA4
SALIDAS DIGITALES
3-75
3-76