Programmateur série ATMEL ISP "low cost"

par François Finfe | dernière mise à jour: December 30 2008 23:31:55.

Introduction

Cet article présente un programmateur très simple (10 composants !) pour programmer les microcontrolleurs ATmegaAVR d'Atmel par l'intermédiaire du port série.

Principe de fonctionnement

Le circuit est très simple, et par conséquent, il n'y a pas grand chose à expliquer.

Le but est de gérer une communication SPI. Il faut donc interfacer les niveaux tensions RS232 (du port série, -15..-5 V et 5..15 V) aux niveaux de tension TTL(0 et 5V) du bus SPI.

Les sorties RS232 (RTS, TXD, DTR) attaquent une diode zéner par l'intermédiaire d'une résistance. La diode zéner a une tension zener de 4,7 V (ou de 5,1 V, au choix).

Lorsque la tension d'une sortie vaut 10 V, la tension au borne de la zener s'approche de Vz (elle est légèrement inférieure car le courant est faible et inférieur à Iz (Vz@Iz, càd le coude de la courbe de Vz est atteint au courant Iz, précisé dans le datasheet). Lorsque la tension de sortie RS232 passe à -10 V, la zener se comporte comme une diode "normale" en polarisation directe, sa tension approche le seuil -0,6 V. Ici aussi, la tension est légèrement supérieure à 0,6 V car le courant est faible.

Les niveaux de tensions RS232 varie d'un pc à l'autre. Sur les (très) vieille machine, on peut mesurer des tensions de -15 .. 15 V. Sur les pcs de bureaux, on trouve fréquemment entre -10..10 V. Sur les ordinateurs portables, les tensions sont souvent plus faiblarde (-5..5 V), ce qui d'ailleurs pose problème pour certains montages alimentés par le port série. Les pcs récents ne disposent plus de port série. Ce montage ne fonctionnera très certainement PAS avec un adaptateur USB <-> série. La raison probable est que le port série n'est plus natif mais bien émulé par l'O.S.. Les temps de réponses sont beaucoup plus long qu'en natif et probablement trop long pour générer correctement une clock et lire les signaux.

Le signal de reset est "tiré" à la masse par le transistor BC546. La diode D3 protège la jonction Base collecteur des tensions négatives. Vous pouvez remplacer le BC546 par n'importe quel NPN bipolaire (BC547, 2N2222,...) Le 5 V présent sur ce programmateur sont fournis par la carte cible (à programmer).

Un connecteur standart ISP-10 pin est utilisé. Il existe également une version à 6 pin sur laquelle les 4 fils de masse (qui font office de "blindage") sont supprimés. En pratique, lors de la construction de ce montage, j'ai utilisé un fils en nappe à 6 fils pour une longueur d'environ 80 cm. La programmation ne fonctionnait pas correctement, il y avait souvent des erreurs (avec pour conséquence de changer les fameux fuses de la clock). En utilisant, un flat cable à 10 pin le problème a disparu. Le connecteur ISP 6-pin convient donc pour de faible longueur (inférieure à 1 ou 2 dizaine de cm). C'est ce problème qui justifie le choix du connecteur.

Schema


Schema (cliquer pour agrandir)

Logiciel

Vous pouvez utilisez PonyProg pour programmer vos microcontrollers avec le programmateur.

Configuration:
Pour accéder au menu, aller dans "Setup" puis "interface setup".

Vous pouvez également utiliser AVR dude (fournit avec le package WinAVR) sous Windows et linux.

Photos de la carte (proto)

Remarque: la disposition des composants entre ce proto (photo) et la version actuelle est assez différentes car plusieurs erreurs ont étés corrigées.

Ressources / Download

Description Lien/Fichier(s)
Circuit imprimé (PCB), schema, schema d'implantation composants.

Fichier au format Eagle (+pdf)
   PCB & layout v1.0

PCB (pdf)

Implantation composants (PDF)

Améliorations

Ce type de programmateur devient désuet car les pcs actuel ne sont plus pourvus de ports séries. L'utilisation d'un programmateur USB devient nécessaire. J'utilise pour ma part l'USBprog développé par Benedikt Sauter. C'est une minicarte qui utilise un chip convertisseur usb <-> série et un ATmega32. Il existe différents firmwares permettant de cloner certains outils de dévelopemment beaucoup plus cher que ce programmateur.

Par exemple :


Ces projets sont openSource.
Je l'avais commandé début janvier 2008 pour 22 € non programmé (sans bootloader). J'ai utilisé le programmateur série pour le programmer.

Je l'utilise en AVR ISP clone. Celui-ci est bien reconnu sous AVR studio, hormis de temps en temps un plantage du programmateur ou une erreur de lecture lors de la vérification (ce qui devient parfois agaçant lorsqu'on développe). Entretemps, quelques updates du firmware sont sorties, je n'ai pas encore pris le temps de mettre mon programmateur à jour pour vérifier si le bug sont encore présents.

Ma solution préférée pour le programmer reste AVR-dude, qui fonctionne aussi bien sous Windows que sous Linux.

October 2008