Cours:InfoS2 tdI2c : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
(Page créée avec « =Framework Arduino= Lors des tds précédents, nous avons utilisé uniquement les fonctions de la {{Rouge|bibliothèque standard libc}} pour avr. {{Rouge|L'inconvénie... »)
 
Ligne 5 : Ligne 5 :
 
Lors des tds précédents, nous avons utilisé uniquement les fonctions de la {{Rouge|bibliothèque standard libc}} pour avr.
 
Lors des tds précédents, nous avons utilisé uniquement les fonctions de la {{Rouge|bibliothèque standard libc}} pour avr.
  
{{Rouge|L'inconvénient}} principal réside dans la nécessité de devoir {{Rouge|écrire/adapter un programme}} pour chaque µcontroleur (aussi nommé {{Rouge|cible}}). {{Rouge|L'avantage}} principal est d'avoir un programme très {{Rouge|efficient}} en terme de taille d'exécutable et de rapidité d'exécution.  
+
{{Rouge|L'inconvénient}} principal réside dans la nécessité de devoir {{Rouge|écrire/adapter un programme}} pour chaque µcontroleur (aussi nommé {{Rouge|cible}}). {{Rouge|L'avantage}} principal est d'avoir un programme très {{Rouge|efficient}} en terme de taille d'exécutable et de rapidité d'exécution, et également beaucoup {{Rouge|plus simple à écrire}}.
  
 
Afin de simplifier le changement de cible, on utilise le concept de {{Rouge|couches d'abstractions}}.
 
Afin de simplifier le changement de cible, on utilise le concept de {{Rouge|couches d'abstractions}}.
Ligne 15 : Ligne 15 :
 
<source lang=cpp>
 
<source lang=cpp>
 
PORTB|=(1<<PB0);
 
PORTB|=(1<<PB0);
analogWrite(8,1);
+
digialWrite(8,1);
 
</source>
 
</source>
 
Ces 2 instructions sont équivalentes pour une carte arduino UNO, elles mettent toutes les 2 à 1 la broche étiquetée 8 sur cette carte.
 
Ces 2 instructions sont équivalentes pour une carte arduino UNO, elles mettent toutes les 2 à 1 la broche étiquetée 8 sur cette carte.
Ligne 22 : Ligne 22 :
 
<source lang=cpp>
 
<source lang=cpp>
 
PORTH|=(1<<PH5);
 
PORTH|=(1<<PH5);
analogWrite(8,1);
+
digialWrite(8,1);{{Rouge|
 
</source>
 
</source>
  
 +
L'intérêt est ici évident de l'utilisation du {{Rouge|framework}} (ensemble de fonctions) arduino qui permet d'écrire un {{Rouge|programme quasiment indépendant de la carte (cible) utilisée}}.
  
 +
Si nous parlons {{Rouge|d'efficacité}}, par contre la fonction {{Rouge|digialWrite}} est environ {{Rouge|20 fois moins rapide}} !
  
Pour les cibles {{Rouge|avr}} (famille des µcontroleurs aTmega ATtiny)
+
 
 +
Il existe quelques framework pour les cibles {{Rouge|avr}} (famille des µcontroleurs aTmega ATtiny), nous utiliserons le {{Rouge|framework arduino}} pour utiliser la {{Rouge|liaison i2c}}, l'utilisation du périphérique du µcontroleur étant assez fastidieux à configurer.
 +
 
 +
 
 +
==

Version du 9 mars 2022 à 16:29


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.


==