Un flasheur de PIC 'true in-istu'...


Abstract - Caractéristiques - Background - Schéma - Réalisation/Utilisation
Conception/Explication du fonctionnement
Logiciel - Aide/Utilisation
[Retour au sommaire]


Conception - Fonctionnement

Flasheur de PIC True In Situ - Bat 2001-2002

Ce schéma est plus récent que les parties de schéma servant à l'explication. Certaines valeurs ont été optimisées.

 

Le schéma se décompose en plusieurs blocs:
    • Le transfert de données
    • La commande de la patte MCLR/RESET
    • La pompe de charge
    • La connectique


Le transfert de données

Cette partie est (presque)la plus simple qui puisse exister.

L'horloge (RB6) est générée par une sortie du port parallèle. Lorsque la sortie du port parallèle est à '0' (0V), la diode conduit et on relève sur RB6 une tension proche de 0,6V. Cette tension est interprétée comme un '0' logique par le PIC. Lorsque la sortie du port parallèle est à '1' (5V), la diode est bloquée, la patte RB6 est rapellée à '1' par la résistance R5.

Les données (RB7) sont envoyées de la même façon du port parallèle vers le PIC. Le transfert du PIC vers le port parallèle peut avoir lieu lorsque la sortie du port parallèle est à '1'. La diode ne conduit pas et le PIC peut 'imposer' 0V ou 5V sur sa sortie. Cette donnée est renvoyée directement vers une entrée du port parallèle.

Il est à noter que physiquement, entre les pattes RB6,RB7 et les diodes, l'impédance de sortie est de 10k (New : 4.7k - meilleure insensibilité aux parasites pours des cables longs). Ces fils seront d'autant plus suceptibles aux parasites. Il est nécessaire de minimiser la longueur de la liaison flasheur ->PIC. Si il est utilisé du cable en nappe, il y'a un fort risque pour qu'il y ait une induction d'un cable voisin dans RB6 ou RB7.

Pourquoi ne pas connecter directement le PIC et le port parallèle ?
On pourrait imaginer un montage où RB6,RB7 du PIC sont directement reliés au port parallèle. C'est envisageable seulement dans le cas où le port supporte le mode bidirectionnel (le cas de tous les ports parallèles maintenant).
Le montage indiqué au dessus a un autre avantage : même si le port parallèle est en sortie (et à '1', ce qui est le cas 'standard' au repos), et que les E/S RB6 et/ou RB7 sont en sortie et à '0' sur le PIC, on ne risque pas de 'cramer' l'un où l'autre ...

------------------


La commande de la patte MCLR/Reset

Le flasheur est 'high voltage', il va donc appliquer 13V sur la patte MCLR pour passer en mode 'programmation'.

Cette patte peut donc être :

  • Soit à 0V, le PIC est en reset
  • Soit à 5V, le PIC est en fonctionnement normal
  • Soit à 13V, le PIC est en mode programmation

Pour uniquement programmer le PIC, on peut n'utiliser que 2 modes : reset(0V) et programmation(13,5V). Ici on veut en plus pouvoir utiliser le montage normallement, il faut donc gérer les 3 cas.

Si lpt_request_vpp (sortie du port parallèle) est à '1', la tension de programmation est appliquée sur la patte MCLR/reset (Reset).
Si lpt_request_reset est à '1', la patte MCLR/reset (Reset) est à 0.
Si lpt_request_vpp et lpt_request_reset sont à 0, la patte MCLR/Reset (Reset) est laissée libre et le montage peut fonctionner normallement.

Pourquoi 3transistors ? Pourquoi ces valeurs de résistances ?
Le Vpp (tension de programmation : 13V) est généré par une pompe de charge qui ne peut pas débiter beaucoup de courant, il faut donc éviter de consommer trop de courant pour la commande du Vpp
Lorsque lpt_request_vpp est à '1', Q3 est saturé, il peut donc circuler un courant dans R3 et le transistor Q1 est lui aussi saturé. En prenant R3 = 47k, on a un courant pour la commande (Q1) de 13/47 = 0,2mA.
R4 (100k) et R2 (47k) peuvent paraitres 'élevées' (on pourrait prendre 4,7k, ce qui assurerait de sur-saturer les transistors et d'avoir un fonctionnement plus 'sûr'). Cependant, sur certains ports parallèles, le '0' logique n'est pas exactement à 0V, et la faible tension résiduelle (quelques centaines de mV) suffit à saturer le transistor lorsqu'on prend 4,7k ....

New : la commande des transistors par les résistances (R2 et R4) a été modifiée. Elle se fait via un pont de 2 résistances par transistors, ce qui permet de pallier aux port // n'ayant pas exactement 0V et d'être beaucoup plus insensible lorsque le flasheur n'est pas branché du côté du port //.

Au lieu d'utiliser 2 transistors pour commander Vpp, on aurait pu utiliser ceci

Seulement, Vpp est généré par une pompe de charge.
Lorsque l'on 'fait chuter' Vpp en le reliant (via R12 de 1k) à la masse, on perturbe le fonctionnement de la pompe de charge. Le problème va intervenir lorsque l'on 'relachera' Vpp, car la pompe de charge va mettre un 'certain temps' à redémarrer ...

La zener 12V et les 2 diodes permettent de limiter la tension Vpp à 12+0,7+0,7 soit 13,4V

New : la zéner a été enlevée, la tension peut prendre des valeurs plus importantes et même dépasser l' ABSOLUTE MAXIMUM RATING supporté par le pic. Cependant, le courant restant extremement faible, il ne doit pas y avoir de risques.

------------------


La pompe de charge

La pompe de charge est constituée d'un oscillateur à base de NE 555.
Lorsque la sortie (OUT) est à 0V, le condensateurs C5 se charge (à travers D9). Lorsque la sortie passe à 5V, C5 est resté chargé et on donc 5V entre OUT et la masse et 5V aux bornes du condensateur, soit 10V entre le + du condensateur et la masse.

On répète l'opération 4 fois. Pour ceci, il faut imposer des signaux en opositions aux condensateur successifs. C'est à dire que si on à 5V sur la borne '-' de C5, on doit avoir 0V sur la borne '-' de C4, et 5V sur la borne '-' de C3. C2 permet de recueuillir le résultat.
Pour réaliser l'inversion, on utilise Q4, lorsque OUT est à 0V, Q4 conduit et on a 5V sur son collecteur, lorsque OUT est à 5V, Q4 est bloqué et on 'impose assez franchement' (à travers R10 = 47 ohms), 0V sur C4. Cette façon de procéder simplifie l'opération, mais elle a plusieurs désavantages :
-elle consomme beaucoup de courant lorsque Q4 est saturé ( 10mA à travers R10, plus ce qui vient de C4)
-même si R10 est faible, lorsque Q4 ne conduit pas, on impose pas 'très' fortement 0V sur C4 (il y aura toujours une tension aux bornes de R10)

On devrait obtenir 4*5V soit 20V en sortie du quadrupleur. Seulement on peut déjà retrancher 4*0,6V soit 2.4V 'consommés' par les diodes, soit 20-2.4 = 17.8 V. En pratique on obtient 17,5V à vide et 14 ou 15 V avec une charge de 100k.

New : Les valeurs des résistances et des condensateurs ont été revues. De plus la commande de Q4 a été améliorée (présence d'un condensateur, permettant d'assurer des signaux plus carrés)

------------------


La connectique

La seule remarque est que la liaison entre le flasheur et la carte cible doit être réduite à un stricte minimum pour les raisons exposées au dessus.

-= Email : manu_bat_manu@yahoo.fr - Retour à la première page =-
Schémas Orcad par Mathieu Michon