Pour référence, je met la connectique:
On peut alors vérifier au moyen d'un multimètre si on a bien 5V entre les pin 7 et 8 de l'ISP et entre les pin 7 et 8 du µC (Atmega8) également.
Maintenant on va tester si le programmateur fonctionne, et donc s'il voit le µC qui lui est connecté par l'ISP.
Par exemple en lisant la mémoire flash de l'atmega8
sudo avrdude -p m8 -P /dev/parport0 -c usbasp -U flash:r:-:i -E noreset
Il devrait répondre ainsi :
avrdude: WARNING: -E option not supported by this programmer type
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e9307
avrdude: reading flash memory:
Reading | ################################################## | 100% 3.16s
avrdude: writing output file "<stdout>"
:00000001FF
avrdude: safemode: Fuses OK
avrdude done. Thank you.
Super !! Ça fonctionne !
Un peu d'explication :
sudo, car on a besoin d'accéder à la ressource matérielle du port parallèle.
-p m8, indique le modèle de µC.
-P /dev/parport0, spécifie le port sur lequel est connecté le programmateur (port parallèle).
-c usbasp, indique le nom du programmateur.
-U flash:r:-:i
-E noreset, pour s'adresser à la mémoire flash du µC en mode lecture.
Programatin de la Puce :
Reste à programmer le µC pour y mettre le fichier .hex
sudo avrdude -p m8 -c usbasp -U flash:w:/"PATH"/"FILE".hex
Ce qui renvoie :
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
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 "/"PATH"/"FILE".hex"
avrdude: input file /"PATH"/"FILE".hex auto detected as Intel Hex
avrdude: writing flash (1898 bytes):
Writing | ################################################## | 100% 1.16s
avrdude: 1898 bytes of flash written
avrdude: verifying flash memory against /"PATH"/"FILE".hex:
avrdude: load data flash data from input file /"PATH"/"FILE".hex:
avrdude: input file /"PATH"/"FILE".hex auto detected as Intel Hex
avrdude: input file /"PATH"/"FILE".hex contains 1898 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.81s
avrdude: verifying ...
avrdude: 1898 bytes of flash verified
avrdude: safemode: Fuses OK
avrdude done. Thank you.
Super !! Mais... Il manque une étape cruciale, la programmation des bits fusibles. En effet, sans cela l'oscillateur @12Mhz du montage ne sera pas pris en compte par le µC qui continuera d'utiliser son oscillateur interne.
Les valeurs appropriée pour mon projet sont:
ATMEGA8 builds: high byte = 0xc9, low byte = 0x9f
Donc j'envoie la ligne suivante: sudo avrdude -p m8 -P /dev/parport0 -c usbasp -Uhfuse:w:0xc9:m -Ulfuse:w:0x9f:m
Ce qui donne :
avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x1e9307 avrdude: reading input file "0xc9" avrdude: writing hfuse (1 bytes): Writing | ################################################## | 100% 0.01s 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.00s avrdude: verifying ... avrdude: 1 bytes of hfuse verified avrdude: reading input file "0x9f" avrdude: writing lfuse (1 bytes): Writing | ################################################## | 100% 0.01s avrdude: 1 bytes of lfuse written avrdude: verifying lfuse memory against 0x9f: avrdude: load data lfuse data from input file 0x9f: avrdude: input file 0x9f contains 1 bytes avrdude: reading on-chip lfuse data: Reading | ################################################## | 100% 0.00s avrdude: verifying ... avrdude: 1 bytes of lfuse verified avrdude: safemode: Fuses OK avrdude done. Thank you.Il ne reste plus qu'à tester....





