Cours:InfoS2 tdI2c

De troyesGEII
Aller à : navigation, rechercher


Framework Arduino

Lors des tds précédents, nous avons utilisé uniquement les fonctions de la bibliothèque standard libc pour avr.

L'inconvénient principal réside dans la nécessité de devoir écrire/adapter un programme pour chaque µcontroleur (aussi nommé cible). L'avantage principal est d'avoir un programme très efficient en terme de taille d'exécutable et de rapidité d'exécution, et également beaucoup plus simple à écrire.

Afin de simplifier le changement de cible, on utilise le concept de couches d'abstractions.

CoucheAbstraction.png

L'idée sous-jacente est de ne pas faire un programme qui s'occupe de gérer directement les périphériques, mais utilise des fonctions qui s'occupent de faire le lien, un exemple sera plus parlant !

PORTB|=(1<<PB0);
digialWrite(8,1);

Ces 2 instructions sont équivalentes pour une carte arduino UNO, elles mettent toutes les 2 à 1 la broche étiquetée 8 sur cette carte.

Si nous changeons de carte (arduino Mega par ex), la broche utilisée sur le µcontroleur n'est pas la même et il faut alors remplacer :

PORTH|=(1<<PH5);
digialWrite(8,1);{{Rouge|

L'intérêt est ici évident de l'utilisation du framework (ensemble de fonctions) arduino qui permet d'écrire un programme quasiment indépendant de la carte (cible) utilisée.

Si nous parlons d'efficacité, par contre la fonction digialWrite est environ 20 fois moins rapide !


Il existe quelques framework pour les cibles avr (famille des µcontroleurs aTmega ATtiny), nous utiliserons le framework arduino pour utiliser la liaison i2c, l'utilisation du périphérique du µcontroleur étant assez fastidieux à configurer.


controller/target