<?xml version="1.0"?>
<rss xmlns:php="http://php.net/xsl" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>USnooBie - Chicoree</title><link>http://www.chicoree.fr/w/USnooBie</link><atom:link href="http://www.chicoree.fr/w/USnooBie?action=toFeed" rel="self" type="application/rss+xml"/><description><![CDATA[Avec leur grande polyvalence, leur excellent support par des logiciels open-source et leur prix réduit, les processeurs AVR d'Atmel ont tout pour séduire. Le succès de la plate-forme Arduino en est la preuve. Si celle-ci est particulièrement accessible à l'amateur, elle n'est cependant pas la seule option possible pour faire ses premières armes avec un micro-contrôleur AVR. Surtout si vous être déjà familiers de la programmation de systèmes embarqués, ou si vous êtes curieux d'en explorer les aspects les plus techniques.
Ainsi, le projet USbooBie se révèle une alternative simple et économique pour découvrir le monde de la programmation AVR. Simple, car, tout comme Arduino, USnooBie peut se programmer directement à partir du port USB. Économique, puisqu'on peut trouver le kit à souder soi-même pour moins de 20$US (chez seeedstudio, par exemple). Pour ce prix, vous disposez d'un micro-contrôleur ATmega328P cadencé à 12MHz, d'un port USB (pour la programmation, la communication et l'alimentation) et de l'accès à toutes les broches d'E/S du micro-contrôleur. 
L'USnooBie est avant tout conçu pour pouvoir réaliser des prototypes de périphériques USB puisqu'il donne un accès direct au port USB par les broches PORTD2 (connectée à D+) et PORTD7 (connectée à D-) du micro-contrôleur. Mais, ses caractéristiques en font aussi une plate-forme de développement AVR générique. Dans cette optique, nous allons voir comment écrire un premier programme pour AVR et le télécharger sur l'USnooBie à partir d'un PC sous Linux. Dans un premier temps, nous verrons une manière de faire simple et accessible à tous qui fait appel à l'IDE Arduino. Puis nous nous intéresserons à des outils de plus bas niveau, qui nous permettront de faire un tour d'horizon des techniques qui constituent le bread and butter du développeur pour la plate-forme AVR. Mais avant de commencer, quelques petites étapes de préparation sont à prévoir...
]]></description><item><title>1 Préparation</title><link>http://www.chicoree.fr/w/USnooBie#Pr.C3.A9paration</link><description><![CDATA[<p>Les micro-contrôleurs AVR qui peuvent se programmer directement par USB <i>sans</i> requérir un programmateur utilisent tous un même <i>truc</i>. Il s'agit d'un <i>bootloader</i>, installé dans la mémoire flash de l'AVR, et qui prend en charge le protocole de communication avec le logiciel de programmation.
</p>]]></description></item><item><title>1.1 Accéder au bootloader</title><link>http://www.chicoree.fr/w/USnooBie#Acc.C3.A9der_au_bootloader</link><description><![CDATA[<p>Les micro-contrôleurs AVR qui peuvent se programmer directement par USB <i>sans</i> requérir un programmateur utilisent tous un même <i>truc</i>. Il s'agit d'un <i>bootloader</i>, installé dans la mémoire flash de l'AVR, et qui prend en charge le protocole de communication avec le logiciel de programmation.
</p>]]></description></item><item><title>1.2 Reconnaissance de l'émulateur USBasp</title><link>http://www.chicoree.fr/w/USnooBie#Reconnaissance_de_l.27.C3.A9mulateur_USBasp</link><description><![CDATA[<p>Lorsque l'USnooBie redémarre sur le bootloader pour être programmé, celui-ci émule le programmateur <a>USBasp</a>. C'est avec cet émulateur que le logiciel de programmation AVR communiquera pour télécharger un programme sur le micro-contrôleur. Sous Linux, cela se fait par l'intermédiaire d'un pseudo-fichier périphérique caractère situé sous <tt>/dev</tt>.
</p>]]></description></item><item><title>2 Programmation  à partir de l'IDE Arduino</title><link>http://www.chicoree.fr/w/USnooBie#Programmation__.C3.A0_partir_de_l.27IDE_Arduino</link><description><![CDATA[<p>Dans la section précédente, nous avons configuré l'ordinateur sous Linux pour permettre la programmation de l'USnooBie. Il est temps maintenant de tester tout cela en téléchargeant un premier programme.
</p>]]></description></item><item><title>2.1 Installer et configurer l'IDE Arduino pour USnooBie</title><link>http://www.chicoree.fr/w/USnooBie#Installer_et_configurer_l.27IDE_Arduino_pour_USnooBie</link><description><![CDATA[<p>Le moyen le plus accessible de faire ses premiers tests avec l'USnooBie est d'utiliser l'IDE Arduino (et oui: l'UBnooBie est <i>compatible</i> Arduino!) Vous pouvez le télécharger sur le site d'Arduino <a>http://www.arduino.cc/</a> ou l'installer à partir du gestionnaire de paquets de Debian:
</p>]]></description></item><item><title>2.2 Premier programme</title><link>http://www.chicoree.fr/w/USnooBie#Premier_programme</link><description><![CDATA[<p>Pour nous assurer qu'il est possible d'utiliser l'IDE Arduino pour programmer l'USnooBie, nous allons utiliser le classique et banal programme qui fait <i>clignoter une LED</i> (reliée à la broche 0 du port D):
</p>]]></description></item><item><title>2.3 Brochage</title><link>http://www.chicoree.fr/w/USnooBie#Brochage</link><description><![CDATA[<p>À l'exception des ports <i>PORTD2</i> et <i>PORTD7</i> (utilisés pour la liaison USB) toutes les broches de l'USnooBie peuvent être utilisées comme sur Arduino, même si leur rôle n'est pas sérigraphié sur la carte. Pour vous éclairer voici une illustration de la correspondance entre les broches de l'ATmega328P et celles d'Arduino:
</p>]]></description></item><item><title>3 GNU AVR Toolchain</title><link>http://www.chicoree.fr/w/USnooBie#GNU_AVR_Toolchain</link><description><![CDATA[<p>Vous pouvez arrêter votre lecture ici. En effet, l'utilisation de l'IDE Arduino est très largement suffisante même pour des projets assez ambitieux. Et, si vous découvrez pour la première fois la programmation sur micro-contrôleur, inutile de vous embrouiller les idées avec des techniques plus complexes. Une fois plus familier avec cette plate-forme, et si vous désirez en exploiter au maximum les possibilités, vous envisagerez sans doute d'écrire des programmes plus proches du matériel. Il sera alors temps de passer à l'étape suivante, et de découvrir la suite d'outils <i>classiques</i> de la programmation AVR. En utilisation de base, les trois composants <i>visibles</i> de cette <i>toolchain</i> sont:
</p>]]></description></item><item><title>3.1 Installer les outils</title><link>http://www.chicoree.fr/w/USnooBie#Installer_les_outils</link><description><![CDATA[<p>Mais, avant de passer aux manipulations, il faut s'assurer que les différents outils sont disponibles. Comme illustré plus haut, ceux-ci sont regroupés en <i>familles</i> qui correspondent sur la plupart des distributions Linux à différents <i>paquets</i>. Sous Debian, et pour le développement pour cible AVR, les paquets à installer seront <tt><a>gcc-avr</a></tt>, <tt><a>binutils-avr</a></tt> et <tt><a>avrdude</a></tt>. Les bibliothèques C standard du paquet <tt><a>avr-libc</a></tt> seront aussi requises. Par contre, comme nous n'utiliserons pas ici le débogueur, il n'est pas nécessaire d'installer <tt><a>gdb-avr</a></tt>:
</p>]]></description></item><item><title>3.2 Premier programme</title><link>http://www.chicoree.fr/w/USnooBie#Premier_programme_2</link><description><![CDATA[<p>Comme plus haut, notre <i>hello world</i> de l'embarqué restera la <i>LED qui clignote</i>. Fonctionnellement, cet exemple fait la même chose que celui  utilisant le SDK Arduino. Mais comme vous le constaterez le code est nettement plus ... euh ... <i>impressionnant</i>:
</p>]]></description></item><item><title>3.3 Compilation/téléchargement</title><link>http://www.chicoree.fr/w/USnooBie#Compilation.2Ft.C3.A9l.C3.A9chargement</link><description><![CDATA[<p>Si tous les outils sont en place sur votre système et en supposant le code du programme enregistré dans un fichier <i>main.c</i> du répertoire courant, la compilation, l'assemblage et l'édition des liens peut être faite en utilisant la seule commande <i>avr-gcc</i>:
</p>]]></description></item><item><title>3.4 Analyse du programme</title><link>http://www.chicoree.fr/w/USnooBie#Analyse_du_programme</link><description><![CDATA[<p>La compréhension complète du code – et son éventuelle modification – nécessitent de disposer des spécifications (<i>datasheet</i>) du micro-contrôleur ATmega328P. Celles-ci sont disponibles à partir de la page produit de la <a>famille ATmega sur le site d'Atmel</a>. Le fichier à télécharger est un PDF intitulé <i><a>ATmega48A/PA/88A/PA/168A/PA/328/P</a></i>. Il s'agit tout de même d'un document de plus de 560 pages! Inutile de tout lire <i>pour l'instant</i>, puisque je vous désignerai les pages correspondantes au fur et à mesure des explications.
</p>]]></description></item><item><title>3.4.1 Routine d'interruption</title><link>http://www.chicoree.fr/w/USnooBie#Routine_d.27interruption</link><description><![CDATA[<p>Ce programme exploite le <i>timer/counter1</i> du micro-contrôleur décrit à partir de la page 115 de la documentation. Ce composant peut notamment être configuré pour compter des <i>tops</i> d'horloge, et donc déclencher une action à intervalles réguliers. Commençons par la fin, et regardons l'action qui doit être effectué régulièrement:
</p>]]></description></item><item><title>3.4.2 Programme principal</title><link>http://www.chicoree.fr/w/USnooBie#Programme_principal</link><description><![CDATA[<p>Le programme principal (<i>main</i>) constitue le <i>point d'entrée</i> dans le code utilisateur. En français, c'est là que votre programme va commencer son exécution. Ici, le <i>main</i> est chargé de configurer le <i>timer1</i> et la broche PD0 selon nos besoins, puis il va se "terminer" par une <i>boucle infinie</i>, c'est à dire une boucle active pendant lequel le micro-contrôleur ne fait rien d'utile. Par contre, à intervalle régulier, cette boucle sera suspendue (<i>interrompue</i>) par le timer, puis une fois la routine d'interruption finie, la boucle reprendra son cycle infini.
</p>]]></description></item><item><title>3.5 Make</title><link>http://www.chicoree.fr/w/USnooBie#Make</link><description><![CDATA[<p>Si vous vous êtes amusé à apporter des modifications au programme précédent, vous avez peut être remarqué qu'il devient vite fastidieux d'invoquer un à un les différents outils de la <i>toolchain</i>. Et encore: nous n'avons qu'un seul fichier <i>source</i>. Vous imaginez que cela deviendra vite pénible sur un projet à peine plus important.
</p>]]></description></item><item><title>4 Conclusion</title><link>http://www.chicoree.fr/w/USnooBie#Conclusion</link><description><![CDATA[<p>Voilà, cette introduction à la programmation pour cible AVR a été l'occasion de faire le <i>grand tour</i>: nous sommes partis de la technique la plus accessible, à savoir l'utilisation de l'IDE Arduino, puis nous avons abordés les outils <i>professionnels</i> qui permettent de manipuler au plus bas niveau le micro-contrôleur. Nous avons aussi en chemin évoqué quelques bornes pratiques, comme se référer à la <i>datasheet</i> de votre cible, ou utiliser <i>make</i> pour construire votre projet. Déjà, pris individuellement chacun de ces sujets est vaste. Et les aborder tous ici implique de ne se contenter que d'en effleurer la surface. Mais, j'espère vous avoir donné les informations nécessaires pour que vous soyez en mesure de les approfondir par vous même. Bonne découverte!
</p>]]></description></item><item><title>5 Ressources</title><link>http://www.chicoree.fr/w/USnooBie#Ressources</link><description/></item></channel></rss>
