Bonjour à tous,
j'essaie actuellement de lire une valeur pwm sur 328p. Mais j'obtiens des valeurs étrange. Mon entrée PWM est branchée sur le pin PD3. Pour lire ma valeur PWM j'utilise des interrupts voici mon pseudo code
int volatile prev_time;
int volatile pwm_value;
void setup(){
....
attachInterrupt(1, falling, FALLING); // 1 car j'utilise le INT1 j'utilise FALLING car mon PWM est inversée
....
}
void falling() {
attachInterrupt(1, rising, RISING);
prev_time = micros();
}
void rising() {
attachInterrupt(1, falling, FALLING);
pwm_value = micros()-prev_time;
Serial.println(pwm_value);
}
void loop(){
.....
}
Le soucis quand j'affiche la valeur pwm j’obtiens des choses étrange, voici un exemple de sortie
16:20:07.126 -> 544
16:20:07.126 -> 248
16:20:07.126 -> 1072
16:20:07.158 -> 1072
16:20:07.158 -> 1088
16:20:07.158 -> 848
16:20:07.158 -> 552
16:20:07.158 -> 256
16:20:07.190 -> 1072
16:20:07.190 -> 1072
16:20:07.190 -> 1080
16:20:07.190 -> 856
16:20:07.190 -> 560
16:20:07.190 -> 264
16:20:07.222 -> 1072
16:20:07.222 -> 1080
16:20:07.222 -> 1064
16:20:07.222 -> 864
16:20:07.222 -> 568
Les valeurs qui me dérange sont celles qui sont inférieur a 1000, les valeurs "normales" sont celles qui tourne autour de 1080, est-ce que je fait mal quelque chose ? J'ai vérifié mon signal à l'oscillo il est ok, les masses sont bien communes... En gros ça fonctionne à 50% je devrais toujours tourner aux alentours de 1080 normalement.