Retour Suite
sylvainmahe.site LE SITE de Sylvain Mahé contact@sylvainmahe.site
Article : Sylvain Mahé contact@sylvainmahe.site Les outils complémentaires du projet MODULE En programmation C++ pour les microcontrôleurs de marque Microchip comme l'ATmega48P, l'ATmega88P, l'ATmega168P, l'ATmega328P, l'ATmega164P, l'ATmega324P, l'ATmega644P, ou l'ATmega1284P dont il est question ici, des outils de compilation et de programmation de la puce performants et standards existent. Ces outils sont disponibles pour les systèmes Linux, macOS, ou Windows. Outils pour Linux :
Pour Linux vous devez installer les paquets gcc-avr, avr-libc, avrdude et binutils afin de programmer les microcontrôleurs implantés sur mes automates programmables MODULABLE 20 ou MODULABLE 32. Pour ma part j'utilise le système d'exploitation Linux (qui est largement utilisé de nos jours).
En exemple voici la ligne de commande à écrire dans le terminal pour télécharger et installer les paquets nécessaires sur Linux : sudo apt-get install gcc-avr avr-libc avrdude binutils -y Outils pour macOS :
Pour macOS une procédure légèrement différente est requise, en premier vous devez installer un gestionnaire de paquets avec la commande suivante à écrire dans le terminal :
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" Puis, il vous faut indiquer le dépôt à utiliser pour pouvoir installer avr-libc et avrdude : brew tap osx-cross/avr Après quoi vous pouvez installer avr-libc : brew install avr-libc Puis installer avrdude avec le support de l'USB : brew install avrdude --with-usb Outils pour Windows :
Pour Windows plusieurs solutions sont possibles, la plus simple est de télécharger et installer un programme qui se nomme WinAVR, ce programme contient les mêmes outils que sur Linux mais ici en version pour Windows :
Site internet de WinAVR Ne possédant pas Windows il m'est difficile de tester nativement ce logiciel, je pense que le problème qui peut se poser avec WinAVR est son obsolescence, en effet il n'est pas régulièrement mis à jour, et la version que vous allez télécharger est probablement trop ancienne... C'est pourquoi je recommande vivement la procédure suivante, téléchargez manuellement l'archive (.zip) correspondant à la version de votre système d'exploitation Windows, c'est-à-dire soit en version 32 bits ou en version 64 bits disponible sur le site de Zak Kemble ici : Site internet de Zak Kemble Une fois la bonne archive téléchargée (version 32 bits ou 64 bits), vous devez extraire son contenu dans le répertoire de votre choix. En conséquence, pour que ma routine Compiler uploader.bat (que je propose avec le programme MODULE) fonctionne avec les fichiers de Zak Kemble que vous venez de télécharger, il est nécessaire de légèrement modifier son contenu, soit le renommage des différents appels aux programmes avr-gcc, avr-objcopy, avrdude, et avr-size respectivement comme suit : c:\avr-gcc-7.2.0-x86-mingw\bin\avr-gcc.exe
c:\avr-gcc-7.2.0-x86-mingw\bin\avr-objcopy.exe
c:\avr-gcc-7.2.0-x86-mingw\bin\avrdude.exe
c:\avr-gcc-7.2.0-x86-mingw\bin\avr-size.exe
Le renommage montré ci-dessus est un exemple à adapter selon l'archive de Zak Kemble que vous avez téléchargé en version 32 bits ou 64 bits, et en fonction du chemin d'accès où cette archive a été extraite. Dans l'exemple on voit que j'ai téléchargé l'archive en version 32 bits, et que je l'ai extraite à la racine du disque dur c:\. Le programmateur : Le programmateur est une petite carte qui fait l'interface entre votre ordinateur personnel et le microcontrôleur, ce qui permet d'envoyer votre programme dans ce circuit intégré. Vous pouvez fabriquer un programmateur vous-même, ou utiliser une carte toute faite. Pour ma part j'ai essayé les deux. Je vous conseille d'utiliser le programmateur USBasp qui est très performant et robuste, disponible à l'achat ici : Recherche Google pour acheter le programmateur USBasp La documentation du programmateur USBasp est disponible sur le site officiel : Site internet du programmateur USBasp Le programmateur USBasp est équipé d'un port USB, à connecter directement à un port USB de votre ordinateur personnel, et à l'autre extrémité d'un port ISP (programmation in-situ) dédié à la programmation du microcontrôleur (c'est un port SPI avec alimentation +5V), à connecter via une nappe adaptée (généralement fournie) sur le port nommé ISP de l'automate programmable (qui lui-même alimente en +5V la totalité de l'automate programmable et est relié en SPI au microcontrôleur). À noter que la programmation ISP a plusieurs avantages par rapport à l'USB :
- Évite de contenir dans la mémoire Flash du microcontrôleur un chargeur d'amorçage (bootloader).
- De ce fait, évite un délai au démarrage du microcontrôleur.
- Minimise le nombre de composants embarqués sur la carte électronique.
- En conséquence, dispense d'équiper la carte électronique d'un composant permettant de faire la traduction USB/USART vers le chargeur d'amorçage (qui sur certains systèmes concurrents cause des problèmes d'impédance sur les entrées/sorties RXD et TXD du microcontrôleur).
Compiler et téléverser votre programme dans l'automate programmable : Pour compiler et téléverser votre programme dans l'automate programmable via le programmateur USBasp, il vous suffit d'exécuter les routines contenues dans le répertoire example situé dans l'archive du programme MODULE (téléchargeable en page d'accueil dans la section "Téléchargements") nommées Compiler uploader.sh si vous utilisez un système d'exploitation Linux ou macOS, ou Compiler uploader.bat si vous utilisez un système d'exploitation Windows. À l'exécution, ces routines (Compiler uploader.sh et Compiler uploader.bat) compileront et téléverseront dans l'automate programmable (connecté en ISP via le programmateur USBasp à votre ordinateur personnel) tous les fichiers avec l'extension .cpp (fichiers C++) situés dans le répertoire courant. Attention, pour que l'opération de téléversement fonctionne lors de l'exécution des routines exprimées ci-dessus, selon le système d'exploitation il est nécessaire d'appliquer les procédures décrites ci-dessous. Dans le cas contraire la communication par USB avec l'USBasp ne pourra pas s'effectuer. Procédure pour Linux :
Sur certaines versions anciennes de Linux, il convient d'écrire quelques lignes dans le terminal afin d'ouvrir un fichier qui permettra de spécifier quelques règles utiles pour pouvoir communiquer avec l'USBasp :
sudo gedit /etc/udev/rules.d/99-USBasp.rules Cette ligne ouvre l'éditeur de texte Gedit, ensuite il suffit de copier la ligne suivante dans cet éditeur de texte : SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", GROUP="plugdev", MODE="0666" Une fois ceci effectué, vous enregistrez le fichier, et vous pouvez quitter Gedit. Pour simplifier, il est également possible d'automatiser la procédure décrite ci-dessus en créant une routine (bash) ayant l'extension .sh que vous pourrez exécuter. Cette routine (.sh) contient le programme suivant : #!/bin/bash echo "SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"16c0\", ATTRS{idProduct}==\"05dc\", GROUP=\"plugdev\", MODE=\"0666\"" | sudo tee /etc/udev/rules.d/99-USBasp.rules read exit 0 Procédure pour Windows :
Sur Windows le pilote de l'USBasp n'est pas présent par défaut sur ce système. Par conséquent vous devez le télécharger et l'installer vous-même.
Il existe nombre de pilotes pour le fonctionnement de l'USB sur Windows, mais l'auteur de l'USBasp recommande d'utiliser un outil qui se nomme Zadig qui permet de rechercher et installer automatiquement ce pilote, personnellement je n'ai jamais essayé (ne possédant pas Windows) mais vu la qualité de son travail je pense que cela est de bon conseil. Ce logiciel est disponible en version pour Windows 7 (ou supérieur) et également en versions plus anciennes pour Windows XP (voir dans la page "Other versions" de la section "Download") : Site internet de Zadig Lors de l'utilisation de ce logiciel, il vous faut spécifier le programmateur utilisé (l'USBasp), ainsi que le pilote, en l'occurrence il se nomme libusb. Ce dernier est en fait une bibliothèque, que vous pouvez télécharger séparément si vous le souhaitez : Site internet de libusb Les fusibles du microcontrôleur : Quand vous achetez un microcontrôleur neuf n'ayant jamais été programmé, les fusibles qui permettent de définir des paramètres comme la vitesse de téléversement, l'utilisation d'un quartz externe ou encore le verrouillage du SPI (et bien d'autres paramètres fondamentaux pour le microcontrôleur) sont définis par défaut par le constructeur de la puce. Les routines décrites ci-dessus (Compiler uploader.sh et Compiler uploader.bat) s'occupent de modifier automatiquement les valeurs des fusibles. Les valeurs des fusibles que j'ai indiqué dans les routines sont les plus optimisées pour les automates programmable MODULABLE 20 et MODULABLE 32 que j'ai développé (dont les plans de fabrication sont disponibles dans les sections "Fabrications et diverses réalisations" et "Téléchargements" en page d'accueil). Si jamais vous souhaitez programmer avec MODULE sans utiliser les routines que je propose, sachez que cette opération sur les fusibles est à effectuer une seule fois dans deux cas précis, lorsque vous recevez un microcontrôleur neuf n'ayant jamais été programmé, ou lorsque vous récupérez un microcontrôleur qui possiblement dans sa mémoire contient un chargeur d'amorçage (bootloader), ou des paramètres de fusibles inadaptés pour l'architecture de l'automate programmable et le fonctionnement des périphériques.