TIMER1

Bonjour,

Je bricole les interruptions sur Pic mais avec arduino je débute.

J'ai trouvé un bout de code qui me convient sur arduino nano 3.0

Il configure pour déclencher une fonction

Problèmes

1 Quelqu'un peut-il me dire comment comprendre
TCCR1A = B00110001;
TCCR1B = B00010010;
TCCR1C = B00000000;
TIMSK1 = B00000010;
TIFR1 = B00000010;
OCR1A = 22000;
OCR1B = 1000;

2 Puis-je transposer sur un arduino mega 2560 ? Les registres sont-ils les mêmes ?

3 Un lien vers de la prose en français sur les registres et les interruptions

4 dans un autre registre : que veut dire (1 << WGM12)

Cordialement

fr

Bonjour,

fr:
1 Quelqu'un peut-il me dire comment comprendre
TCCR1A = B00110001;
TCCR1B = B00010010;
TCCR1C = B00000000;
TIMSK1 = B00000010;
TIFR1 = B00000010;
OCR1A = 22000;
OCR1B = 1000;

Pour cela il faut ce référer au datasheet du microcontrôleur :
http://www.atmel.com/Images/doc8161.pdf (page 134)

fr:
2 Puis-je transposer sur un arduino mega 2560 ? Les registres sont-ils les mêmes ?

Normalement les noms des registres sont les mêmes.
Par contre il faudra vérifier que les bits ont la même significations.

fr:
3 Un lien vers de la prose en français sur les registres et les interruptions

http://home.roboticlab.eu/fr/avr/interrupts
http://em6.clubs.resel.fr/coupe_2003/docs/ProgrammationAVR.pdf
http://193.49.146.171/~cottence/ArduinoCottenceau1112.pdf

fr:
4 dans un autre registre : que veut dire (1 << WGM12)

"1" décalé de WGM12 bits vers la gauche.
Ça équivaut à faire _BV(WGM12) (BV = Bit value)
C'est très utile avec un OU binaire pour concaténer plusieurs options de registre dans un format "humainement lisible".

Salut,

du fait que les timers ont trois comparateurs sur le mega, et deux seulement sur le uno, le mega a des registres en plus, et les bits ne sont pas au même endroit. mais le datasheet de atmel est vraiment très bien fait je trouve, et si tu connais déjà la bidouille de registres, alors tu t'en sortiras très bien!

Les arduinos sont assez polyvalents, donc l'utilisation des registres est longuement documentée (et c'est très bien)!

Bonsoir et merci d'avoir répondu aussi vite.

Pour les points 1, 2 et 3, j'aurais préféré du mâché , prêt à être utilisé mais faudra bien que j'apprenne un peu. :slight_smile:

Pour le 4 : ai-je bien compris ?

TCCR1B |= ((1 << CS10) | (1 << CS11));
Veut donc dire le bit CS10 et le bit CS11 sont à mettre à 1 dans TCCR1B

|= (... c'est quoi le premier caractère ? |=(...) signifie ?

|= est un bitwise OR
http://arduino.cc/en/Reference/BitwiseCompoundOr

Un grand merci !