Encore un !
Pourquoi refaire la roue alors qu'il en existe déjà
de nombreuses versions un peu partout ? Pourquoi ne pas utiliser des
flasheurs déjà fait comme les PIC-START ?
Tout d'abord, ce flasheur a été réalisé
dans un but précis : être pratique à utiliser,
uniquement dans le cadre de son utilisation d'origine
: programmation de cartes à base de PIC pour la coupe de
robotique E=M6.
Ensuite le problème est souvent de trouver le schéma
et le logiciel qui vont bien ensemble, il n'existe pas de 'standards'
(bien que certains schémas - ex: JDM-Programmer sont
assez répandus). Certains schémas ont aussi la particularité
d'être peu fiables ou dépendant du PC utilisé
(portable, etc, etc).
Caratéristiques
-
Le flasheur utilise l'alimentation de la carte
cible (5V).
-
Il utilise le 'high voltage programming'.
-
Il réalise une programmation in-situ
uniquement (flashage du pic directement sur la carte cible, sans
enlever le PIC ou débrancher la carte, seul le connecteur
du flasheur vient s'enficher sur la carte cible).
-
Il n'est pas nécessaire de débrancher
le flasheur pour pouvoir utiliser la carte cible ('true
in-situ')...
-
Il n'utilise que des composants courants facilement
disponibles (en libre service par ex).
-
Le soft
essaye de programmer "au plus vite" (20s pour flasher/vérifier
8ko)
-
FPP
V2.00 permet de flasher les 18Fxx la vitesse de 6ko/s environ.
-
Le
flasheur peut être branché sur la cible et débranché
du port // sans avoir de problèmes.
- Il est 'cher' pour un montage 'maison'.
- Il consomme beaucoup sur la carte cible (environ 30mA).
Flasher un PIC, c'est écrire dans la flash. C'est à
dire qu'il y a transfert d'informations entre le PC et le PIC
(dans les 2 sens). Il faut réaliser 2 opérations
:
- Faire passer le PIC en mode 'programmation'.
- Transférer les données.
Le plus simple est le transfert de données, qui
est réalisé sous forme série. Il utilise
sur le PIC les broches RB6 et RB7. La broche RB6 reçoit
l'horloge. La broche RB7 reçoit OU envoie
les données.
Faire passer un PIC en mode programmation peut se faire
de 2 façons :
-
soit en appliquant une tension de 13V sur
la patte MCLR/Reset, c'est le mode programmation 'high
voltage'
- soit en appliquant un '1' (5V) sur la patte RB3, c'est le mode programmation
'low voltage'
Une très grande majorité (si ce n'est tous) les PIC supportent
le mode programmation 'high voltage'. Quelque uns (ex : 16F877)
supportent aussi le mode programmation 'low voltage'.
Il est à noter que sur les PIC qui supportent le mode de programmation
'low voltage', un bit de configuration sert à indiquer
si le 'low voltage' est activé. Si ce bit n'est pas activé,
alors la patte RB3 peut servir comme une E/S standard. Si ce bit
est activé, alors la patte RB3 ne sert plus qu'à
passer le pic en programmation. Il faut dans ce cas la ramener à
0 par un pull down (ex résistance de 10k). Par défaut
le bit 'low voltage' est activé.
Pourquoi y a-t-il besoin de 13,5V en 'high voltage' ?
Le mode 'high voltage', utilise la patte MCLR/Reset pour passer
en mode programmation. Cette patte sert déjà à
réinitialiser le PIC, à '0' (0V) elle met le PIC en reset
et à '1' (5V) elle permet au programme de se dérouler.
Il faut donc un "3ème état". Ce "3ème
état" est détecté lorsque la tension sur
la patte atteint 13V.
Mais cela pose 2 problèmes : il faut avoir/générer
cette tension de 13V et il faut faire attention à ne pas appliquer
cette tension ailleurs. Seule la patte MCLR/Reset a un circuit spécial
en interne qui lui permet de ne pas subir de dégât
lorsqu'on applique une tension supérieure à la tension
de programmation.
A l'origine cette tension servait à programmer la flash. Maintenant
la tension de 13.5V qui sert à programmer physiquement la flash
est générée en interne. La tension qui est appliquée
sur la patte externe est juste l''information'
'passer en mode programmation'
Pourquoi ne pas avoir fait que du 'bas voltage' ?
Une des raisons est le gain d'une patte. En bas voltage, la patte RB3
ne sert qu'à entrer en mode programmation. Autant sur
un boîtier à 40 pattes, dédier une patte à
la programmation n'est pas gênant, autant sur un petit PIC, cela
peut être une perte importante (ex : 16F84 : 13 E/S, dédier
une patte à la programmation revient à se priver d'une
E/S sur les 13).
Schéma
Flasheur de PIC True In Situ - Bat 2001-2002
Au niveau de la connectique, il faut minimiser la longueur
du câble allant vers la carte cible.
Sur la carte cible, il faut que le circuit de reset
présente une impédance minimale de 100k.
On pourra utiliser le montage suivant
Pour tester le montage :
-
Brancher le flasheur sur une carte cible,
où l'on a enlevé le PIC
- Alimenter la carte cible
- Le flasheur ne doit pas 'fumer' sinon retourner à la case
départ.
- Utiliser le mode 'test' du logiciel ( cf Aide
de fpp)
Les problèmes possibles
Sur RB6 et RB7, les problèmes viennent de soudures
défectueuses et/ou inversion du sens des composants.
Penser à vérifier aussi que la donnée retournée
vers le port parallèle (data in) est correcte.
Sur MCLR/Reset, plusieurs problèmes peuvent se présenter.
Il faut commencer par vérifier que la pompe de charge
fonctionne correctement (à vide, sans que la prise parallèle
soit branchée). Il faut ensuite vérifier qu'il
n'y a pas de problèmes sur les transistors de commande
de vpp ET celui qui sert au reset (ex : court-circuit).
Le logiciel
Il est compatible avec toutes les versions de Win. Il a été
testé avec succès sur Win 95,98,2K,XP.
Téléchargement -
Aide de fpp
Variantes
On peut réaliser diverses variantes. Chaque morceau
peut être modifié ou remplacé. On peut par
exemple remplacer la pompe de charge par une alimentation externe,
on peut aussi simplifier le circuit de contrôle de MCLR/Reset,
etc, etc. Le montage peut être librement modifié.
-= Email :
manu_bat_manu@yahoo.fr - Retour à
la première page =-
|