Le PWM nécessite évidemment des ressources informatiques (et ne peut donc pas être fait simultanément avec d'autres processus), mais si je devais définir une broche comme sortie 5V ou 0V, ces états restent-ils constants ou sont-ils "rafraîchis" à plusieurs reprises alors que le microcontrôleur travaille sur d'autres processus ?
C'est difficile à expliquer dans le texte, j'ai donc pensé à une analogie avec ma question. Imaginez que j'ai un verre à la main et qu'on me demande de le mettre sur la table. Ensuite, on me demande de m'asseoir sur une chaise.
Le verre sur la table est un état. Dois-je laisser le verre sur la table, ou dois-je le ramasser et m'asseoir et répéter très rapidement pour que vous ne réalisiez pas que le verre a été retiré de la table?
Ou peut-être plus simplement, le microcontrôleur "oublie", si vous voulez, les états de ses broches, sauf si vous programmez explicitement un changement d'état?
J'espère avoir rendu cela aussi déroutant que possible.
la source
Réponses:
La façon dont j'interprète la question n'a rien à voir avec PWM, désolé si je suis loin de la base, mais il semble que vous l'ayez utilisé comme exemple.
Presque tous les types de microcontrôleurs et de périphériques avec E / S utilisent un verrou / FF pour piloter leurs circuits de sortie. Cela signifie que lorsque vous définissez un état, il reste dans cet état. Ce n'est pas comme la DRAM où les statistiques de sortie doivent être constamment "rafraîchies" afin de rester à leur état.
Avec votre exemple de verre, je n'ai jamais vu de matériel qui ramasserait et poserait le verre sur la table à plusieurs reprises. Il ne mettrait que le verre sur la table et le laisserait jusqu'à ce qu'un changement d'état soit demandé.
Revenons à PWM (juste au cas où vous poseriez réellement des questions sur PWM). Que vous le bitbangiez ou que votre microcontrôleur ait du matériel dédié comme d'autres articles le soulignent, le bloc d'E / S n'est accessible et modifié que si un changement d'état est demandé en exécutant du code ou le périphérique PWM.
la source
Le microcontrôleur n'a pas à rafraîchir les sorties. Une fois qu'ils sont prêts, ils gardent leur état indéfiniment (jusqu'à ce que le courant soit coupé). Alors que dans les processeurs plus anciens, l'horloge était nécessaire pour maintenir l'état du processeur, les processeurs d'aujourd'hui sont ce qu'on appelle entièrement statiques. Cela signifie que l'horloge peut réellement être arrêtée et que tout restera dans son état actuel. En effet, tous les registres (y compris les E / S) sont créés à l'aide de bascules.
la source
La plupart des microcontrôleurs modernes ont un périphérique PWM matériel dédié qui prend en charge le PWM, une analogie très approximative pourrait être:
Le cœur du processeur dit au périphérique de: "basculer cette broche à 10 kHz et 50% de rapport cyclique jusqu'à ce que je vous dise le contraire". Ensuite, le noyau est libre de faire d'autres choses. Il peut déclencher une interruption, c'est-à-dire demander au périphérique de le signaler lorsqu'un événement intéressant se produit.
Vous pouvez peut-être considérer le noyau comme le «patron» et les périphériques comme des travailleurs spécialisés. Le noyau gère l'ensemble du programme (lit chaque instruction et agit en conséquence) et "demande" aux périphériques d'effectuer diverses tâches et de le notifier lorsqu'ils les ont terminées.
Dans votre analogie, ce serait comme si une autre personne tenait le verre, vous lui demandez de le placer sur la table pendant que vous êtes libre de vous asseoir sur la chaise.
Si le micro n'avait pas de périphérique dédié, il devrait le faire "manuellement" (c'est-à-dire lui-même) et garder une trace de l'état des broches et du timing entre les bascules. Cela signifierait beaucoup de cycles dédiés à des trucs assez subalternes qui sont facilement gérés par un simple périphérique.
Voici un schéma de la disposition d'un microcontrôleur 8 bits populaire, le PIC16F690 . Remarquez les périphériques disposés en bas:
la source
Vous faites des hypothèses qui ne sont pas exactement valables. De plus, oui, vous avez rendu la question aussi déroutante que possible. Sérieusement.
PWM peut être fait simultanément avec d'autres processus. Si cela est fait dans le logiciel, vous utilisez des interruptions de minuterie pour générer le signal PWM sur une broche GPIO. D'autres interruptions peuvent s'exécuter et le processus principal consiste à effectuer des opérations indépendantes. De plus, de nombreux MCU peuvent faire le PWM directement dans le périphérique de temporisation, ce qui libère le MCU pour faire d'autres choses.
Quant aux broches d'E / S, elles sont multiplexées. Mais vous contrôlez la façon dont ils sont multiplexés, ce n'est donc pas vraiment un problème.
la source
La plupart des broches d'E / S des microcontrôleurs sont multifonctions, mais je ne les appellerais pas multiplexées.
Par exemple, plusieurs broches d'un AVR peuvent être utilisées comme entrée numérique, sortie numérique ou entrée analogique. Vous devriez normalement sélectionner la fonction souhaitée dans le cadre de l'initialisation du programme et ne pas la modifier plus tard (bien que je puisse voir une raison de changer une entrée analogique en une entrée numérique pour afficher le même signal.)
Pour les sorties numériques, une fois que les broches sont définies comme sorties, elles conserveront la dernière valeur que le processeur leur a écrite - pas besoin de les "rafraîchir" périodiquement.
la source
Dans un exemple simple de périphérique PWM matériel de microcontrôleur, un compteur 8 bits peut être connecté à un comparateur numérique 8 bits. Le microcontrôleur chargerait un nombre dans le comparateur et incrémenterait le compteur avec l'horloge système ou une version divisée en pré-échelle. le compteur serait alors libre, comptant de 0 à 255 et revenant à zéro à plusieurs reprises. Le comparateur aurait une sortie indiquant si la valeur du compteur est supérieure ou inférieure à la valeur du comparateur. Cela deviendrait la sortie PWM. La période du PWM serait le temps qu'il faut au compteur pour terminer un cycle de comptage et le rapport cyclique serait la fraction du comptage total représentée par la valeur du comparateur. Le code du microcontrôleur n'aurait rien d'autre à faire que de configurer le matériel au départ et de modifier les données du comparateur lorsqu'un changement pwm est souhaité. Le PWM produirait un flux continu d'impulsions PWM sans l'attention du processeur.
la source