PWM erfordern offensichtlich Rechenressourcen (und können daher nicht gleichzeitig mit anderen Prozessen ausgeführt werden). Wenn ich jedoch einen Pin als Ausgang 5 V oder 0 V festlegen würde, bleiben diese Zustände konstant oder werden sie wiederholt "aktualisiert", wenn der Mikrocontroller mit anderen Prozessen arbeitet ?
Dies ist im Text schwer zu erklären, daher habe ich mir eine Analogie zu meiner Frage überlegt. Stellen Sie sich vor, ich habe ein Glas in der Hand und werde angewiesen, es auf den Tisch zu stellen. Dann werde ich angewiesen, mich auf einen Stuhl zu setzen.
Das Glas auf dem Tisch ist ein Zustand. Lasse ich das Glas auf dem Tisch oder hebe ich es wieder auf und setze mich und wiederhole es sehr schnell, damit Sie nicht bemerken, dass das Glas jemals vom Tisch entfernt wurde?
Oder vielleicht einfacher: "vergisst" der Mikrocontroller die Zustände seiner Stifte, wenn Sie nicht ausdrücklich eine Zustandsänderung programmieren?
Hoffentlich habe ich das so verwirrend wie möglich gemacht.
quelle
Antworten:
Die Art und Weise, wie ich die Frage interpretiere, hat nichts mit PWM zu tun. Tut mir leid, wenn ich weit von der Basis entfernt bin, aber es klingt, als hätten Sie es nur als Beispiel verwendet.
Nahezu alle Arten von Mikrocontrollern und Geräten mit E / A verwenden ein Latch / FF, um ihre Ausgangsschaltungen zu steuern. Wenn Sie einen Status festlegen, bleibt dieser in diesem Status. Es ist nicht wie bei DRAM, wo die Ausgabestatistiken ständig "aktualisiert" werden müssen, um in ihrem Zustand zu bleiben.
Bei Ihrem Glasbeispiel habe ich noch nie ein Gerät gesehen, das das Glas wiederholt auf den Tisch hebt und ablegt. Es würde immer nur das Glas auf den Tisch stellen und dort belassen, bis eine Zustandsänderung angefordert wird.
Zurück zu PWM (nur für den Fall, dass Sie tatsächlich nach PWM gefragt haben). Unabhängig davon, ob Sie es bitbangen oder Ihr Mikrocontroller über dedizierte Hardware verfügt, wird auf den E / A-Block nur zugegriffen und dieser geändert, wenn eine Statusänderung durch Ausführen von Code oder das PWM-Peripheriegerät angefordert wird.
quelle
Der Mikrocontroller muss die Ausgänge nicht aktualisieren. Sobald sie eingestellt sind, behalten sie ihren Zustand auf unbestimmte Zeit bei (bis die Stromversorgung unterbrochen wird). Während bei älteren Prozessoren die Taktung erforderlich war, um den Prozessorstatus beizubehalten, werden die heutigen Prozessoren als vollständig statisch bezeichnet. Das bedeutet, dass die Uhr tatsächlich gestoppt werden kann und alles in seinem aktuellen Zustand bleibt. Dies liegt daran, dass alle Register (einschließlich E / A) mit Flip-Flops erstellt werden.
quelle
Die meisten modernen Mikrocontroller verfügen über ein dediziertes Hardware-PWM-Peripheriegerät, das sich um das PWM kümmert. Eine sehr grobe Analogie könnte sein:
Der Prozessorkern weist das Peripheriegerät an, "diesen Pin bei 10 kHz und 50% Tastverhältnis umzuschalten, bis ich Ihnen etwas anderes sage". Dann ist der Kern frei, um andere Sachen zu machen. Es kann einen Interrupt auslösen, dh das Peripheriegerät auffordern, ihm mitzuteilen, wenn etwas Interessantes passiert.
Sie können sich den Kern vielleicht als "Chef" und die Peripherie als Facharbeiter vorstellen. Der Kern verwaltet das gesamte Programm (liest jeden Befehl und handelt danach) und "bittet" die Peripheriegeräte, verschiedene Aufgaben auszuführen und ihn zu benachrichtigen, wenn sie diese abgeschlossen haben.
In Ihrer Analogie wäre es, als würde eine andere Person das Glas halten und sie anweisen, es auf den Tisch zu stellen, während Sie sich auf den Stuhl setzen können.
Wenn das Mikro kein dediziertes Peripheriegerät hätte, müsste es dies "manuell" (dh selbst) tun und den Zustand der Stifte und das Timing zwischen den Umschaltungen verfolgen. Dies würde eine Menge Zyklen bedeuten, die hübschen Kleinigkeiten gewidmet sind, die leicht von einem einfachen Peripheriegerät gehandhabt werden können.
Hier ist ein Diagramm des Aufbaus eines beliebten 8-Bit-Mikrocontrollers, des PIC16F690 . Beachten Sie die unten angeordneten Peripheriegeräte:
quelle
Sie machen einige Annahmen, die nicht genau gültig sind. Ja, Sie haben die Frage so verwirrend wie möglich gemacht. Ernsthaft.
PWM kann gleichzeitig mit anderen Prozessen durchgeführt werden. Wenn dies in der Software erfolgt ist, verwenden Sie Timer-Interrupts, um das PWM-Signal auf einem GPIO-Pin zu generieren. Andere Interrupts können ausgeführt werden, und der Hauptprozess besteht darin, nicht verwandte Dinge zu tun. Außerdem können viele MCUs die PWM direkt in der Timer-Peripherie ausführen, sodass die MCU andere Aufgaben ausführen kann.
Die E / A-Pins werden gemultiplext. Aber Sie haben die Kontrolle darüber, wie sie gemultiplext werden. Das ist also kein wirkliches Problem.
quelle
Die meisten I / O-Pins von Mikrocontrollern sind multifunktional, aber ich würde sie nicht als Multiplex-Pins bezeichnen.
Beispielsweise können mehrere Stifte eines AVR als digitaler Eingang, digitaler Ausgang oder analoger Eingang verwendet werden. Normalerweise würden Sie die gewünschte Funktion als Teil der Programminitialisierung auswählen und später nicht ändern (obwohl ich möglicherweise einen Grund sehe, einen analogen Eingang in einen digitalen Eingang zu ändern, um dasselbe Signal anzuzeigen.)
Bei digitalen Ausgängen wird, sobald die Pins als Ausgänge festgelegt sind, der letzte Wert gespeichert, den der Prozessor an sie geschrieben hat. Sie müssen nicht regelmäßig "aktualisiert" werden.
quelle
In einem einfachen Beispiel eines Mikrocontroller-Hardware-PWM-Peripheriegeräts könnte ein 8-Bit-Zähler mit einem 8-Bit-Digitalkomparator verbunden sein. Der Mikrocontroller würde eine Zahl in den Komparator laden und den Zähler mit der Systemuhr oder einer vorskalierten geteilten Version davon inkrementieren. Der Zähler würde dann frei laufen und wiederholt von 0 bis 255 und zurück auf Null zählen. Der Komparator würde einen Ausgang haben, der anzeigt, ob der Zählerwert größer oder kleiner als der Komparatorwert ist. Dies würde der PWM-Ausgang werden. Die Periode der PWM wäre, wie lange es dauert, bis der Zähler einen Zählzyklus abgeschlossen hat, und der Arbeitszyklus wäre, welcher Bruchteil der Gesamtzählung durch den Komparatorwert dargestellt wird. Der Mikrocontroller-Code hätte nichts zu tun, außer die Hardware zunächst einzurichten und die Komparatordaten zu ändern, wenn eine PWM-Änderung gewünscht wird. Die PWM würde einen kontinuierlichen Strom von PWM-Impulsen ohne die Aufmerksamkeit des Prozessors ausgeben.
quelle