Go Down

Topic: Signal Rx pour l'arduino (Read 2658 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy