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).

Background

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


Réalisation - Utilisation

La réalisation n'appelle pas de commentaires particuliers.

Routage sous PCBoard (importable dans Orcad).
Routage sous Orcad.
Copie d'écran du PCB

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 =-