Compteur d'impulsions

Bonjour à tous,

Dans le cadre d'un projet je dois réaliser un compteur d'impulsions électriques. J'ai déjà créé ce compteur avec des boucles if et while mais la fréquence d'acquisition est limitée à 11,5 kHz à cause du temps de réponse du programme. J'ai entendu parler de la fonction "attachInterrupt" qui pourrait résoudre ce problème de limite car j'aimerais faire des acquisitions de l'ordre du grandeur du MHz. Cependant je ne connais pas comment fonctionne cette fonction, est-ce que quelqu'un pourrait m'expliquer pour que je puisse résoudre mon problème et avancer sur mon projet ?

Je travaille avec la carte Arduino DUE.

Merci !

Bonsoir, Tu as énormément de documentation à ta disposition sur le site arduino, il suffit de chercher un peu. Pour attacInterrpt : http://arduino.cc/en/Reference/AttachInterrupt il y aussi pulsIn : http://arduino.cc/en/Reference/PulseIn En prime tu as même des exemples. @+

Bonjour,

Pour faire une acquisition d'un signal d'un MHz il te faudra utiliser bien plus qu'un simple attachInterrupt() ! Ce qu'il te faut c'est un timer hardware en mode compteur d’impulsion. Un timer hardware peut tourner à maximum F_CPU / 2, soit 8MHz dans le cas d'une carte Arduino classique.

Met là on tombe dans du "bas niveau", il te faudra lire le datasheet de l'ATmega328p, chapitre "Timer 2" ;)

skywodd: Met là on tombe dans du "bas niveau", il te faudra lire le datasheet de l'ATmega328p, chapitre "Timer 2" ;)

Sauf que là il utilise une Due, donc il faut lire la datasheet du micro correspondant, pas de l'ATmega328p. ;)