LOCODUINO

Forum de discussion
Dépôt GIT Locoduino

lundi 27 février 2017

63 visiteurs en ce moment

Les Timers (I)

Les bases

. Par : Christian Bézanger

Un timer est un registre à l’intérieur du microcontrôleur qui s’incrémente (ou se décrémente) chaque fois qu’il reçoit une impulsion d’un signal d’horloge. Ce signal d’horloge peut être propre au microcontrôleur ou bien extérieur à celui-ci. Un timer est donc un compteur capable de compter le temps qui s’écoule, d’où son nom anglais de timer counter. Dans ce (...)

Retourner à l'article

Vous répondez à :

Les Timers (I) 13 janvier 2015 20:00, par Gérard

Cet article à l’avantage d’expliquer simplement le fonctionnement des timers.
Pour aller plus loin que ce qui est décrit ici, il est intéressant de combiner timer et interruptions ; en effet, le timer associé aux interruptions permet de faire une action à intervalle régulier sans "polluer le programme principal" avec des lectures régulières du flag de passage par zéro.

Voici le même programme que celui présenté dans l’article mais en utilisant l’interruption de débordement. Vous pourrez voir qu’il n’y a que deux choses en plus : l’instruction sei() qui autorise les interruptions et ISR() qui désigne où doit pointer le vecteur d’interruption

  1. /*
  2.   Timer et interruptions
  3.  */
  4.  
  5. const byte Led = 13; // LED du module
  6. #define LedToggle digitalWrite (Led, !digitalRead(Led))
  7.  
  8. byte Compteur = 0; //Compteur pour interruption
  9.  
  10. void setup(){
  11.  
  12. // Initialise le Timer 2 pour déclencher les interruptions à intervalle régulier
  13. TCCR2A = 0; //default
  14. TCCR2B = 0b00000110; // clk/256 est incrémenté toutes les 16uS
  15. TIMSK2 = 0b00000001; // TOIE2
  16. sei(); // autorise les interruptions
  17.  
  18. }
  19.  
  20. // Boucle principale
  21. void loop() {
  22.  
  23.  
  24. }
  25.  
  26. // routine d'interruption du timer
  27. ISR (TIMER2_OVF_vect)
  28. {
  29. // 256-6 --> 250X16uS = 4mS
  30. // Recharge le timer pour que la prochaine interruption se déclenche dans 4mS
  31. TCNT2 = 6;
  32.  
  33. if (Compteur++ == 250) {
  34. //250*4mS = 1S - la Led est allumée 1 S et éteinte 1 S
  35. Compteur=0;
  36. LedToggle;
  37. }
  38. }

Télécharger

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

15 Messages

Rubrique Programmation

Comment gérer le temps dans un programme ?

La programmation, qu’est ce que c’est

Types, constantes et variables

Installation de l’IDE arduino

Répéter des instructions : les boucles

Les interruptions (1)

Instructions conditionnelles : le if ... else

Instructions conditionnelles : le switch ... case

Comment gérer l’aléatoire ?

Calculer avec l’Arduino (1)

Calculer avec l’Arduino (2)

Les structures

Systèmes de numération

Les fonctions

Trois façons de déclarer des constantes

Transcription d’un programme simple en programmation objet

Les chaînes de caractères

Trucs, astuces et choses à ne pas faire !

Le monde des objets (1)

Le monde des objets (2)

Le monde des objets (3)

Le monde des objets (4)

Les pointeurs (1)

Les pointeurs (2)

Les Timers (I)

Les Timers (II)

Les Timers (III)

Les Timers (IV)

Les Timers (V)

Les derniers articles

Les Timers (V)


Christian Bézanger

Trucs, astuces et choses à ne pas faire !


Dominique

Le monde des objets (4)


Thierry

Les pointeurs (2)


Thierry

Les chaînes de caractères


Thierry

Transcription d’un programme simple en programmation objet


Dominique, Guillaume, Jean-Luc

Les pointeurs (1)


Thierry

Comment gérer l’aléatoire ?


Dominique, Guillaume, Jean-Luc

Les Timers (IV)


Christian Bézanger

Les fonctions


Jean-Luc

Les articles les plus lus

Les interruptions (1)

Les Timers (I)

Comment gérer le temps dans un programme ?

Calculer avec l’Arduino (1)

Répéter des instructions : les boucles

Comment gérer l’aléatoire ?

Les chaînes de caractères

Les Timers (II)

Types, constantes et variables

Trois façons de déclarer des constantes