LOCODUINO

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

jeudi 18 avril 2024

Visiteurs connectés : 32

Les Timers (III)

Comparaisons et interruptions

. Par : Christian

Rôle d’un registre OCR On peut charger un nombre dans le registre OCR2A ; lorsque le timer 2, en comptant, devient égal à OCR2A (les deux valeurs correspondent, ce qui se dit Match en anglais), cela provoque la mise à 1 d’un flag appelé OCF2A , qui est le bit 1 du registre TIFR2 (Timer/Counter 2 Interrupt Flag Register) et si on a autorisé (...)

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 :

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

et donc écrire

#define _BV(bit) (1 << (bit))>
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.)

32 Messages

Rubrique Programmation

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)

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)

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 (1)

TCOs en Processing (2)

L’assembleur (1)

L’assembleur (2)

L’assembleur (3)

L’assembleur (4)

L’assembleur (5)

L’assembleur (6)

L’assembleur (7)

L’assembleur (8)

L’assembleur (9)

Les derniers articles

L’assembleur (9)


Christian

L’assembleur (8)


Christian

L’assembleur (7)


Christian

L’assembleur (6)


Christian

L’assembleur (5)


Christian

L’assembleur (4)


Christian

L’assembleur (3)


Christian

L’assembleur (2)


Christian

L’assembleur (1)


Christian

TCOs en Processing (2)


Pierre59

Les articles les plus lus

Les Timers (I)

Les interruptions (1)

Instructions conditionnelles : le if ... else

Ces tableaux qui peuvent nous simplifier le développement Arduino

Comment gérer le temps dans un programme ?

Les Timers (II)

Les Timers (III)

Calculer avec l’Arduino (1)

Calculer avec l’Arduino (2)

Bien utiliser l’IDE d’Arduino (1)