Programmateur en circuit pour microcontrôleurs AVR d'Atmel




Le montage que je vous présente aujourd’hui est radicalement différent des programmateurs classiques car c’est un programmateur « en circuit », c’est à dire encore que vous n’avez même pas besoin de retirer le microcontrôleur de votre application pour le programmer. De plus, ce programmateur est compatible de l’excellent logiciel de programmation Atmel qui est mis gratuitement à notre disposition, et que vous trouverez ICI.
Ce logiciel, fonctionnant sous Windows 95, 98 et Me, supporte toutes les fonctions de programmation admises par les microcontrôleurs AVR d’Atmel et permet de travailler sur ces derniers avec un maximum de souplesse.
Enfin, et cela ne gâte rien, le prix de revient de ce programmateur est de l’ordre de quinze euros alors qu’il est à même de programmer toute la gamme des circuits AVR d’Atmel.

Ce logiciel, fonctionnant sous Windows 95, 98 et Me, supporte toutes les fonctions de programmation admises par les microcontrôleurs AVR d’Atmel et permet de travailler sur ces derniers avec un maximum de souplesse.
Enfin, et cela ne gâte rien, le prix de revient de ce programmateur est de l’ordre de quinze euros alors qu’il est à même de programmer toute la gamme des circuits AVR d’Atmel.



La programmation en circuit ou ICSP


La programmation en circuit, appelée en général dans les documentations américaines ISP, ce qui veut dire « in system programming », ou encore ICSP pour « in circuit serial programming » est apparue il y a quelque temps déjà avec les « gros » circuits logiques programmables tels que les GAL, LCA et autres réseaux de portes. Elle s’est depuis étendue à une partie du monde des microcontrôleurs dont les circuits AVR d’Atmel font partie.
Ce mode de programmation repose sur l’utilisation d’une liaison série un peu particulière, soit qu’elle existe déjà en tant que telle dans le microcontrôleur concerné, soit que certaines de ses pattes se voient détournées de leur fonction première lorsque cette programmation a lieu.
Dans tous les cas, son principe général est de n’utiliser qu’un minimum de pattes du microcontrôleur afin qu’il soit possible de programmer ce dernier alors qu’il est déjà en place dans l’application finale, quitte à devoir prévoir sur cette dernière quelques commutateurs, manuels ou électroniques, afin d’isoler provisoirement les pattes nécessaires pendant cette phase de programmation.
Dans le cas des microcontrôleurs Atmel, la liaison série utilisée pour cette programmation en circuit est la liaison série synchrone ou SPI. Elle peut exister en tant que véritable ressource interne, comme c’est le cas sur les plus «gros » circuits de la famille AVR, ou être seulement présente pour cette phase de programmation en circuit, comme c’est le cas pour les plus petits circuits.
Cette liaison fait appel à trois lignes, dont les appellations se retrouvent d’ailleurs sur tous les microcontrôleurs disposant d’une SPI (68HC11 de Motorola ou 16F876 de Microchip par exemple). On rencontre donc :
  • SCK qui véhicule l’horloge de dialogue ;
  • MOSI qui véhicule les données dans le sens programmateur vers microcontrôleur et qui sert donc à l’envoi des données à programmer ;
     
  • MISO qui véhicule les données dans l’autre sens et qui sert donc à relire le microcontrôleur.

      
    Afin de pouvoir commander correctement le processus de programmation en circuit, il faut aussi pouvoir accéder à l’entrée de reset du microcontrôleur car c’est au moyen de cette dernière que l’on fait passer les circuits Atmel en mode programmation en circuit.
    Une application prévue pour supporter la programmation en circuit d’un microcontrôleur Atmel adopte donc le schéma de principe présenté figure ci-dessus . Les straps visibles sur cette figure peuvent évidemment être réalisés de multiples façons : straps ordinaires, interrupteurs mécaniques ou interrupteurs électroniques.


    Schéma du programmateur en circuit

    Ceci étant précisé, le schéma d’un programmateur en circuit piloté par PC se résume à très peu de choses. En effet, il faut surtout du logiciel côté PC pour générer les chronogrammes adéquats sur les lignes SCK, MISO et MOSI et, bien sûr, un minimum de circuiterie d’adaptation de niveau afin de pouvoir utiliser un des ports standards du PC.
    Le schéma de mon programmateur se réduit donc à ce que vous pouvez découvrir ci-dessous. Il est destiné à être relié au port parallèle du PC dont les lignes sont faciles à piloter par programme pour générer les chronogrammes nécessaires.
    Il ne comporte en tout et pour tout qu’un circuit intégré IC1, qui est un simple 74HC244 ou 74HCT244, c’est à dire encore un sextuple buffer destiné à remettre en forme les signaux transmis sur la sortie imprimante du PC avant de les appliquer au circuit AVR à programmer. On est sûr ainsi de disposer de signaux bien rectangulaires et d’éviter tout aléa de programmation.
    Ce circuit est câblé de façon à « amplifier » les signaux SCK, MOSI et RESET d’une part, puisque ceux-ci vont du PC vers le microcontrôleur, et le seul signal MISO, dans l’autre sens, puisque celui-ci va du microcontrôleur vers le PC.


     

    Remarquez que l’une des sections de IC1 pilote une LED à partir du PC ce qui permet de signaler, par son allumage, que le microcontrôleur est en cours de programmation et qu’il ne faut donc pas y toucher ! L’alimentation du programmateur est prélevée directement sur l’application supportant le microcontrôleur via la diode D1.

    Réalisation du programmateur en circuit pour microcontrôleurs AVR d'Atmel

    Je vous propose deux circuits imprimés différents pour recevoir mon programmateur. En effet, comme celui-ci se connecte sur le port parallèle, il est possible de le raccorder au PC directement à la place d’une imprimante au moyen du cordon muni de la prise Centronics normalisée destinée à cette dernière. Il est également possible d’utiliser un port parallèle réservé à cet usage et de faire appel alors à un câble muni de connecteurs standards DB 25. Les tailles et brochages de ces connecteurs étant totalement différents, j'ai donc du dessiner deux circuits imprimés distincts dont les tracés sont ci-dessous en Figure 1  pour la version Centronics et Figure 2  pour la version DB 25. 

      








Signal

DB 25 mâle


Centronics femelle

D0

2

2

D1

3

3

D2

4

4

D3

5

5

D4

6

6

D5

7

7

D6

8

8

D7

9

9

/ACK

10

10

BUSY

11

11

PAPER OUT

12

12

Masse

18 à 25

19 à 29


Semi-conducteurs
IC1 : 74HCT244 ou 74HCT244
D1 : 1N 914 ou 1N 4148
LED : LED rouge Résistances ¼ de watt 5 % sauf indication contraire
R1 : 470 W (jaune, violet, marron)
R2 : 100 kW (marron, noir, jaune)

Condensateurs
C1 : 100 nF Mylar

Divers
J1 : Connecteur DB 25 mâle coudé à 90° à implanter sur CI (version DB 25)
J1 : Connecteur Centronics femelle coudé à 90 ° à implanter sur CI (version Centronics)
J2 : Connecteur HE 10 mâle droit pour câble plat à souder sur CI
Deux connecteurs HE 10 femelles à sertir sur câble plat
Câble plat standard 10 conducteurs (une vingtaine de cm)
Support de CI : 1 x 20 pattes


Ces circuits reçoivent bien évidemment l’un comme l’autre tous les composants du montage, dont le connecteur de programmation en circuit qui est un connecteur mâle 10 points pour câble plat. Le brochage de ce connecteur, visible sur la figure ci-contre, est conforme à ce que préconise Atmel dans ses documents les plus récents et qu’il est donc identique à celui des programmateurs du commerce.

 La réalisation ne présente aucune difficulté en suivant les indications des figures ci-dessous, selon le cas. Le 74HC244 ou HCT244 est impérativement monté sur support car, en cas de grossière erreur de connexion, il est en première ligne …
  


Mode d’emploi

Pour faire fonctionner ce programmateur, il faut évidemment un logiciel. Fort heureusement, Atmel nous fournit gracieusement un excellent programme que vous trouverez sur ce site à la rubrique logiciels. Commencez par décompresser le fichier qui le contient, baptisé avr_isp.zip, dans un répertoire temporaire quelconque puis procédez à l’installation du programme en lançant le programme « setup » apparu lors de cette décompression.
Ne lancez pas tout de suite le programme ainsi installé car, pour qu’il fonctionne de façon complète, il faut qu’il puisse détecter la présence du programmateur. Celui-ci doit donc évidemment être relié à un port parallèle du PC d’une part, et à l’application contenant le microcontrôleur AVR à programmer d’autre part. Cette liaison est à faire avec un morceau de câble plat à 10 conducteurs dont la longueur ne devra pas dépasser une vingtaine de centimètres environ afin de ne pas dégrader les signaux.
Sur l’application, les straps ou interrupteurs permettant d’isoler les lignes pilotées par le programmateur du reste de cette dernière seront mis en position ouverte et l’application sera mise sous tension normalement.
Vous pourrez alors lancer le programme Atmel AVR ISP. Il vous faudra tout d’abord définir un nouveau projet au moyen du menu « Project ». Cette définition vous proposera en premier lieu de choisir le type de microcontrôleur à programmer et vous demandera de donner un nom à votre projet. Vous pourrez aussi à cette occasion ajouter à votre projet divers commentaires optionnels.
Vous pourrez alors charger dans le logiciel le fichier contenant le programme à placer dans le microcontrôleur au moyen du menu « File », rubrique « Load ». Le contenu de ce fichier deviendra alors visible dans la fenêtre « Program Memory » ainsi que, le cas échéant, dans la fenêtre « EEPROM Data Memory » s’il charge aussi cette mémoire.
Vous pourrez évidemment éditer librement tout ou partie de ces données si nécessaire en cliquant directement dans la fenêtre concernée mais vous pourrez aussi et surtout accéder à toutes les fonctions de programmation, lecture et vérification du microcontrôleur au moyen du menu déroulant « Program ».
Le lancement de l’une quelconque de ces fonctions conduit à l’ouverture d’une nouvelle fenêtre indiquant son bon déroulement, tandis que la LED du programmateur s’allume tant qu’elle est en cours d’exécution.
Sous réserve de n’avoir commis aucune erreur de câblage et d’avoir convenablement sélectionné le microcontrôleur lors de la définition du projet, toutes les opérations de programmation, lecture et vérification doivent se dérouler sans aucun problème.
Avant de conclure sachez que le schéma de mon programmateur est identique dans son principe à celui fourni avec le « Starter Kit » STK 200 d’Atmel. Il est donc compatible également de tous les logiciels de programmation que vous pourriez trouver et qui seraient présentés comme étant eux-mêmes compatibles de ce « Starter Kit ».

Aucun commentaire:

Enregistrer un commentaire