*Title: Howto AVR *Author: Ni * Intro On utilisera principalement des ATmega8 et des ATmega8535. Ce sont des microcontrolleur 8 bits, avec 8 Ko de flash, 16 Mips, 28 ou 40 pattes, 1 Ko de ram, un bus TWI, SPI, un USART, la programmation en circuit, des entrées analogiques, des sorties PWM... Le tout pour 6 Euros. * Les sites à aller voir [http://www.atmel.com/products/avr/] Lire la datasheet du ATmega8. L'ATmega8535 ne différe que par le nombre de pattes et la ram. Regarder les app-notes. [http://www.avrfreaks.net/] Pas mal d'infos sur les AVRs, un forum, des projets examples... [http://www.nongnu.org/avr-libc/] Le site de la libc pour AVR. Tout ce qu'il faut pour développer. _Lire_ particulièrement la doc, de haut en bas. Il y a un programme d'exemple, mais on ne devrais pas manquer de programmes d'exemples au robot d'ici quelque jours. * Les outils de dev Sur le serveur du robot : gcc. Sur les Windows, on peut faire fonctionner gcc avec AVR Studio. Pour la programmation, il y a avrdude, programmation de l'AVR avec 3 fils. Les fichiers |Makefile| et |Makefile.avr| livrés avec cet howto peuvent être utilisés pour compiler les projets. Ces fichiers sont dans |n/chenil|, un petit programme d'exemple qui fait un chenillard avec ses sorties. * Programmation avec avrdude Le programmateur utilise trois pattes de l'AVR, attention à ne pas griller le port parallèle en réglant ces pattes en sortie. On devrais metre des résistances en série sur le programmateur pour éviter ça. De même, attention à ne pas griller le MAX232 relié au port série. L'option |-p| permet de choisir le composant, l'option |-c| le programmateur. Par exemple pour programmer le premier ATmega8 sur le programmateur du robot : avrdude -p m8 -c robot0 -E noreset ... L'option |-E| démare le composant aprés la programmation (relache le reset). On peut aussi choisir l'état des autres pistes. Avrdude peut tenir dans les dernier octets d'eeprom le nombre de programmations du composant, pour initialiser ce nombre, faire avec un nouveau composant, utiliser l'option |-Y| : avrdude -p m8 -c robot0 -E noreset -Y 0 Il faut ensuite choisir le mode d'oscillation de l'AVR, voir la datasheet pour les détails sur les HFUSE et LFUSE. Attention, un mauvais réglage et on peut avoir du mal à récupérer l'AVR en utilisant la programmation ISP. Pour oscillation sur quartz avec un quartz de plus de 8 MHz sur un ATmega8 : avrdude -p m8 -c robot0 -E noreset -U lfuse:w:0xff:m -U hfuse:w:0xc9:m Pour programmer la flash : avrdude -p m8 -c robot0 -E noreset -U flash:w:fichier.hex -y En bonus, pour reseter l'AVR depuis le PC : avrdude -p m8 -c robot0 -E noreset * Modules Efrei Robotique Chaque module est déposé dans son répertoire séparé. Pour les utiliser dans un projet, il suffit de créer un |avrconfig.h| qui va bien et de compiler les sources du module avec son projet. Pour cela, il suffit de mettre le nom du module et du fichier de configuration dans le |Makefile|. La commande |make modules\_co| fait un checkout des modules et |make modules\_up| permet de les mettre à jour. Se reporter au code éxistant pour plus de détails.