Go Down

Topic: Signal Rx pour l'arduino (Read 2186 times) previous topic - next topic

UniseV

#15
Mar 28, 2013, 12:29 pm Last Edit: Mar 28, 2013, 12:31 pm by UniseV Reason: 1
MODE pulsIn() :
Chaque commande pulseIn() ne fait rien d'autre qu'attendre, à partir du moment ou elle est lancée, juqu'à :

  • Ce que le signal monte, elle horodate ce front montant...

  • Quand le signal redéscent, elle horodate ce front déscendant et calcule la durée de l'état haut et te la retourne


Ensuite seulement elle rend la main... à la commande pulseIn() suivante.

C'est donc une très mauvaise utilisation du contrôleur qui passe beaucoup de temps à attendre  ;)

Le pire cas est le suivant :
Tu lance la commande pendant que ton signal est haut... il va attendre 20ms pour compter le signal complet suivant... si ça t'arrive sur chacun des 4 canaux, tu perd 80ms à ne rien faire.
Le meilleur des cas :
Si tes commandes arrivent dans le bon ordre juste avant les fronts montant (ce qui n'est pas prévisible) tes pulsIn() dureront de 4ms à 8ms environ.

MODE INTERRUPTION :
En mode interruption, chaque interruption (front montants & descendants de chaque canaux) ne prend environ que 4µs donc pour 4 canaux, tu consommeras 32µs.

RESUME :
Donc pour résumer, pulsIn() consomme entre 4ms et 80ms.
Le mode interruption consomme 32µs (c'est à dire 0,032ms) de façon stable et sans jamais "rater" un créneau.
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