Lecture pwm avec 328p valeurs étrange

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.

A quel fréquence tourne le PWM?
Parce que déjà faire un print dans une routine d'interruption c'est déconseillé mais la faire trop souvent c'est suicidaire.

hello
apres avoir renseigné le serial.begin et enlevé les "..."
j'ai testé ton prg

Effectivement mon soucis c'était le print dans l'interrupt :blush:

chez moi aussi l y est

Ca dépend de la vitesse de la liaison
Il y a 6 caractères à transmettre. A 9600 bds c'est environ 6 ms et à 115200 bds environ 0.5 ms. Comme une interruption dure 1 ms, ça passe à 115200 bds mais pas à 9600 bds.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.