SlideShare una empresa de Scribd logo
S
i habéis utilizado un
programador por el
puerto serie del ordena-
dor para programar los
PIC16F87X, utilizando
el maravilloso software libre IC-
Prog, habréis comprobado que el
tiempo de carga del PIC16F876,
por ejemplo, que tiene 8K es de
varios minutos que se hacen
interminables, sobretodo cuando
estamos programando y depu-
rando programas.
Lo que presentamos en este
curso es un circuito que a través
de la USAR de los PIC 16F87X
es capaz de ponerse en comuni-
cación con ellos y cargar en la
memoria de programa el código
hexadecimal del programa que
queremos que se ejecute. Esto
reduce considerablemente el
tiempo de programación ya que
solo carga los códigos del pro-
grama que queremos cargar.
La placa que hemos diseñado
además de utilizarla como pro-
gramadora, se puede utilizar
como placa de desarrollo, ya que
se dispone de acceso a todos y
cada uno de los pines del micro-
controlador a través de la tira de
postes para circuito impreso
macho acodados y dispone de un
circuito oscilador a cristal en
nuestro caso a 4 MHz, tal y como
se puede ver en el circuito de la
Figura 1.
DESCRIPCIÓN DEL CIRCUITO
El circuito consta de un
microcontrolador PIC16F876 al
que se le han conectado un cristal
de cuarzo de 4MHz y los
condensadores de desacoplo de 27
pF y un pulsador que cuando se
activa pone un nivel bajo en la
entrada MCLR para provocar un
RESET del sistema. Además para
poder conectar la USART del
microcontrolador al ordenador, se
ha utilizado un circuito adaptador
de niveles MAX232, tal y como
indica el fabricante en sus notas
de aplicación, y por último se le
ha dotado de un conector
acodado DB-9 macho para poder
conectar el circuito al puerto serie
CURSO DE
MICROCONTROLADORES
PIC16F87X (...y III)
CURSO DE
MICROCONTROLADORES
PIC16F87X (...y III)
Fernando Remiro Domínguez
Profesor de Sistemas Electrónicos
IES. Juan de la Cierva
www.terra.es/personal/fremiro
MICROCONTROLADORES
54RESISTOR
Programador para PIC16F87X con bootloader.
Curso microcontroladoresPAGS 27/12/02 10:01 Página 54
del ordenador. El cable de
conexión debe ser un modem
nulo, es decir, un cable que solo
necesita la línea de masa
conectada al terminal 5 de los dos
conectores y se cruzan las líneas 2
de un extremo (RxD) con la 3 del
otro (TxD) y viceversa. Ver el
diagrama de conexión de la
Figura 3.
Además la placa dispone de
un conector ARJ11, conectado a
las líneas MCLR, RB3, RB6 y
RB7 del microcontrolador, lo
que permite realizar la conexión
a un módulo ICD (Depurador en
circuito), que como veremos es
una herramienta de bajo costo
que conectada al PC y en el
mismo entorno del MPLAB,
permite la visualización de los
registros del microcontrolador
en los puntos de ruptura que se
establezcan. Pudiéndose ejecutar
los programas en tiempo real o
en modo paso a paso.
Figura 1.- circuito de la placa de desarrollo y de programación con el bootloadaer
VSS
VDD
VCC
VCC
VCC
VCC
VCC
VCC
VSS
VCC
RC2
TXPC
RC7
RC6
RB7
RB3
RA5
RC7
RC6
RC5
RC4
RC3
RC2
RC1
RC0
RA0
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
RA4
RA3
RA2
RA1
RB6
MCLR
MCLR
RC7
RC6
RB3
MCLR
RB0
RC3
RA3
RC5
RB1RA5
RA2
RB2
RB6
RA1
RC1
RC0
RA0
RC4
RB4
RB5
RB7
RA4
RXPC
RXPC
TXPC
R2
100
R1
10K
J1
CON6
1
2
3
4
5
6
C5
1uF
C2
1uF
C3
1uF
C1
1uF
C8
0.1u
P1
DB9
5
9
4
8
3
7
2
6
1
C4
1uF
U1
MAX232
1
2
3
6
4
5
14
13
12
11
9
10
8
7 15
16
C1+
V+
C1-
V-
C2+
C2-
T1OUT
R1IN
R10UT
T1IN
9
10
8
7 GND
VCC
U2
PIC16F873
1
2
3
4
5
6
7
9
10
11
12
13
14
28
27
26
25
24
23
22
21
18
17
16
15
20
19
8
MCLR/VPP
RA0/AN0
RA1/AN1
RA2/AN2
RA3/AN3/VREF
RA4/TOCKI
RA5/SS/AN4
OSC1/CLKIN
OSC2/CLKOUT
RC0/T1OS0/T1CKI
RC1/T1OS1/CCP2
RC2/CCP1
RC3/SCK/SCL
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0/INT
RC7/RX/DT
RC6/TX/CK
RC5/SDO
RC4/SDI/SDA
VDD
VSS
VSS
SW1
RESET
J2
CON25
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
E1
ESP
C6 27pF
C7 27pF
X1
4MHz
CONECTOR RJ11
DEBUGE
Figura 2.- Conexión del ICD a
la placa de desarrollo.
Figura 3 .- Cable de conexión MODEM nulo para la conexión de la placa de desarrollo
con el PC.
Curso microcontroladoresPAGS 27/12/02 10:01 Página 55
COMO UTILIZAR
EL PROGRAMA
BOOTLOADER
1. En primer lugar debemos
obtener el programa en la
siguiente web http://www.ehl.cz/
pic/pic_e.htm , donde también se
puede obtener el PIC donwloa-
der V1.8.
2. Abrir el proyecto bootldr.pjt
utilizando el programa
Microchip MPLAB y cambiar
los parámetros de la sección
de usuario marcados dentro
del ensamblador con las mar-
cas <<<, tal y como se muestra
en la Tabla 1, en la que hemos
fijado el microcontrolador
PIC16F876, con un oscilador
de 4MHz, una velocidad de
transmisión de 9600 baudios y
utiliza el pin 7 del PORTB
como señal de disparo para
ejecutar el bootloader cuando
está a nivel bajo y correr el
programa de usuario cuando
está a nivel alto. Por tiempo
entra en el programa de usua-
rio después de haber pasado
0,3 segundos sin recibir la
palabra de IDENTIFICA-
CIÓN.
3. Si se modifica alguno de los
parámetros anteriores, debe-
mos de volver a compilar el
programa bootldr.asm.
4. Programar el microcontrola-
dor con el archivo bootldr.hex
utilizando cualquier progra-
mador de los que ya se han
visto en esta Revista, por
ejemplo el que el que aparece
en el módulo de aprendizaje
de microcontroladores PIC
que apareció en el número
189. Poniendo los bits de con-
figuración para que el micro-
controlador trabaje en la apli-
cación.
5. Recompilar el programa de la
aplicación para que no borre el
bootloader. El bootloader usa
los 256 bytes de la parte alta de
memoria de programa
(0x1F04-0x1FFF).
Llegado a este punto lo más
aclaratorio es ver un ejemplo
con un programa que utiliza
este método de carga del pro-
grama de usuario en el micro-
controlador.
El programa TMR0_1.asm es
un programa ejemplo que uti-
liza una temporización utili-
zando TMR0 sin utilizar las
interrupciones. Realiza una
temporización de 32,77 ms
que se emplea para hacer par-
padear los diodos LED pares
o impares respectivamente
conectados al PORTB. En el
código de este programa con
separados por un ";" (es decir,
como un comentario) se
encuentran las instrucciones
de salto a INICIO que utiliza-
ríamos con un programador
convencional. Y al final del
programa, en la posición
de memoria 0x1F00 hemos
escrito:
MICROCONTROLADORES
56RESISTOR
;============================ Sección fijada por el usuario ==========================
list p=16f876 ; <<< fijar el tipo de microcontrolador
;Poner el mismo microcontrolador en el proyecto
#include <p16f876.inc> ; <<< poner el archivo *.inc del microcontrolador seleccionado
#define FOSC D'4000000' ;<<< Poner la frecuencia del cuarzo (Hz), max. 20 MHz
#define BAUD D'9600' ;<<< poner la velocidad de transmisión (Bd)
#define BAUD_ERROR D'4' ;<<< Poner la tasa de error (%)
#define TIME ;<<< Poner el método inicio del bootloader PIN/TIME/AUTO
;Disparo por puesta a nivel bajo de la señal de disparo
;TIME Inicia la recepción del byte de IDENT después el RESET
#define POR PORTB ;<<< solo para el PIN – del puerto en juego
PORTB/PORTC/PORTD/PORTE
#define PORT_BIT 7 ; <<< solo para el pin PIN – poner el bit de la línea
seleccionada 0/1/2/3/4/5/6/7
#define TIMEOUT D'3' ; <<< solo para el TIME – fijar el tiempo(0.1 s), max. 25.5 s
;============ Fin de la sección fijada por el usuario ====================================
Tabla 1.- Sección del programa bootloader que debe fijar el usuario.
ORG 0x1F00
bcf PCLATH,4 ;Selecciona el banco 0 de memoria
bcf PCLATH,3
goto INICIO
Curso microcontroladoresPAGS 27/12/02 10:01 Página 56
Es decir, en las posiciones de
memoria 0x1F00-0x1F03, escri-
bimos un salto largo de 14 bits a
la posición de memoria INICIO,
que está en el banco cero de
memoria de programa. Esto últi-
mo debe verificarse si se utiliza
un compilador en C.
6. Recompilar el programa de la
aplica
COMO REALIZAR LA CARGA
EN EL MICROCONTROLADOR
1. En primer lugar se conecta la
placa de desarrollo al PC
mediante un cable de modem
nulo, tal y como se comento
anteriormete.
2. Para realizar la carga del pro-
grama de usuario, vamos a
utilizar un programa de
"carga" freware, se trata del
PIC downloader de Petr
Kolomaznik y que hemos con-
MICROCONTROLADORES
57RESISTOR
;****************************************************************************
; Programa TMR0_1.ASM Fecha : 7- Mayo-2002
; Este programa utiliza una temporización utilizando TMR0 sin utilizar las interrupciones.
;Se realiza una temporización de 32,77 ms que se emplea para hacer parpadear los diodos LED
; pares o impares respectivamente conectados al PORTB
; Programa preparado para cargar con el PIC downlader
; Revisión : 0.1 Programa para PIC16F87X
; Velocidad del Reloj: 4 MHz Reloj Instrucción: 1 MHz = 1 uS
; Perro Guardián: Deshabilitado Tipo de Reloj : XT
; Protección del código: OFF
;*****************************************************************************
List p=16F876 ;Tipo de procesador
include "P16F876.INC" ;Definiciones de registros internos
;ORG 0x00 ; Inicio del programa en
;goto INICIO
ORG 0x05 ;salva el vector de Interrupciones
INICIO bcf STATUS,RP1
bsf STATUS,RP0 ; Banco 1
movlw b'11010111' ; Valor a cargar en OPTION_REG
movwf OPTION_REG ; predivisor 256 asignado a TMR0
clrf TRISB ; PORTB como salida
bcf STATUS,RP0 ; Banco 0
clrf PORTB ; Apaga los LEDS del PORTB
BUCLE movlw b'01010101'
movwf PORTB ; Enciende los LED impares del PORTB
call RETARDO ; Llamada a subrutina de RETARDO
movlw b'10101010'
movwf PORTB ; Enciende los LED pares del PORTB
call RETARDO
goto BUCLE
RETARDO
clrf TMR0 ; TMR0 = 0 y empieza su incremento
EXPLORA
btfss TMR0,7 ; Es el bit 7 de TMR0=1?
goto EXPLORA ; No ha llegado TMR0 a 128 Decial
return ; Ha llegado TMR0 al valor 128D y retorna
; al programa principal
ORG 0x1F00
bcf PCLATH,4 ;Selecciona el banco 0 de memoria
bcf PCLATH,3
goto INICIO ;Salta a INICIO
END
Tabla 2.- Programa TMR0-1.asm para cargar con el bootloader.
Curso microcontroladoresPAGS 27/12/02 10:01 Página 57
seguido en la web
http://www.microchipc.com/ .
Una vez instalado, al ejecutar-
lo, aparece una pantalla
como la que se muestra en la
Figura 5.
3. Seleccionamos la velocidad de
transmisión en baudios, en
nuestro caso 9600, el puerto
serie de comunicación, en el
ejemplo hemos seleccionado
el COM2 y buscamos el nom-
bre del programa en código
hexadecimal que queremos
cargar en el microcontrolador,
TMR0-1.hex.
Este programa tiene las
siguientes teclas de función
rápida:
F2 - Búsqueda
F4 - Escribir
ESC - Cancelación
F10 - Salida
4. Seguidamente se pulsa el
botón de RESET y el progra-
ma se carga en el microcon-
trolador PIC. Según se va rea-
lizando la carga, aparece un
indicador de carga (línea
azul) y al finalizar la carga
suena una señal acústica.
5. Si volvemos a actuar manual-
mente sobre el pulsador de
RESET, se ejecutará el pro-
grama de usuario.
MICROCONTROLADORES
58RESISTOR
Salto al Bootloader
Espacio de memoria,
para cargar los
programas transmitidos
Salto al programa
de usuario
Código del Bootloader
0x1FFF
0x1F04
0x1F00
0x0004
0x0000
El Bootloader utiliza las
4 primeras posiciones
(0x0000-0x0003)
Espacio disponible
para el programa
del usuario
(0x0004-0x1EFF)
Primeras 4 posiciones
para el usuario
(0x1F00-0x1F03)
Código del programa
Bootloader
(0x1F04-0x1FFF)
Figura 4.- Mapa de memoria del Bootloader para un microcontrola-
dor de 8KBytes.
Figura 5.- Apariencia de la
pantalla que aparece al ejecutar el
programa PIC dowloader.
Características del programa PIC dowloader 1.8 :
q Compatible con el bootloader de HI-TECH's o de Shane Tolmie
para los microcontroladores PIC16F87x
q Funcionamientos bajo Windows 9x/ME/NT/2000
q Selección de la velocidad a partir del 2400 a 56000 Bd
q Selección del puerto serie entre el COM1-6
q Trabaja con datos de EEPROM en el archivo hexadecimal
q No envía la palabra de los configuración a la posición 0x2007 o
palabra de la identificación desde el bootloader
q Mantiene las últimas configuraciones
q Se incluye el código de fuente
q El downloader del PIC se controla al realizar una señal de dispa-
ro del RESET en el microcontrolador
q Se trabaja en ensamblador para todos aquellos programadores
que no utilizan el lenguaje C. El bootloader es muy fácil de recom-
pilar para otros microcontroladores actualizando el pin/tieme y la
frecuencias del cristal de cuarzo. Solo se necesita el programa
MPLAB de Microchip que también es gratuito.
q Se puede obtener en las siguientes webs: (http://www.ehl.cz/pic/)
(http://www.microchipc.com/)
Curso microcontroladoresPAGS 27/12/02 10:01 Página 58

Más contenido relacionado

PDF
Curso de microcontroladores capitulo 04
PDF
Curso de microcontroladores capitulo 02
PDF
Curso de microcontroladores capitulo 01
PDF
Curso de microcontroladores capitulo 07
PDF
Curso de microcontroladores capitulo 05
PDF
Curso de microcontroladores capitulo 06
PDF
Curso de microcontroladores capitulo 08
PDF
Curso de microcontroladores capitulo 09
Curso de microcontroladores capitulo 04
Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 01
Curso de microcontroladores capitulo 07
Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 09

La actualidad más candente (18)

PDF
Curso de microcontroladores capitulo 12
PDF
Programación PIC16F84A
PDF
PROYECTOS CON PIC 16F84
PDF
Adc y usart pic16 f887
PDF
programacion con microcontrolador pic 16f84
PDF
El PIC16F84
PDF
MICROCONTROLADORES II EN C. TEMA 5
DOCX
Manejo de teclado 4x4 con pic 16 f84a
PPT
Curso Micro Tema 3
PDF
Guía de ejercicios resueltos tema 2
PDF
PicSumador
PPTX
MICROCONTROLADORES II EN C. TEMA 2
PPTX
Presentacion pic 16f887 y 18f4550
PDF
Timers 2
PDF
Curso de microcontroladores capitulo 10
PDF
50824079 datasheet-pic18f4550-espanol
PPT
Curso Micro Tema 3 2
PPT
Niple diapopsitiva
Curso de microcontroladores capitulo 12
Programación PIC16F84A
PROYECTOS CON PIC 16F84
Adc y usart pic16 f887
programacion con microcontrolador pic 16f84
El PIC16F84
MICROCONTROLADORES II EN C. TEMA 5
Manejo de teclado 4x4 con pic 16 f84a
Curso Micro Tema 3
Guía de ejercicios resueltos tema 2
PicSumador
MICROCONTROLADORES II EN C. TEMA 2
Presentacion pic 16f887 y 18f4550
Timers 2
Curso de microcontroladores capitulo 10
50824079 datasheet-pic18f4550-espanol
Curso Micro Tema 3 2
Niple diapopsitiva
Publicidad

Destacado (15)

PDF
Leyes de Kirchhoff
PDF
El resistor
PDF
El transformador eléctrico.
PDF
Curso de microcontroladores capitulo 11
PDF
Conceptos básicos de electricidad
PDF
Fundamentos del diodo.
PDF
Diseño de un amplificador de RF.
PDF
Amplificador de potencia de audio
PDF
Reparacion de radios AM/FM
PDF
Armado de un amplificador para automovil.
PDF
Amplificadores en puente.
PDF
Acoustic analysis and redevelopment of A.Manzoni theatre in Cassino
DOCX
Marketing Inetnship at Pepsico (Jamshedpur)
PPTX
Measurement of dielectric properties of textile materials and their applications
PPTX
Heat Transfer
Leyes de Kirchhoff
El resistor
El transformador eléctrico.
Curso de microcontroladores capitulo 11
Conceptos básicos de electricidad
Fundamentos del diodo.
Diseño de un amplificador de RF.
Amplificador de potencia de audio
Reparacion de radios AM/FM
Armado de un amplificador para automovil.
Amplificadores en puente.
Acoustic analysis and redevelopment of A.Manzoni theatre in Cassino
Marketing Inetnship at Pepsico (Jamshedpur)
Measurement of dielectric properties of textile materials and their applications
Heat Transfer
Publicidad

Similar a Curso de microcontroladores capitulo 03 (20)

PPTX
Grabacion de microcontroladores_pic
DOCX
Practica1 1
DOCX
Practica1 1
DOCX
Practica1 1
PDF
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
PPTX
Microcontroladores clase 2
PDF
⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886
PDF
pic16f877-con-mikroc.pdf
PDF
Curso integral pic_236
PPTX
Tarea final
DOCX
Bootloader
PDF
Microcontroladores: Tutorial de microcontrolador AVR desde 0
PPTX
Programacionpic
PDF
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
PDF
El microcontrolador PIC16F877
PDF
Microcontroladores tabla de referencia
PPTX
Introducpic
PPTX
Introducpic2
PDF
Libro basico pic
PPTX
teo bootloader.pptx
Grabacion de microcontroladores_pic
Practica1 1
Practica1 1
Practica1 1
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
Microcontroladores clase 2
⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886
pic16f877-con-mikroc.pdf
Curso integral pic_236
Tarea final
Bootloader
Microcontroladores: Tutorial de microcontrolador AVR desde 0
Programacionpic
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
El microcontrolador PIC16F877
Microcontroladores tabla de referencia
Introducpic
Introducpic2
Libro basico pic
teo bootloader.pptx

Más de Hamiltonn Casallas (12)

PDF
Sistema Ubuntu
PDF
Compilador CCS y simulador proteus para microcontroladores PIC
PDF
Electricidad básica y aplicaciones
PDF
Circuitos impresos
PDF
Disipadores de calor
PDF
Reparación de amplificadores de audio
PDF
Amplificador Push - Pull
PDF
Construcción de bobinas ajustables.
PDF
Circuito de entrada y antena.
PDF
Radios de AM
PDF
Armando un generador de RF
PDF
La reactancia en la electricidad.
Sistema Ubuntu
Compilador CCS y simulador proteus para microcontroladores PIC
Electricidad básica y aplicaciones
Circuitos impresos
Disipadores de calor
Reparación de amplificadores de audio
Amplificador Push - Pull
Construcción de bobinas ajustables.
Circuito de entrada y antena.
Radios de AM
Armando un generador de RF
La reactancia en la electricidad.

Último (20)

PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PDF
Tomo 1 de biologia gratis ultra plusenmas
PDF
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
DOCX
UNIDAD DE APRENDIZAJE 5 AGOSTO tradiciones
PDF
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
PDF
biología es un libro sobre casi todo el tema de biología
PDF
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
DOCX
PROYECTO DE APRENDIZAJE para la semana de fiestas patrias
PDF
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
PDF
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
PDF
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
PPTX
caso clínico iam clinica y semiología l3.pptx
PDF
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
PDF
Escuelas Desarmando una mirada subjetiva a la educación
PDF
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
PDF
5°-UNIDAD 5 - 2025.pdf aprendizaje 5tooo
DOCX
PLAN DE CASTELLANO 2021 actualizado a la normativa
PDF
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
PPTX
AGENTES PATÓGENOS Y LAS PRINCIPAL ENFERMEAD.pptx
PDF
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
Tomo 1 de biologia gratis ultra plusenmas
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
UNIDAD DE APRENDIZAJE 5 AGOSTO tradiciones
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
biología es un libro sobre casi todo el tema de biología
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
PROYECTO DE APRENDIZAJE para la semana de fiestas patrias
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
caso clínico iam clinica y semiología l3.pptx
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
Escuelas Desarmando una mirada subjetiva a la educación
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
5°-UNIDAD 5 - 2025.pdf aprendizaje 5tooo
PLAN DE CASTELLANO 2021 actualizado a la normativa
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
AGENTES PATÓGENOS Y LAS PRINCIPAL ENFERMEAD.pptx
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf

Curso de microcontroladores capitulo 03

  • 1. S i habéis utilizado un programador por el puerto serie del ordena- dor para programar los PIC16F87X, utilizando el maravilloso software libre IC- Prog, habréis comprobado que el tiempo de carga del PIC16F876, por ejemplo, que tiene 8K es de varios minutos que se hacen interminables, sobretodo cuando estamos programando y depu- rando programas. Lo que presentamos en este curso es un circuito que a través de la USAR de los PIC 16F87X es capaz de ponerse en comuni- cación con ellos y cargar en la memoria de programa el código hexadecimal del programa que queremos que se ejecute. Esto reduce considerablemente el tiempo de programación ya que solo carga los códigos del pro- grama que queremos cargar. La placa que hemos diseñado además de utilizarla como pro- gramadora, se puede utilizar como placa de desarrollo, ya que se dispone de acceso a todos y cada uno de los pines del micro- controlador a través de la tira de postes para circuito impreso macho acodados y dispone de un circuito oscilador a cristal en nuestro caso a 4 MHz, tal y como se puede ver en el circuito de la Figura 1. DESCRIPCIÓN DEL CIRCUITO El circuito consta de un microcontrolador PIC16F876 al que se le han conectado un cristal de cuarzo de 4MHz y los condensadores de desacoplo de 27 pF y un pulsador que cuando se activa pone un nivel bajo en la entrada MCLR para provocar un RESET del sistema. Además para poder conectar la USART del microcontrolador al ordenador, se ha utilizado un circuito adaptador de niveles MAX232, tal y como indica el fabricante en sus notas de aplicación, y por último se le ha dotado de un conector acodado DB-9 macho para poder conectar el circuito al puerto serie CURSO DE MICROCONTROLADORES PIC16F87X (...y III) CURSO DE MICROCONTROLADORES PIC16F87X (...y III) Fernando Remiro Domínguez Profesor de Sistemas Electrónicos IES. Juan de la Cierva www.terra.es/personal/fremiro MICROCONTROLADORES 54RESISTOR Programador para PIC16F87X con bootloader. Curso microcontroladoresPAGS 27/12/02 10:01 Página 54
  • 2. del ordenador. El cable de conexión debe ser un modem nulo, es decir, un cable que solo necesita la línea de masa conectada al terminal 5 de los dos conectores y se cruzan las líneas 2 de un extremo (RxD) con la 3 del otro (TxD) y viceversa. Ver el diagrama de conexión de la Figura 3. Además la placa dispone de un conector ARJ11, conectado a las líneas MCLR, RB3, RB6 y RB7 del microcontrolador, lo que permite realizar la conexión a un módulo ICD (Depurador en circuito), que como veremos es una herramienta de bajo costo que conectada al PC y en el mismo entorno del MPLAB, permite la visualización de los registros del microcontrolador en los puntos de ruptura que se establezcan. Pudiéndose ejecutar los programas en tiempo real o en modo paso a paso. Figura 1.- circuito de la placa de desarrollo y de programación con el bootloadaer VSS VDD VCC VCC VCC VCC VCC VCC VSS VCC RC2 TXPC RC7 RC6 RB7 RB3 RA5 RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 RA0 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 RA4 RA3 RA2 RA1 RB6 MCLR MCLR RC7 RC6 RB3 MCLR RB0 RC3 RA3 RC5 RB1RA5 RA2 RB2 RB6 RA1 RC1 RC0 RA0 RC4 RB4 RB5 RB7 RA4 RXPC RXPC TXPC R2 100 R1 10K J1 CON6 1 2 3 4 5 6 C5 1uF C2 1uF C3 1uF C1 1uF C8 0.1u P1 DB9 5 9 4 8 3 7 2 6 1 C4 1uF U1 MAX232 1 2 3 6 4 5 14 13 12 11 9 10 8 7 15 16 C1+ V+ C1- V- C2+ C2- T1OUT R1IN R10UT T1IN 9 10 8 7 GND VCC U2 PIC16F873 1 2 3 4 5 6 7 9 10 11 12 13 14 28 27 26 25 24 23 22 21 18 17 16 15 20 19 8 MCLR/VPP RA0/AN0 RA1/AN1 RA2/AN2 RA3/AN3/VREF RA4/TOCKI RA5/SS/AN4 OSC1/CLKIN OSC2/CLKOUT RC0/T1OS0/T1CKI RC1/T1OS1/CCP2 RC2/CCP1 RC3/SCK/SCL RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0/INT RC7/RX/DT RC6/TX/CK RC5/SDO RC4/SDI/SDA VDD VSS VSS SW1 RESET J2 CON25 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 E1 ESP C6 27pF C7 27pF X1 4MHz CONECTOR RJ11 DEBUGE Figura 2.- Conexión del ICD a la placa de desarrollo. Figura 3 .- Cable de conexión MODEM nulo para la conexión de la placa de desarrollo con el PC. Curso microcontroladoresPAGS 27/12/02 10:01 Página 55
  • 3. COMO UTILIZAR EL PROGRAMA BOOTLOADER 1. En primer lugar debemos obtener el programa en la siguiente web http://www.ehl.cz/ pic/pic_e.htm , donde también se puede obtener el PIC donwloa- der V1.8. 2. Abrir el proyecto bootldr.pjt utilizando el programa Microchip MPLAB y cambiar los parámetros de la sección de usuario marcados dentro del ensamblador con las mar- cas <<<, tal y como se muestra en la Tabla 1, en la que hemos fijado el microcontrolador PIC16F876, con un oscilador de 4MHz, una velocidad de transmisión de 9600 baudios y utiliza el pin 7 del PORTB como señal de disparo para ejecutar el bootloader cuando está a nivel bajo y correr el programa de usuario cuando está a nivel alto. Por tiempo entra en el programa de usua- rio después de haber pasado 0,3 segundos sin recibir la palabra de IDENTIFICA- CIÓN. 3. Si se modifica alguno de los parámetros anteriores, debe- mos de volver a compilar el programa bootldr.asm. 4. Programar el microcontrola- dor con el archivo bootldr.hex utilizando cualquier progra- mador de los que ya se han visto en esta Revista, por ejemplo el que el que aparece en el módulo de aprendizaje de microcontroladores PIC que apareció en el número 189. Poniendo los bits de con- figuración para que el micro- controlador trabaje en la apli- cación. 5. Recompilar el programa de la aplicación para que no borre el bootloader. El bootloader usa los 256 bytes de la parte alta de memoria de programa (0x1F04-0x1FFF). Llegado a este punto lo más aclaratorio es ver un ejemplo con un programa que utiliza este método de carga del pro- grama de usuario en el micro- controlador. El programa TMR0_1.asm es un programa ejemplo que uti- liza una temporización utili- zando TMR0 sin utilizar las interrupciones. Realiza una temporización de 32,77 ms que se emplea para hacer par- padear los diodos LED pares o impares respectivamente conectados al PORTB. En el código de este programa con separados por un ";" (es decir, como un comentario) se encuentran las instrucciones de salto a INICIO que utiliza- ríamos con un programador convencional. Y al final del programa, en la posición de memoria 0x1F00 hemos escrito: MICROCONTROLADORES 56RESISTOR ;============================ Sección fijada por el usuario ========================== list p=16f876 ; <<< fijar el tipo de microcontrolador ;Poner el mismo microcontrolador en el proyecto #include <p16f876.inc> ; <<< poner el archivo *.inc del microcontrolador seleccionado #define FOSC D'4000000' ;<<< Poner la frecuencia del cuarzo (Hz), max. 20 MHz #define BAUD D'9600' ;<<< poner la velocidad de transmisión (Bd) #define BAUD_ERROR D'4' ;<<< Poner la tasa de error (%) #define TIME ;<<< Poner el método inicio del bootloader PIN/TIME/AUTO ;Disparo por puesta a nivel bajo de la señal de disparo ;TIME Inicia la recepción del byte de IDENT después el RESET #define POR PORTB ;<<< solo para el PIN – del puerto en juego PORTB/PORTC/PORTD/PORTE #define PORT_BIT 7 ; <<< solo para el pin PIN – poner el bit de la línea seleccionada 0/1/2/3/4/5/6/7 #define TIMEOUT D'3' ; <<< solo para el TIME – fijar el tiempo(0.1 s), max. 25.5 s ;============ Fin de la sección fijada por el usuario ==================================== Tabla 1.- Sección del programa bootloader que debe fijar el usuario. ORG 0x1F00 bcf PCLATH,4 ;Selecciona el banco 0 de memoria bcf PCLATH,3 goto INICIO Curso microcontroladoresPAGS 27/12/02 10:01 Página 56
  • 4. Es decir, en las posiciones de memoria 0x1F00-0x1F03, escri- bimos un salto largo de 14 bits a la posición de memoria INICIO, que está en el banco cero de memoria de programa. Esto últi- mo debe verificarse si se utiliza un compilador en C. 6. Recompilar el programa de la aplica COMO REALIZAR LA CARGA EN EL MICROCONTROLADOR 1. En primer lugar se conecta la placa de desarrollo al PC mediante un cable de modem nulo, tal y como se comento anteriormete. 2. Para realizar la carga del pro- grama de usuario, vamos a utilizar un programa de "carga" freware, se trata del PIC downloader de Petr Kolomaznik y que hemos con- MICROCONTROLADORES 57RESISTOR ;**************************************************************************** ; Programa TMR0_1.ASM Fecha : 7- Mayo-2002 ; Este programa utiliza una temporización utilizando TMR0 sin utilizar las interrupciones. ;Se realiza una temporización de 32,77 ms que se emplea para hacer parpadear los diodos LED ; pares o impares respectivamente conectados al PORTB ; Programa preparado para cargar con el PIC downlader ; Revisión : 0.1 Programa para PIC16F87X ; Velocidad del Reloj: 4 MHz Reloj Instrucción: 1 MHz = 1 uS ; Perro Guardián: Deshabilitado Tipo de Reloj : XT ; Protección del código: OFF ;***************************************************************************** List p=16F876 ;Tipo de procesador include "P16F876.INC" ;Definiciones de registros internos ;ORG 0x00 ; Inicio del programa en ;goto INICIO ORG 0x05 ;salva el vector de Interrupciones INICIO bcf STATUS,RP1 bsf STATUS,RP0 ; Banco 1 movlw b'11010111' ; Valor a cargar en OPTION_REG movwf OPTION_REG ; predivisor 256 asignado a TMR0 clrf TRISB ; PORTB como salida bcf STATUS,RP0 ; Banco 0 clrf PORTB ; Apaga los LEDS del PORTB BUCLE movlw b'01010101' movwf PORTB ; Enciende los LED impares del PORTB call RETARDO ; Llamada a subrutina de RETARDO movlw b'10101010' movwf PORTB ; Enciende los LED pares del PORTB call RETARDO goto BUCLE RETARDO clrf TMR0 ; TMR0 = 0 y empieza su incremento EXPLORA btfss TMR0,7 ; Es el bit 7 de TMR0=1? goto EXPLORA ; No ha llegado TMR0 a 128 Decial return ; Ha llegado TMR0 al valor 128D y retorna ; al programa principal ORG 0x1F00 bcf PCLATH,4 ;Selecciona el banco 0 de memoria bcf PCLATH,3 goto INICIO ;Salta a INICIO END Tabla 2.- Programa TMR0-1.asm para cargar con el bootloader. Curso microcontroladoresPAGS 27/12/02 10:01 Página 57
  • 5. seguido en la web http://www.microchipc.com/ . Una vez instalado, al ejecutar- lo, aparece una pantalla como la que se muestra en la Figura 5. 3. Seleccionamos la velocidad de transmisión en baudios, en nuestro caso 9600, el puerto serie de comunicación, en el ejemplo hemos seleccionado el COM2 y buscamos el nom- bre del programa en código hexadecimal que queremos cargar en el microcontrolador, TMR0-1.hex. Este programa tiene las siguientes teclas de función rápida: F2 - Búsqueda F4 - Escribir ESC - Cancelación F10 - Salida 4. Seguidamente se pulsa el botón de RESET y el progra- ma se carga en el microcon- trolador PIC. Según se va rea- lizando la carga, aparece un indicador de carga (línea azul) y al finalizar la carga suena una señal acústica. 5. Si volvemos a actuar manual- mente sobre el pulsador de RESET, se ejecutará el pro- grama de usuario. MICROCONTROLADORES 58RESISTOR Salto al Bootloader Espacio de memoria, para cargar los programas transmitidos Salto al programa de usuario Código del Bootloader 0x1FFF 0x1F04 0x1F00 0x0004 0x0000 El Bootloader utiliza las 4 primeras posiciones (0x0000-0x0003) Espacio disponible para el programa del usuario (0x0004-0x1EFF) Primeras 4 posiciones para el usuario (0x1F00-0x1F03) Código del programa Bootloader (0x1F04-0x1FFF) Figura 4.- Mapa de memoria del Bootloader para un microcontrola- dor de 8KBytes. Figura 5.- Apariencia de la pantalla que aparece al ejecutar el programa PIC dowloader. Características del programa PIC dowloader 1.8 : q Compatible con el bootloader de HI-TECH's o de Shane Tolmie para los microcontroladores PIC16F87x q Funcionamientos bajo Windows 9x/ME/NT/2000 q Selección de la velocidad a partir del 2400 a 56000 Bd q Selección del puerto serie entre el COM1-6 q Trabaja con datos de EEPROM en el archivo hexadecimal q No envía la palabra de los configuración a la posición 0x2007 o palabra de la identificación desde el bootloader q Mantiene las últimas configuraciones q Se incluye el código de fuente q El downloader del PIC se controla al realizar una señal de dispa- ro del RESET en el microcontrolador q Se trabaja en ensamblador para todos aquellos programadores que no utilizan el lenguaje C. El bootloader es muy fácil de recom- pilar para otros microcontroladores actualizando el pin/tieme y la frecuencias del cristal de cuarzo. Solo se necesita el programa MPLAB de Microchip que también es gratuito. q Se puede obtener en las siguientes webs: (http://www.ehl.cz/pic/) (http://www.microchipc.com/) Curso microcontroladoresPAGS 27/12/02 10:01 Página 58