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 donc sur à la rubrique
logiciels de ce site.
|

|
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.Les microcontrôleurs AVR d’Atmel
|

|
Je ne vais pas décrire ici les microcontrôleurs AVR d'ATMEL
car tout ce site n'y suffirait pas. Si vous voulez en savoir plus à leur sujet,
je vous renvoie au livre que je leur ai consacré dont vous pouvez trouver une
présentation complète en cliquant sur sa couverture.
|
|
Achetez directement ce livre en ligne grâce à mon
partenaire Amazon.fr.
Cliquez sur ce lien -> |
 |
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-contre. 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.
Pour découvrir la réalisation de ce
montage
:
Cliquez sur ce bouton -> |
 |
|