A l'occasion d'un cours online sur les microcontrôleurs, je me suis rendu compte que l'Arduino est une platine facile à brancher et à utiliser mais qu'il y a plusieurs revers à la médaille. Le langage Arduino est une version simplifiée des langages C et C++, camouflant les difficultés derrière des "mots-clés" faciles mais souvent au prix d'un allongement considérable du code. De plus, l'IDE Arduino n'offre aucune possibilité de debugging, à part truffer le code de multiples "Serial.print()" pour contrôler le comportement du programme. Enfin, une carte comme Arduino limite également le travail à un seul microcontrôleur possible. Impossible d'adapter et de tester le code pour un ATtiny par exemple.
Suite à ces considérations, je pense donc qu'il y a intérêt à :
- élargir la programmation au langage C standard
- élargir l'environnement de développement à un système permettant la simulation et si possible le débugging
- élargir la gamme de microcontrôleurs possibles.
Il existe probablement diverses solutions répondant à ces exigences. L'une d'entre elles est la mise en oeuvre du langage C avec le compilateur GNU-GCC et sa librairie AVR Libc. L'environnement de développement Studio de Atmel permet d'utiliser aussi bien ce langage C que le C++ et l'assembleur pour programmer une gamme énorme de microcontrôleurs, allant des minuscules ATtiny à 6 pins aux ARM Cortex en passant par les ATmega 8 bit et les AVR 32 bit. Le logiciel Studio comporte un "simulateur" qui permet de simuler le fonctionnement du programme et de vérifier à n'importe quel endroit du programme la valeur des variables, des entrées/sorties et des registres du microcontrôleur. Cerise sur le gâteau, il y a 3 mois, Atmel a sorti un petit appareil nommé Atmel-ICE qui se connecte entre le PC et le microcontrôleur et qui permet non plus de simuler un programme mais d'examiner le fonctionnement du programme in situ, dans le circuit lui-même. Des appareils similaires (jtag ice) existaient déjà mais coûtaient plusieurs centaines de dollars alors que le nouveau venu coûte moins de 50€ (je viens de le recevoir). Le logiciel Studio, ainsi que les compilateurs C, C++ et assembleur sont gratuits. Par contre, Studio ne fonctionne que sous Windows.
Avec ceux d'entre vous qui seraient intéressés, nous pourrions former un groupe d'entraide pour apprendre à mettre en oeuvre ces logiciels et certains de ces microcontrôleurs.
Un fil conducteur simple pourrait être celui-ci : l'ide Arduino comporte de nombreux exemples de programmation, à commencer par le "blink.ino". Ce serait probablement un bon exercice de transformer ces exemples en langage C standard et de suivre pas à pas ces programmes à l'aide de la fonction "debug" de Studio.
Jusqu'ici, je n'ai parlé que des microcontrôleurs d'Atmel parce que ce sont les seuls avec lesquels j'ai travaillé (en assembleur). Mais le cours online a touché également le MSP430 qui peut aussi être programmé en C et rien n'empêche la formation d'un thread parallèle autour de cette architecture, surtout que le MSP430 n'est pas limité à Energia (similaire de l'Arduino IDE) mais dispose aussi d'un environnement de développement sophistiqué: "Code Composer Studio", dont les fonctionnalités sont proches de l'Atmel Studio.
Atmel Studio existe dans plusieurs versions. La dernière est la version 6.2 téléchargeable ici. Cette version est lourde à faire touner pour les PC lents. La version 4 est plus légère (mais incapable d'utiliser le nouveau débuggeur in situ Atmel-ICE). Pour tous ceux qui hésitent entre Studio 6 et Studio 4, il est utile de lire cette page.
Pour ceux qui choisissent Studio 4, il faut d'abord installer Studio4.18 (build 684) puis Studio 4.18 SP3 (build 716).
Voici l'adresse de la version 4.18
Studio 4.19 et Studio 5 contiennent des bugs et ne sont pas conseillés.
Je signale que même si j'ai une petite expérience en assembleur avec Studio4, je suis parfaitement débutant avec Studio6 et le langage C. Donc, ceci n'est pas le début d'un cours mais d'une recherche ensemble et d'une entraide mutuelle, tout en sachant que Futura-Sciences regorge de compétences qui seront certainement là pour aider quand nécessaire.
-----