Cours:TPS 2103 3 : Différence entre versions
m |
|||
| Ligne 23 : | Ligne 23 : | ||
Nous souhaitons ici évaluer le temps mis par la fonction [http://arduino.cc/en/Reference/pinMode {{Rouge|pinMode()}}]. | Nous souhaitons ici évaluer le temps mis par la fonction [http://arduino.cc/en/Reference/pinMode {{Rouge|pinMode()}}]. | ||
| + | |||
| + | L'affichage du résultat sera tout simplement transmis sur la liaison série en utilisant les fonctions suivantes : | ||
| + | *Serial.begin(debit) | ||
| + | *Serial.print("valeur = ") | ||
| + | *Serial.println(valeur,DEC) | ||
| + | |||
| + | {{Question|Compléter le programme suivant en choisissant les bonnes valeurs pour évaluer le temps d'exécution de pinMode()}} | ||
| + | <source lang=c> | ||
| + | void setup(){ // Variables éventuelles | ||
| + | |||
| + | // Initialisation du port série Serial.begin(9600); | ||
| + | |||
| + | // Configuration du timer 2 : Attention, chaque bit doit être configuré à '0' ou '1' | ||
| + | TCCR2A ??? (1<<WGM20); TCCR2A ??? (1<<WGM21); | ||
| + | |||
| + | TCCR2B ??? (1<<CS22); TCCR2B ??? (1<<CS21); TCCR2B ??? (1<<CS20); | ||
| + | // Initialisation du Timer : acquittement et valeur de départ | ||
| + | TIFR2|=1<<TOV2; TCNT2=0; | ||
| + | |||
| + | |||
| + | for (i=0;i<1;i++) { | ||
| + | // Fonction à évaluer : il est intéressant de répéter la fonction plusieurs fois | ||
| + | } | ||
| + | |||
| + | // Récupérer la valeur du timer et l'afficher seulement si le timer n'a pas débordé !!!} void loop(){} | ||
| + | </source> | ||
Version du 20 avril 2014 à 21:20
Mesure de temps d'exécution
Commençons par analogie au td à essayer de mesurer le temps d'exécution d'une fonction.
Nous allons en profiter pour mesurer le temps d'exécution de certaines fonctions Arduino, et se rendre compte de l'une de leu principale limite.
Le temps écoulé sera mesuré à l'aide du Timer 2.
Le principe est toujours le même :
- Initialiser le timer
- Répéter plusieurs fois l'instruction souhaitée
- Observer la valeur du timer
- Afficher cette valeur
Configuration des entrées/sorties
Nous souhaitons ici évaluer le temps mis par la fonction pinMode().
L'affichage du résultat sera tout simplement transmis sur la liaison série en utilisant les fonctions suivantes :
- Serial.begin(debit)
- Serial.print("valeur = ")
- Serial.println(valeur,DEC)
Compléter le programme suivant en choisissant les bonnes valeurs pour évaluer le temps d'exécution de pinMode()
void setup(){ // Variables éventuelles
// Initialisation du port série Serial.begin(9600);
// Configuration du timer 2 : Attention, chaque bit doit être configuré à '0' ou '1'
TCCR2A ??? (1<<WGM20); TCCR2A ??? (1<<WGM21);
TCCR2B ??? (1<<CS22); TCCR2B ??? (1<<CS21); TCCR2B ??? (1<<CS20);
// Initialisation du Timer : acquittement et valeur de départ
TIFR2|=1<<TOV2; TCNT2=0;
for (i=0;i<1;i++) {
// Fonction à évaluer : il est intéressant de répéter la fonction plusieurs fois
}
// Récupérer la valeur du timer et l'afficher seulement si le timer n'a pas débordé !!!} void loop(){}