[Résolu] Intégration du langage Arduino dans AVR Studio 5

La suite ... /!\ Pas Encore Finit - En cours de rédaction /!\

Une fois AVR-GCC C++ installé, vous remarquerez qu'il existe un autre "add on" nommé "Terminal Windows", en quelque sorte c'est un équivalent beaucoup plus évolué du Serial Monitor de l'ide arduino.

Une fois les deux "add on" installé il vous sera nécessaire de redémarrer Avr Studio pour que ceux ci soit actif.

Maintenant il faut passer à l'étape la plus complexe, la compilation du "core arduino" et son inclusion dans un sketch arduino.
Pour ce faire nous allons devoir créer un nouveau projet, nous le nommerons "Tuto-Arduino".

Une fois la fenêtre de nouveau projet ouverte, choisissez "c++" puis "C++ Executable".

Une fois le projet fraichement crée Avr Studio nous demande le micro-contrôleur sur lequel nous allons travaillez, prenons un grand classique, le ATmega328p, utilisé dans 95% des cartes arduino actuelle.

Si tous ce passe bien vous devriez avoir ceci :

Il nous faut maintenant créer et compiler le "core arduino", de manière à pouvoir le réutiliser plus tard nous allons l'ajouter en tant que librairie statique.
Pour ce faire, lancez l'ide arduino, compilez un sketch comme Blink, puis rendez vous dans %appdata%..\Local\Temp (touche windows + R), repérez un dossier build........, ouvrez le, et récupérez le fichier core.a, il s'agit du "core arduino" pré-compilé par l'ide arduino.

Maintenant récupérez une copie de l'ide arduino 0023 (ou 0022), et plus particulièrement du contenu de /hardware/arduino/core/arduino, copiez le dans votre dossier de travail Avr Studio dans un sous dossier libarduino, dans mon cas C:\Users\skywodd\Documents\AVRStudio\Tuto-Arduino\libarduino
Supprimez au passage les fichiers .cpp et .c, il ne nous seront pas utile, gardez uniquement les .h.

L'ide arduino, lorsqu'il compile un sketch, ajoute un certain nombre de chose comme des define, des arguments d'optimisation, ...
Si nous voulons utiliser notre libarduino il va falloir faire de même, à la main.

Click droit sur Tuto-Arduino> properties
Une fois le menu de configuration ouvert naviguez dans l'onglet "Toolchain".

Il va nous falloir créer les définitions en double, un fois pour AVR-GCC et une autre fois pour AVR-G++, rendons nous d'abord dans
"AVR/GNU C Compiler" > Symbols.
Ajoutez ensuite les définitions suivantes :
F_CPU=16000000
ARDUINO=22

Rendez vous ensuite dans "AVR/GNU C++ Compiler" > Symbols, et refaite la même manipulation.

Il va nous falloir ensuite activer les optimisations de compilation sans quoi les fonctions comme delay, millis, ... ne fonctionnerons pas correctement.
"AVR/GNU C Compiler" > Optimisations > Optimisation Level -Os (for size)
"AVR/GNU C++ Compiler" > Optimisations > Optimisation Level -Os (for size)

Bien à présent nous avons tout les .h ainsi que le "core arduino" précompilé dans notre dossier Tuto-Arduino/libarduino, nous avons mis en place les define, l'optimisation, ne reste plus qu'as définir le chemin de notre dossier libarduino en tant que source d'inclusion.

"AVR/GNU C Compiler" > Directories> Include Paths > Add > ../libarduino
"AVR/GNU C++ Compiler" > Directories> Include Paths > Add > ../libarduino
"AVR/GNU C++ Linker" > Libraries > Libraries > add > libarduino
"AVR/GNU C++ Linker" > Library Search Path > Libraries > add > ../libarduino

Maintenant que la libarduino est prête, il ne reste plus qu'as tester le tout avec un sketch arduino.

#include <WProgram.h>

void setup();
void loop();

void setup() {
	pinMode(13, OUTPUT);
}

void loop() {
	digitalWrite(13, HIGH);
	delay(1000);
	digitalWrite(13, LOW);
	delay(1000);
}

Remarque: L'ide arduino crée les prototypes des fonctions automatiquement, avec Avr Studio ce n'est pas le cas, vous devrez donc vous en occuper vous même, de même chacun de vos sketch arduino devra débuter avec la ligne #include <WProgram.h>.

TODO: comprendre pourquoi mes chemins relatif ne sont pas pris en compte par Avr Studio 5 ...
"WProgram.h: No Such File Or Directory" le chemin d'include est pourtant bon ><