Mega2560 et sorties PWM

Bonjour,

J’aimerais savoir si il y a quelque chose de particulier à programmer pour utiliser la pin 44 en PWM sur la Mega 2560 r3.

Je pilote sans aucun problème les pins D2 à D13 en PWM. les pins 45 et 46 sont utilisées en commande digitale de relais, il me reste donc la pin 44 que je n’arrive pas à piloter en PWM avec les mêmes instructions. D’où ma question du début.

Merci par avance pour vos réponses

les pins 44 à 46 sont gérées si je me souviens bien par le timer5 qui est le timer par défaut pour la bibliothèque Servo par exemple sur une Mega ➜ si vous utilisez la classe Servo, le timer est occupé pour autre chose.

vous avez de nombreuses pins dispo à côté cela dit pour faire juste de la commande tout ou rien. c'est dommage d'avoir choisi les pins PWM si vous en avez besoin

Ok, je vais libérer les pins 45 et 46 et essayer le PWM sur celles ci

merci pour les renseignements

Ce n'est pas forcément nécessaire , c'était juste une remarque.

Elles sont aussi pilotées par le timer5 - utilisez vous la classe Servo ?

Non

Si je n’arrive pas, je mettrais deux tubes leds sur une sortie PWM au lieu de 1 tube / sortie actuellement.

C’est pas top mais c’est possible.

Si c'est la bibliothèque Servo qui pose problème, ou une autre qui utilise aussi le timer 5:
− le problème rencontré sur la broche 44, peut être aussi sur les broches 45 et 46.
− un analogWrite(44... est détruit par la bibliothèque, il faut alors faire l'analogWrite après. Mais il est possible que l'analogWrite reprogramme le timer et que cela bloque à cause d'une interruption du timer
− même avec Servo, on peut utiliser la broche 44 pour du PWM, car Servo n'utilise que le vecteur lié à la broche 46 (TIMER5_COMPA_vect) et laisse libre le comparateur de la broche 44 (OCR5C). Mais il faut alors le programmer par les registres et peut être garder la fréquence des servos.

Quelles sont les bibliothèques utilisées? Quelle instruction est censé programmer la broche 44? L'essai est-il fait sans rien d'autre (par exemple cela ne fonctionne pas en ne mettant que analogWrite(44,100); dans le setup?...

si vous n'utilisez pas Servo, utilisez vous d'autres bibliothèques qui dépendent d'un timer ou des interruptions ?

si vous ne branchez rien sur votre carte MEGA si ce n'est une LED avec une résistance en série de 220Ω et que vous faites un petit code qui fait varier sa luminosité

const byte pwmPin = 44;

void setup() {
  pinMode(pwmPin, OUTPUT);
}

void loop() {
  for (int v = 0; v < 256; v++) {
    analogWrite(pwmPin, v);
    delay(5);
  }
  for (int v = 255; v >= 0; v--) {
    analogWrite(pwmPin, v);
    delay(5);
  }
}

est-ce que ça fonctionne ?

Par paresse, on peut tester ce code sans résistance et sans led, en pontant les broches 44 et 13. C'est ainsi la led LED_BUILTIN qui fait varier sa luminosité.
En cas de doute, faire le pontage après avoir transféré le programme et fait un reset physique pour s'assurer que la broche 13 est en entrée.

Je n’y avais jamais pensé- idée à conserver dans un coin !

Bonjour,

Après beaucoup de recherches côté soft sans succès, j’ai vérifier mon pcb et le mosfet piloté par la pin 44 avait une référence différente de celles des autres.

Quand j’ai soudé mes mosfet je n’ai pas vérifier les références puisqu’ils venaient tous du même lot …. Grosse erreur de ma part. Après le remplacement du mosfet, le PWM fonctionne parfaitement sur la pin 44.

On apprend tout les jours de ses erreurs.

En tout cas merci pour vos différents renseignements

Merci pour avoir donné le fin mot de l’histoire.