Microcontrôleurs - les états de sortie sont-ils constants ou multiplexés?


14

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.


4
+1 Question intéressante bien que votre première déclaration soit incorrecte et l'idée de PWM matériel est de sorte que le processeur ne doive pas être impliqué tout le temps. Mais laissez-le de cette façon et je suis sûr que quelqu'un aura une bonne explication de la façon dont tout cela fonctionne.
PeterJ

Je pensais que PWM est tel que le processeur change le temps de cycle HIGH / LOW. De cette façon, il semble que le processeur soit directement impliqué - au moins le moment où l'état est changé.
sherrellbc

1
Pour changer le rapport cyclique de 10% à 20% par exemple, la CPU doit être impliquée, mais seulement pendant quelques cycles pour changer un registre. Pour le PWM matériel, une fois qu'il est passé à 20%, même si la fréquence PWM matérielle est de 1 MHz, cela n'affecte plus le processeur.
PeterJ

Avez-vous de bons liens vers la documentation sur le fonctionnement du microcontrôleur à un niveau inférieur? Je ne comprends pas vos références au registre, je ne peux donc pas pleinement apprécier ces réponses.
sherrellbc

1
Pas très déroutant. Essayez plus fort!
radagast

Réponses:


16

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.


C'est précisément ma question, même s'il semble qu'il y ait beaucoup de microcontrôleurs que je ne réalise pas que je ne comprends pas.
sherrellbc

3
Gardez simplement le nez dans les fiches techniques, expérimentez et posez des questions. Vous aurez le coup de main.
Kris Bahnsen

11

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.


Et nous progressons! Merci a plus de sens maintenant. Je vous remercie!
sherrellbc

10

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:

entrez la description de l'image ici


Je ne savais pas que de tels composants périphériques existaient. Ces composants sont-ils donc plutôt de petits processeurs? Il est très logique que de telles choses existent.
sherrellbc

Pas des processeurs, non - les périphériques ressemblent plus à des blocs matériels dédiés conçus spécifiquement pour effectuer une certaine tâche. Par exemple, un micro typique aura à bord des périphériques tels que ADC, PWM, Timers, UART, SPI, etc.
Oli Glaser

Je vais certainement approfondir ce sujet, bien que ma compréhension de ces systèmes soit certainement biaisée. J'avais l'impression que l'UC ferait tout le traitement. Les "instructions" données aux périphériques doivent être interprétées. Je suppose que c'est là que je ne comprends pas complètement.
sherrellbc

2
J'ai ajouté un schéma d'un micro typique - un bon endroit pour commencer à lire est la fiche technique, à laquelle j'ai également lié.
Oli Glaser

@sherrellbc, c'est là qu'un processeur et un microprocesseur sont différents. Dans un µC, vous pouvez voir que par exemple la RAM, la ROM, l'ALU, le port série, etc. sont tous intégrés dans la même puce. Dans un PC, vous savez que le processeur est connecté en externe à ces circuits.
chwi

5

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.


Je comprends votre commentaire concernant les interruptions du temporisateur PWM - cela a du sens. De cette façon, le processeur n'est impliqué qu'au moment où il change l'état de sortie. Bien que vous disiez que les broches d'E / S sont multiplexées - c'est-à-dire que si je programme le contrôleur pour émettre une broche HAUT et ensuite effectuer un autre calcul sans rapport, alors la broche est momentanément réglée sur BAS pendant que de tels processus sont effectués?
sherrellbc

@sherrellbc Vous contrôlez la façon dont les broches sont multiplexées. Normalement, vous les configurez au démarrage et ne les modifiez pas après cela. Ce ne serait donc pas "momentanément bas", à moins que vous ne le lui demandiez spécifiquement de le faire.

Je m'excuse si en ajoutant l'exemple PWM j'ai confondu les lecteurs. Le but de cette question était de déterminer si oui ou non une broche d'E / S instruite réglée sur HIGH est multiplexée par le contrôleur (c'est-à-dire parce qu'elle doit constamment "rafraîchir" les états de broche et ne faire qu'une seule chose à la fois). Cependant, maintenant je me rends compte qu'il y a beaucoup de microcontrôleurs que je ne comprends pas (périphériques). Donc, il me semble que la réponse est non, les broches de sortie sont définies dans un état et restent perpétuellement dans cet état jusqu'à ce qu'elles soient modifiées.
sherrellbc

1

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.


Ils seraient multiplexés si le processeur définissait la valeur, supprimait cette valeur, exécutait d'autres instructions, puis bouclait et définissait à nouveau la valeur d'origine. Telle est l'essence de ma question. Cependant, à partir des réponses ci-dessus, il y a plusieurs péripériaux qui forment ces fonctions et le processeur n'a rien à voir avec cela jusqu'à ce qu'il lui soit demandé de faire autrement; Je n'en avais aucune idée. Beaucoup à apprendre. Merci d'avoir répondu.
sherrellbc

1

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.