LOCODUINO

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

samedi 25 mai 2019

61 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 à :

Initialisation valeur TOP du TIMER 1 en mode CTC …. 12 mai 10:45, par Michel RIAZUELO

Bonjour Christian et merci pour la réaction rapide,

Pour être franc, je n’aurais pas pensé il y a encore peu de temps que j’irais me plonger dans l’intimité du microcontrôleur ATmega328. Je suis très reconnaissant en même temps qu’admiratif pour ceux qui ont rendu sa contribution essentielle à nos projets via l’IDE d’ARDUINO. Je sais par expérience que ce genre d’exploration est chronophage et … que le temps est compté :-)
Je peux rajouter qu’il en est de même pour les timers dont je connais l’existence depuis le début de mon utilisation (très ancienne) des cartes ARDUINO mais qui me semblaient un peu trop près du cœur de la bête pour être simple d’emploi.

C’est le code d’un ami qui avait "plongé" dans l’usage des timers qui m’a motivé et, forcément, utiliser les timers conduit un jour ou l’autre à se plonger dans la doc du microcontrôleur.

Ce petit préambule est à destination des pratiquants de mon espèce, afin qu’ils se décident à faire le pas …

La doc de l’ATmega328 (DS40002061A) fait plus de 600 pages et je me permets de dire qu’elle est bien faite ! J’ai trouvé en moins de 2 mn l’endroit ou pourrais se trouver la réponse à ma question, et c’est pour moi un critère auquel bien peu de doc de lave-linge répondent :-)

C’est à la fin du paragraphe 16-2-1 et ça dit :
The TOP value, or maximum Timer/Counter value, can in some modes of operation be defined by either the
OCR1A Register, the ICR1 Register, or by a set of fixed values. When using OCR1A as TOP value in a PWM
mode, the OCR1A Register can not be used for generating a PWM output. However, the TOP value will in this case be double buffered allowing the TOP value to be changed in run time. If a fixed TOP value is required, the ICR1 Register can be used as an alternative, freeing the OCR1A to be used as PWM output.

La partie en gras semble dire qu’on peut changer OCR1A (via son buffer) pendant que le compteur tourne … Et tel que c’est dit, on peut penser que cette façon de procéder est courante.

Je me pose ces questions existentielles car l’idée de cette pratique m’est venu alors que je ne suis pas chez moi et que je ne peux pas tester en live. Lundi soir, le rapprochement entre ce qui devrait être et ce qui est ce qui est sera fait ! On sait tous que cela peut réserver des surprises …

Dans ma lecture diagonale des 600 pages j’ai identifié qu’il y a des endroits que mes connaissances ne me permettront pas d’explorer, mais que la rédaction est claire et accessible, il ne faut donc pas se laisser impressionner !

En attendant le jugement des faits, merci Christian pour l’incitation à l’exploration de cette documentation.

Bien cordialement,
Michel

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

23 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 Timers (I)

Les interruptions (1)

Ces tableaux qui peuvent nous simplifier le développement Arduino

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

Bien utiliser l’IDE d’Arduino (1)

Les chaînes de caractères

Comment gérer le temps dans un programme ?

Les fonctions

Instructions conditionnelles : le if … else

Répéter des instructions : les boucles