PIC24 – plusieurs changements de cycle de service PWM
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 ()?
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!
-, #de, changements, cycle, PIC24, plusieurs, PWM, Service