Go Down

Topic: Plus d'info sur l'utilisation des Timer par l'environnement Arduino (Read 7 times) previous topic - next topic

UniseV

#30
Jun 25, 2012, 03:45 pm Last Edit: Jun 25, 2012, 04:56 pm by UniseV Reason: 1
Bon à titre d'exemple, voici ce que je retiens de la lecture du datasheet à propos des registres concernant les interruptions :

INT0=digital PIN 2 (la PIN 2 de l'Arduino)
INT1=digital PIN 3 (la PIN 3 de l'Arduino)
port D=PIN de 0 à 7 de l'Arduino
port B=PIN de 8 à 13 de l'Arduino (14 n'étant pas documenté côté Arduino)
port C=PIN A0 à A5 (l'équivalent du A6 étant le RESET, la A7 n'est pas documenté)

SREG [I;T;...] pour activer globalement les interruptions
Le I-bit est : Global Interrupt Enable (modifié notamant par SEI, CLI)

EICRA [...ISC11;ISC10;ISC01;ISC00] pour parametrer les type d'interruption INT1 & INT0
ISC11 & ISC 10 : pour INT1
ISC01 & ISC 00 : pour INT0
Se paramètre comme suit :
00 Low level
01 Change (falling & Rising)
10 Falling
11 Rising
Exemple : EICRE = [0;0;0;0;0;0;1;0] veut dit que INT1 est déclenché par Low level & INT0 est déclenché par Falling edge (front déscendant)

EIMSK [...;-;INT1;INT0] Pour activer les interruption sur INT1 & INT0
Enable or Disable INT1 INT0 interruption

EIFR [...;-;INTF1;INTF0] Flag quand les interruption INT sont déclenchées
Flags when interrupt are triggered (reset when interruption is executing)

PCICR [...;-;PCIE2;PCIE1;PCIE0] pour activer le déclenchement d'interruptions sur les ports D, C, B

PCIMSK2 [PCINT23;...;PCINT16] pour selectionner les PIN du PORT qui vont déclencher l'interruption PCIE2 (portD)
PCIMSK1 [-;PCINT14;...;PCINT8] pour selectionner les PIN du PORT qui vont déclencher l'interruption PCIE1 (portC)
PCIMSK0 [PCINT7;...;PINT0] pour selectionner les PIN du PORT qui vont déclencher l'interruption PCIE0 (portB)

PCIFR [...;-;PCIF2;PCIF1;PCIF0] Flag quand les interruption PCI sont déclenchées
Flags when interrupt are triggered (reset when interruption is executing)

...

Voila ce n'est qu'un exemple, je cherche la forme appropriée qui peremettrait une utilisation "simple"... mais c'est à peu près ce qu'il me faut pour comprendre et pouvoir utiliser les timers.
EN: Libraries are my Gurus, they make me believe anything they want !
FR: Les librairies sont mes gourous, elles me font croire ce qu'elles veulent !

68tjs


UniseV

Ton doc est très chouette, j'aurai bien aimé tomber dessus il y a quelques temps...  :smiley-sweat: ça m'aurait évité de me fourvoyer à ce sujet.

Le même doc qui traiterait des counter/timer me serait très utile.

Sev
EN: Libraries are my Gurus, they make me believe anything they want !
FR: Les librairies sont mes gourous, elles me font croire ce qu'elles veulent !

68tjs

Il fallait regarder dans le sous forum tutoriaux !

Il y a aussi "Le guide Arduino" épinglé en tête du forum principal qui est une mine de renseignements.

Quand on dit qu'il faut se renseigner avant .........

UniseV

Je ne connaissais malheureusement pas ce forum lorsque j'ai travaillé sur la partie interruption.

En revanche, j'ai déjà parcouru la partie "Le guide Arduino" et je n'y ai pas vraiment trouvé ce que je cherchais, qui n'est autre que la couche non-documentée de l'Arduino, c'est à dire toutes les librairies "invisibles" de l'environnement Arduino.

Il serait bon de documenter cette partie, au moins pour que les débutants qui se mettent au C/C++ pour l'Arduino puissent savoir quel commande est du C générique et quelle commande appartient à la couche Arduino.

Sev
EN: Libraries are my Gurus, they make me believe anything they want !
FR: Les librairies sont mes gourous, elles me font croire ce qu'elles veulent !

Go Up