LOCODUINO

Forum de discussion
Dépôt GIT Locoduino
Flux RSS

vendredi 13 décembre 2019

116 visiteurs en ce moment

Les Timers (III)

Comparaisons et interruptions

. Par : Christian

Nous allons voir dans ce troisième article le rôle des registres OCR (Output Compare Register). Ces registres ont la même taille que le timer auquel ils sont associés et il y en a deux par timers, repérés par les lettres A et B. Pour le timer 2 qui a une taille de 8 bits, nous trouvons donc deux registres de 8 bits appelés OCR2A et OCR2B, et ces (...)

Retourner à l'article

Vous répondez à :

Les Timers (III) 4 février 2015 13:25, par Jean-Luc

Je réponds pour Christian qui est absent en ce moment.

En fait pouvoir écrire dans un registre particulier comme TCCR1B en Arduino ou en C repose sur les pointeurs. En effet, les registres sont implantés à des adresses mémoire particulières. Comme pour les autres registres, TCCR1B est une macro qui défini un déréférencement de pointeur. Donc si addr_tccr1b est l’adresse du registre en mémoire, TCCR1B est défini comme (*(volatile uint8_t *)(addr_tccr1b)). et donc écrire TCCR1B = 0 provoque l’écriture de 0 à l’adresse addr_tccr1b en mémoire et donc l’écriture dans le registre.

Les bits nommés comme CS12 sont seulement définis comme des offset à l’intérieur d’un octet (on ne peut pas définir un pointeur vers un bit, c’est impossible). Donc on ne peut pas écrire CS12 = 1; car CS12 est équivalent à 2 et 2 = 1; produirait une erreur de compilation.

_BV est une macro définie comme ceci :

  1. #define _BV(bit) (1 << (bit))

et donc écrire

  1. #define _BV(bit) (1 << (bit))>
  2. TCCR1B |= _BV(CS12);

à pour effet de lire en mémoire à l’adresse de TCCR1B, faire un ou bit à bit avec 1 << 2 (donc le bit correspondant à CS12 ) et réécrire le résultat en mémoire à l’adresse de TCCR1B. Ce qui fait le travail voulu.

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.)

29 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 concevoir rationnellement votre système

Comment gérer l’aléatoire ?

Calculer avec l’Arduino (1)

Calculer avec l’Arduino (2)

La compilation d’un projet Arduino

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

Ces tableaux qui peuvent nous simplifier le développement Arduino

Les chaînes de caractères

Trucs, astuces et choses à ne pas faire !

Processing pour nos trains

Arduino : toute première fois !

Démarrer en Processing (1)

TCOs en Processing

TCOs en Processing (2)

Comment réussir son projet Arduino

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)

Bien utiliser l’IDE d’Arduino (1)

Bien utiliser l’IDE d’Arduino (2)

Piloter son Arduino avec son navigateur web et Node.js (1)

Piloter son Arduino avec son navigateur web et Node.js (2)

Piloter son Arduino avec son navigateur web et Node.js (3)

Piloter son Arduino avec son navigateur web et Node.js (4)

Les derniers articles

La compilation d’un projet Arduino


Thierry

TCOs en Processing (2)


Pierre59

Comment concevoir rationnellement votre système


Jean-Luc

Comment réussir son projet Arduino


Christian

Piloter son Arduino avec son navigateur web et Node.js (4)


bobyAndCo

TCOs en Processing


Pierre59

Ces tableaux qui peuvent nous simplifier le développement Arduino


bobyAndCo

Processing pour nos trains


Pierre59

Piloter son Arduino avec son navigateur web et Node.js (3)


bobyAndCo

Piloter son Arduino avec son navigateur web et Node.js (2)


bobyAndCo

Les articles les plus lus

Les interruptions (1)

Les Timers (I)

Ces tableaux qui peuvent nous simplifier le développement Arduino

Les Timers (II)

Calculer avec l’Arduino (1)

Répéter des instructions : les boucles

Les chaînes de caractères

Comment gérer le temps dans un programme ?

Instructions conditionnelles : le if … else

Piloter son Arduino avec son navigateur web et Node.js (1)