LOCODUINO

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

mardi 23 avril 2024

Visiteurs connectés : 86

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

Initialisation valeur TOP du TIMER 1 en mode CTC .... 12 mai 2019 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.)

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

Les Timers (III)

Comment gérer le temps dans un programme ?

Calculer avec l’Arduino (1)

Bien utiliser l’IDE d’Arduino (1)

Les Timers (IV)

Les Timers (II)