Je travail un peu avec les signaux PWM et j'aimerais pouvoir mesurer la fréquence d'un signal PWM mais je ne sais pas torp comment faire. J'utilise les interrupt pour afficher la valeur de mon PWM avec des fronts RISING et FALLING
Option 1 :
si vous êtes capables de calculer la durée entre un front montant et un front descendant, vous savez calculer la demi periode (à 50% de duty cycle - sinon tenir compte du rapport), donc la période et la fréquence étant l'inverse de la période, ça ne devrait pas être trop compliqué...
pas la peine d'attacher les interruptions dans les interruptions, faites ça dans le setup une fois pour toutes
les variables globales utilisées dans les interruptions doivent être déclarées volatile
il faudra une section critique dans la loop pour calculer la fréquence
Option 2 : vous regardez la doc et la fréquence du PWM est connue
par défaut, pour un Arduino à base de 328P :
PWM de 976,56 Hz sur les broches D5 ou D6
PWM de 490,20 Hz sur les broches D3, D9, D10, ou D11
Et pour un Arduino Mega :
PWM de 976,56 Hz sur les broches D4 ou D13
PWM de 490,20 Hz sur les broches D2, D3, D5, D6, D7, D8, D9, D10, D11, ou D12
Si tu es capable de mesurer le temps de "1" et le temps de "0" il suffit d'additionner ces deux temps et tu as la période de la PWM.
Sachant que pour un signal répétitif comme la PWM, la fréquence est l'inverse de la période.
Note :
Si c'est juste pour connaitre la valeur sans la traiter ultérieurement dans le programme, le plus simple est de faire la mesure avec l'analyseur logique, clone de Saleae, à 8€ sur Ebay ou Ali.