PIC24 – plusieurs changements de cycle de service PWM

MZF786

PIC24 – plusieurs changements de cycle de service PWM


Toutes mes excuses à l’avance en raison de mon manque d’expérience avec le C. intégré

Je travaille sur un projet PIC24FJ64GA004 dans lequel une valeur PWM 16 bits doit être modifiée plusieurs fois. J’utilise MPLAB IDE et C30.

Je me demande comment je peux changer les valeurs PWM et où dans le code pour les changer. Est-ce une bonne idée de changer les valeurs PWM dans un temporisateur ISR? Dans main ()?

Phil Frost

avez-vous essayé de lire la fiche technique?

MZF786

Oui, j’en comprends certaines choses. A également fait un tutoriel pour la pratique. Mais quand j’ai vu des codes pour RVB en utilisant PWM, ils m’ont beaucoup perplexe. Je suis confus maintenant. J’ai fait un tutoriel de PIC dans lequel PWM change à l’interruption de la minuterie. Mais la plupart des gens pour RVB changent PWM de manière différente. Ce qui est difficile à comprendre.

Phil Frost

Je pense que votre question sera mieux reçue si vous citez des choses spécifiques qui vous déroutent. En l’état, la question est très large et difficile à répondre.

Adam Lawrence

@ MZF786 J’ai mis à jour le ‘look’ de votre question pour mieux refléter comment elle devrait apparaître sur ce site; vous devrez probablement ajouter plus de détails / clarifier les choses selon les commentaires ci-dessus. De plus, je ne pense pas qu’il existe un « pic24fj64da004 » – je n’ai trouvé aucune information sur le site Web de Microchip. Je suppose que vous vouliez dire -GA, pas -DA. Veuillez corriger si ce n’est pas le cas.

Réponses


 Olin Lathrop

Votre question est si large qu’elle sera probablement close bientôt, je ne veux donc pas y consacrer beaucoup de temps.

Cependant, brièvement, la « valeur » PWM principale est son rapport cyclique. Ceci est modifié en écrivant une valeur différente dans le registre de rapport cyclique approprié. Pour comprendre ce que c’est et quelles restrictions il pourrait y avoir, vous devez regarder dans la fiche technique pour voir quels périphériques votre PIC particulier a, puis lire en détail sur le module PWM dans le Family Reference Manual. La fiche technique vous indiquera quel chapitre est pertinent pour l’implémentation particulière du périphérique dans votre PIC.

Il existe deux types de modules qui peuvent produire des sorties PWM en mode natif. Les modules PWM nus sont appelés « comparaison de sortie ». Il existe également des modules PWM plus sophistiqués destinés à des applications plus spécifiques. Ceux-ci sont généralement appelés quelque chose avec « PWM » dans leurs noms, comme « contrôle moteur PWM » par exemple.


 Brian Drummond

Le problème semble être de savoir s’il est préférable de mettre à jour la valeur PWM dans le gestionnaire d’interruption ou le programme principal.

La mise à jour dans le programme principal peut potentiellement confondre la logique PWM. Par exemple, si le compte à rebours est à 0 et que le programme principal réduit la valeur PWM en dessous du compte actuel, par exemple, le comparateur « valeur » se déclenche-t-il lorsque count = valeur? Si tel est le cas, vous pouvez obtenir une impulsion courte de manière inattendue et une valeur de sortie temporairement incorrecte. (Différents micros peuvent réagir différemment; je ne sais pas si c’est un problème réel avec le PIC; mais la possibilité est là).

Il peut donc être préférable de synchroniser les mises à jour avec le compteur PWM; cela se fait le plus facilement avec une interruption de minuterie. Ensuite, le programme principal peut générer une nouvelle valeur et définir un indicateur, de sorte que la prochaine interruption de temporisation met à jour la valeur PWM de manière sûre et efface l’indicateur. (L’indicateur peut simplement être la variable « nouvelle valeur pwm » différente de 0).

Cela empêche la plupart du travail du gestionnaire d’interruption, qui doit généralement être aussi court que possible.

Certains des exemples que vous étudiez peuvent ne pas prendre la peine d’aller aussi loin; les erreurs temporaires dans la luminosité des LED n’ont probablement pas d’importance!

Olin Lathrop

La mise à jour du cycle de service dans une routine d’interruption ne résout pas vraiment le problème de sa mise à jour en cours d’utilisation. Le code de premier plan le mettra à jour de façon aléatoire au cours d’un cycle, tandis que le code d’interruption aura un décalage raisonnablement répétable depuis le début d’un cycle. L’un n’est pas intrinsèquement meilleur que l’autre. Si le module PWM a des registres de rapport cyclique à double tampon, cela n’a pas d’importance. Si ce n’est pas le cas, les interruptions de mises à jour ne résolvent vraiment rien.

Brian Drummond

Il y aurait un certain cycle de service minimum en dessous duquel les mises à jour d’interruption seraient problématiques; J’aurais dû le souligner.

MZF786

Salut les gars, j’ai regardé la fiche technique de la photo et je trouve qu’elle a une fonction de double tampon. Alors maintenant, pensez-vous que je peux définir des valeurs en interruption.

 

-, #de, changements, cycle, PIC24, plusieurs, PWM, Service

 

wiki France

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *