ACCUEIL  ACTUALITES  FORUMS  WIKI  TELECHARGEMENTS  LIENS
Menu principal
ATMEL AVR
PCB - CAO
ELECTRONIQUE
Qui est en ligne
6 utilisateur(s) en ligne

Membre(s): 0
Invité(s): 6

plus...
Infos du site
JELECTRONIQUE - Bootloader PIC 16F87X et 16F87XA

Bootloader - Programmateur de PIC 16F87X et 16F87XA

Introduction

Le bootloader est un microprogramme qui s'installe dans le pic et qui évite de le sortir, à chaque fois, de son système pour le reprogrammer (ISP In-System Programmer).
Il utilise une l'interface RS232 pour le transfère de programme, donc il faut en plus un max232 dans votre système.
Ca augmente le nombre de composants mais ça facilite énormément la programmation (Idéal pour les cartes de développement).
Il suffit de brancher le câble série sur votre carte, lancer la programmation et voilà votre pic est programmé.

Il est compatible avec tous les PIC 16F87X(A)

Le site officiel
Vous y trouverez un pack .
Il contient différents microprogrammes bootloader (sources et .hex) en fonction des pic et de leurs quartz.
Dans le répertoire Downloader Windows, il y a le downloader qui permet de transférer vos programmes dans le pic grâce au bootloader

Schéma de base du programmateur



Le site de JP Mandon

C'est un site francophone qui regroupe de nombreuses informations sur la programmation des PIC et surtout une traduction du bootloader.
A ne pas manquer : http://jmandon.free.fr/bootloader/bootloader.htm

Le créateur du site a aussi fait un article dans l'électronique pratique de juin 2002 mais faites attention, j'ai trouvé une erreur le RX et le TX au niveau du DB9 sont inversés.

Télécharger le Bootloader de JP Mandon


Le site de Bigonoff

Vous trouverez une variante du bootloader que je n'ai pas eu l'occasion de tester mais vu la qualité de tous les autres projets qu'il a réalisé elle doit être excellente donc à voir aussi:
Le site de Bigonoff "Cours sur les PICs - Part3 - les secrets de PIC16F87x - Techniques du bootloader"

Les étapes de programmation

1 - Modifiez la configuration de votre bootloader (bootldr.asm ou bootldra.asm) compilez le avec MPLAB ou utilisez le fichier .hex déjà tout fait fournit dans le pack ex: bootldr-16F876A-20MHz-19200bps.HEX

Il existe 2 versions différentes du bootloader pour les pic version A et les non A donc ne prenez pas un source bootloader (bootldr.asm) pour un 16F876A et ne mettez pas simplement list p=16f876A ça ne marchera pas.
Utilisez le bootldra.asm ou un .hex pour la version A. La programmation des "A" se fait par groupe de 4 mots contrairement aux non-A.

Voici la configuration de mon source pour un pic 16F876A avec un 20Mhz :

;================== User setting section ==============================  ========

	list p=16f876a			; <<< set type of microcontroller  (16f873a or 16f876a)
					;     set same microcontroller in the project
	#define ICD_DEBUG 0		; <<< if using MPLAB ICD Debugger, moves bootloader down 256 bytes to make room for it [0|1]
	#define FOSC D'20000000'	; <<< set quartz frequence [Hz], max. 20 MHz
	#define BAUD D'19200'		; <<< set baud rate [bit/sec]
	#define	BAUD_ERROR	D'4'	; <<< set baud rate error [%]
	#define TIME			; <<< set method of bootloader start PIN/TIME
					;     PIN	: start on low level of trigger pin
                           		; TIME: start on receive IDENT byte in TIMEOUT
  	#define	TRIGGER		PORTC,5 ; <<< only for PIN - set PORT_X,PIN_NR
	#define	TIMEOUT		D'2'	; <<< only for TIME - set time [0.1s], max. 25 sec
	#define WATCHDOGTIMER 0		; <<< Watchdog timer default OFF/ON [0|1]


2 - Programmez votre pic avec un programmateur "standard".

3 - Démarrez le programme PIC downloader et branchez le câble série entre votre carte et le PC.

4 - Sélectionnez votre programme dans le downloader en cliquant sur search.

Votre programme doit avoir cette structure :

LIST      p=16F876A
#include <p16F876A.inc>

ORG 0x0000
goto init
nop
nop
nop
ORG 0x0004

init

;-----------
;Votre Code
;-----------

END


Programme exemple qui met le PortB à l'état haut :

LIST      p=16F876A
#include <p16F876A.inc>

ORG 0x0000
goto init
nop
nop
nop
ORG 0x0004

init
bcf STATUS,RP0 ;PortB en sortie
bsf	STATUS,RP0 
movlw 0x00
movwf PORTB

bcf	STATUS,RP0 ; PortB a FF
movlw 0xFF
movwf PORTB

nop ; permet de faire un fichier .hex multiple de 4 mots

END
Télécharger ce code, Led.zip (le fichier .asm, le .hex, le projet MPLAB)

ATTENTION pour la série A:
Vu que la programmation se fait par groupes de 4 mots la taille du code doit être un multiple de 4 mots. Si votre code n'est pas un multiple de 4 mots vous pouvez simplement rajouter un ou quelques nop comme je l'ai fais pour le programme led.

Pour vérifier, il suffit d'utilier IC-Prog qui groupe automatiquement le code en mots.

EX pour led:

Sans le nop, la dernière ligne est composée de 3 mots donc le code n'est pas multiple de 4 mots :


Dans ce cas, Pic Downloader transfèrera le programme dans le PIC mais il ne s'exécutera pas.

Avec le nop, la dernière ligne est composée de 4 mots donc le code est bien multiple de 4 mots :




5 - Cliquez sur Write

Le Downloader se met en attente de transfère "Searching for bootloader"

6 - Pour lancer le transfère, il faut alimenter le pic.
A la mise sous tension, le downloader va transférer le code dans le pic si le code ne détecte pas le downloader le code déjà présente dans le pic sera exécuté.

Soit la barre de progression va jusqu'à la fin et votre pic est programmé (All OK !)



Soit vous avez (erreur d'écriture) et là il y a eu un problème lors du transfère peut être votre quartz qui n'est pas à la bonne fréquence ou votre débit par défaut, 19200Bd, dans le downloader n'est pas le même que celui du bootloader dans votre pic.

Plaquette de dévelopement

J'ai fais une plaquette de développement bootloader avec de l'i2c, un connecteur clavier PC un connecteur pour une manette de jeux DB15, etc.


Schéma

Typon



Coté pistes
Straps
Composants

/!\ Si vous utilisez Acrobat Reader, vous devez désactiver la mise à l'échelle automatique dans Fichier -> Imprimer ... -> Mise à l'échelle : Aucune.
Si ce n'est pas fait, le typon ne sera pas à la taille réelle.