Accueil > µC Atmel > Programmateur pour µC Atmel

Programmateur pour µC Atmel

Tout comme les PICs, il faut un programmateur pour transférer les fichiers HEX issu de la compilation du code source vers les microcontrôleurs Atmel ATMega et ATTiny. Je vous présente ci-dessous deux réalisations de programmateur.

Programmateur sur port parallèle

C’est le programmateur le plus économique qui soit. Si vous n’avez pas peur de griller votre port parallèle ou votre µC Atmel, vous pouvez vous contenter d’un “vulgaire” câble parallèle et de quelques résistances.

Cependant il me semble plus prudent de mettre un circuit tampon entre votre port parallèle et votre µC. C’est la réalisation que je vous propose. Le schéma n’est pas de moi, vous pouvez le trouver un peu partout sur internet (en particulier chez Christian Tavernier). J’en ai juste fait un routage personnel. Il se présente de la manière suivante:

Schéma structurel du programmateur sur port parallèle pour µC Atmel

Schéma structurel du programmateur sur port parallèle pour µC Atmel

Implantation et routage du programmateur

Implantation et routage du programmateur

Programmateur sur port parallèle pour Atmel ATMega et ATTiny

Programmateur sur port parallèle pour Atmel ATMega et ATTiny

Les documents de fabrication sont disponibles en fin d’article. Vous remarquerez que le routage présenté ci-dessus est légèrement différent de la réalisation car il a été retravaillé à posteriori. Les traits rouge sur l’implantation indiquent les “straps” à câbler. Une fois que vous avez réalisé votre programmateur, il faut le tester avec un logiciel de programmation et un câble DB25 mâle-mâle. Pour ma part j’utilise le logiciel AVRDude tant sous Microsoft Windows que sous GNU/Linux Debian. Cependant bien que ce programmateur soit trés économique il a tendance à disparaitre car le port parallèle disparait des PCs. Encore une fois il faut changer de port et s’orienter vers l’USB.

Programmateur sur port USB

Une fois de plus, vous trouverez la solution en furetant sur Internet. Pour ma part, j’ai choisi d’utiliser le programmateur USBASP. Vous trouverez différent routage sur ce site. Cependant pour ma part j’ai réalisé le routage de Jean-Luc Padiolleau. Il faudra suivre la procédure décrite sur son site pour réaliser ce programmateur et ensuite programmer le firmware avec le programmateur sur port parallèle (oui c’est le serpent qui se mord la queue). Le programmateur se présente de la manière suivante:

Programmateur sur port USB pour Atmel AVR

Programmateur sur port USB pour Atmel AVR

Vous pouvez trouver sur E-Bay ce programmateur en CMS à un prix très raisonnable (environ 18 euros frais de port compris avec un câble USB).

Programmation avec AVRDude

Pour programmer le firmware dans le programmateur USB, j’utilise le programmateur sur port parallèle. Cette programmation se fera sous GNU/Linux Debian Lenny en ligne de commande. Téléchargez le dernier firmware sur le site de l’auteur. La dernière version au moment de l’écriture de l’article est celle du 28/02/2009. Décompressez-le puis allez dans le sous répertoire “bin/firmware”. Là vous trouverez un firmware pour un Atmel ATMega 48 et un autre pour un ATMega8. Réalisez alors le câblage comme dans l’image ci-dessous:

Cablage pour la programmation du programmateur USB

Câblage pour la programmation du programmateur USB

Connectez le câble parallèle DB25 mâle sur le port parallèle du PC et sur le connecteur DB25 femelle du programmateur (à droite sur la photo). Connectez un câble USB sur un port USB libre coté PC et sur l’entrée du programmateur USB pour alimenter le tout en 5V (à gauche sur la photo). Le cavalier rouge du haut est fermé et sert à alimenter le programmateur sur port parallèle : la diode doit s’allumer sur celui-ci. Le cavalier rouge du milieu doit être fermé pour permettre la programmation de l’ATMega 8.

Il faut savoir si le programmateur sur port parallèle trouve l’ATMega 8 du programmateur USB. Dans un terminal, tapez la commande suivante :

1
2
3
4
5
6
olivier@leonard:~/usbasp.2009-02-28/bin/firmware$ sudo avrdude -P /dev/parport0 -c stk200 -p m8 -i 100
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.07s
avrdude: Device signature = 0x1e9307
avrdude: safemode: Fuses OK
avrdude done.  Thank you.

Avrdude cherche un programmateur de type parallèle (-c stk200) sur le premier port parallèle (-P /dev/parport0), le microcontrôleur utilisé est de type ATMega8 (-p m8) et enfin on ralentit un peu la vitesse de programmation si vous avez un PC récent (-i 100). Maintenant que il faut programmer l’ATMega8 avec le firmware usbasp avec les bons fusibles (activation de l’oscillateur externe). Vous tapez donc la ligne suivante:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
olivier@leonard:~/usbasp.2009-02-28/bin/firmware$ sudo avrdude -P /dev/parport0 -c stk200 -p m8 -i 500 -U flash:w:usbasp.atmega8.2009-02-28.hex -U hfuse:w:0xC9:m -U lfuse:w:0xEF:m
 
avrdude: AVR device initialized and ready to accept instructions
 
Reading | ################################################## | 100% 0.18s
 
avrdude: Device signature = 0x1e9307
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "usbasp.atmega8.2009-02-28.hex"
avrdude: input file usbasp.atmega8.2009-02-28.hex auto detected as Intel Hex
avrdude: writing flash (3826 bytes):
 
Writing | ################################################## | 100% 515.73s
 
avrdude: 3826 bytes of flash written
avrdude: verifying flash memory against usbasp.atmega8.2009-02-28.hex:
avrdude: load data flash data from input file usbasp.atmega8.2009-02-28.hex:
avrdude: input file usbasp.atmega8.2009-02-28.hex auto detected as Intel Hex
avrdude: input file usbasp.atmega8.2009-02-28.hex contains 3826 bytes
avrdude: reading on-chip flash data:
 
Reading | ################################################## | 100% 490.64s
 
avrdude: verifying ...
avrdude: 3826 bytes of flash verified
avrdude: reading input file "0xC9"
avrdude: writing hfuse (1 bytes):
 
Writing | ################################################## | 100% 0.15s
 
avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xC9:
avrdude: load data hfuse data from input file 0xC9:
avrdude: input file 0xC9 contains 1 bytes
avrdude: reading on-chip hfuse data:
 
Reading | ################################################## | 100% 0.15s
 
avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xEF"
avrdude: writing lfuse (1 bytes):
 
Writing | ################################################## | 100% 0.14s
 
avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xEF:
avrdude: load data lfuse data from input file 0xEF:
avrdude: input file 0xEF contains 1 bytes
avrdude: reading on-chip lfuse data:
 
Reading | ################################################## | 100% 0.15s
 
avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
 
avrdude: safemode: Fuses OK
 
avrdude done.  Thank you.

Vous pouvez alors débrancher le cable USB, la nappe 10 fils coté programmateur parallèle, ouvrir les deux cavaliers rouges puis rebranchez le cable USB. La del rouge du programmateur USB doit s’allumer. Pour vérifier que le programmateur a bien été reconnu, il faut regarder les messages du noyau:

1
2
3
4
5
olivier@leonard:~$ sudo dmesg|tail -n 5
[82649.848342] usb 2-1: New USB device found, idVendor=16c0, idProduct=05dc
[82649.848352] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[82649.848359] usb 2-1: Product: USBasp
[82649.848364] usb 2-1: Manufacturer: www.fischl.de

Vous pouvez alors programmer vos montages avec une ligne du style:

1
olivier@leonard:~$ sudo avrdude -c usbasp -p m8 -U flash:w:test.hex

Bonne programmation à tous…

Author: Olivier Categories: µC Atmel Tags: , ,
  1. Pas encore de commentaire
  1. Pas encore de trackbacks