Was ist ein Core Independent Peripheral?

Was ist ein Core Independent Peripheral?

Core Independent Peripherals (CIPs) sind Peripheriegeräte, die mit zusätzlichen Fähigkeiten entwickelt wurden, um eine Vielzahl von Aufgaben ohne die Notwendigkeit eines Eingriffs der Zentralenrecheneinheit (CPU) zu bewältigen. Jedes Mal, wenn die CPU benötigt wird, um eine Änderung am eingebetteten System vorzunehmen (oder eine Aufgabe irgendeiner Art zu erledigen), stützt sie sich auf Anweisungen, die Sie geschrieben haben und die dann in den Programmspeicher des Microcontrollers heruntergeladen werden, um der CPU genau zu sagen, was zu tun ist.

CIPs halten automatisch einige Aufgaben innerhalb des Systems aufrecht, sodaß die CPU das System einfach überwachen, eine andere Aufgabe parallel erledigen oder in einen Modus mit niedrigerem Stromverbrauch übergehen kann.

Microchip Technology hat viele 8-Bit- und 16-Bit-Microcontroller mit CIPs entwickelt. Alle derzeit verfügbaren CIPs für 8-Bit-PIC®- und AVR®-Mikrocontroller sind nachstehend nach Peripheriekategorien farblich gekennzeichnet:

image

Jedes Peripheriegerät wird einen eigenen Abschnitt mit einer Übersicht und zugehörigen Tutorials an anderer Stelle in diesem Artikel haben. An dieser Stelle werden wir uns nur auf das Konzept der ‘Core Independence’ konzentrieren.

Das folgende Beispiel wird zur Entwicklung dieses Konzepts verwendet.

Ein einfaches Anwendungsbeispiel wurde auf zwei Arten gelöst.

Betrachten wir eine sehr einfache Anwendung, bei der ein einzelner Pin an einem Microcontroller auf HIGH/LOW umgeschaltet wird.

image

Dadurch wird im Wesentlichen eine Rechteckwelle am Ausgangspin des Microcontrollers erzeugt. Da es nicht erforderlich ist, das Tastverhältnis für diese Rechteckwelle zu ändern, wird die Aufgabe in Software gelöst, indem der jeweilige Pin jedes Mal durch eine Schleife geschaltet wird.

image

Überlegen Sie nun, was passieren würde, wenn eine zweite Aufgabe hinzugefügt wird. In diesem Fall wird jedes Mal, wenn eine an einen der Microcontroller-Pins angeschlossene Analogspannung 1,1 V überschreitet, ein Impuls von 2 ms an einem anderen Pin erzeugt. Hier wird ein Potentiometer, das an einen der Microcontroller-Pins angeschlossen ist, zur Steuerung der Analogspannung verwendet.

image

Diese zusätzliche Aufgabe kann auf verschiedene Weise gelöst werden. Wir stellen zwei Lösungen vor. Die erste stützt sich auf eine Benutzersoftware, die Interrupts implementiert, und die zweite auf CIPs.

Lösung A: ein Software-Ansatz

Viele Microcontroller verfügen über einige grundlegende Peripheriegeräte wie einen Komparator, mit dem bestimmt wird, wann die Eingangsspannung 1,1 V übersteigt, und einen Timer, mit dem der Ausgangsimpuls zeitlich gesteuert wird. Sie würden dann einen Code schreiben, der wie in der Abbildung unten aussehen würde.

In der Abbildung oben verhält sich die Softwareroutine wie folgt:

  1. Ein Interrupt wird immer dann erzeugt, wenn der Komparatoreingang 1,1 V überschreitet.

  2. Eine Softwareroutine wird verwendet, um die Priorität des Interrupts zu überprüfen und sicherzustellen, daß nicht gleichzeitig ein Interrupt mit höherer Priorität aufgetreten ist.

  3. Dann wird eine Interrupt-Service-Routine (ISR), die mit dem Komparator-Interrupt verbunden ist, ausgeführt:

  • Zurücksetzen des Timer-Peripheriegeräts.
  • Laden des Timers mit einem Wert, der auf der Haupttaktgeschwindigkeit des Systems basiert, wodurch der Timer bei 2 ms überläuft.
  • Der Ausgangspin wird dann auf HIGH getrieben, um den Ausgangsimpuls zu starten.
  1. Sobald der Timer bei 2 ms überläuft, wird ein weiterer Interrupt erzeugt.

  2. Die Softwareroutine wird verwendet, um die Priorität des Interrupts zu prüfen und sicherzustellen, daß nicht gleichzeitig ein Interrupt mit höherer Priorität aufgetreten ist.

  3. Dann wird der Timer ISR aufgerufen:

  • Löschen des Timers.
  • Der Ausgangspin wird dann LOW getrieben, um den Impuls zu beenden.

Das folgende Bild ist eine Oszilloskopaufnahme des Ausgangs von einem Microcontroller, auf dem die obige softwarebasierte Lösung läuft.

image

In der obigen Abbildung ist die orangefarbene Aufnahme der Ausgang, wenn die analoge Eingangsspannung 1,1 V übersteigt und das blaue Signal der Toggle-Pin ist.

Beachten Sie, daß das blaue Signal an zwei Punkten in und um die ansteigende und abfallende Flanke des orangefarbenen Signals aufhört umzuschalten. Wenn der Komparatoreingang an Punkt A 1,1 V überschreitet, wird der erste Interrupt erzeugt. Die CPU stoppt ihre aktuelle Aufgabe (die in diesem Fall das Umschalten des Ausgangspins ist) und geht dann in die Interrupt-Priorisierung und ISR für den Komparator über. Wenn die CPU von der ISR zurückkehrt, nimmt sie das Toggeln des Ausgangspins wieder auf, wie der Einzelimpuls an Punkt B zeigt. An Punkt C läuft der Timer bei 2 ms über und erzeugt den zweiten Interrupt. Die CPU hört wieder auf, den Ausgangspin umzuschalten, um in die Interrupt-Priorisierungsroutine und dann in die Timer-ISR einzutreten. Wenn die CPU von der Timer-ISR zurückkehrt, nimmt sie das Toggeln des als Punkt D dargestellten Ausgangspins wieder auf.

Das Toggeln eines Ausgangspins ist eine sehr einfache Anwendung, und die erzeugte Unterbrechung kann unbedeutend erscheinen. Stellen Sie sich jedoch vor, daß der Toggle-Pin stattdessen eine wichtigere Aufgabe ist, wie das Erfassen einer Benutzereingabe, wie das Drücken eines Druckknopfes, oder eines Sensorsignals, das eine Überstromsituation anzeigt, oder möglicherweise eine weitere Unterbrechung, die ein systemkritisches Ereignis anzeigt.

Das System könnte durch Prüfstandtests und die Änderung verschiedener Anwendungsparameter, wie z.B. der Systemtaktgeschwindigkeit, reaktionsfähiger gemacht werden, aber bei dieser Art von Lösung wird es immer ein gewisses Maß an Jitter (Schwankungsbreite) geben.

Betrachten wir stattdessen einen anderen Ansatz für diese Anwendung unter Verwendung von CIPs.

Lösung B: der CIP-Ansatz

Viele 8-Bit-Microcontroller von Microchip Technology verfügen über die Fähigkeit, Signale innerhalb des Geräts miteinander zu verbinden, was viele Vorteile mit sich bringt. Dadurch wird nicht nur die Menge an störenden, platzraubenden externen Verbindungen minimiert, sondern diese Signale können auch umgeleitet werden, um mit anderen Peripheriegeräten zu interagieren. Bis zu diesem Punkt ist die Komparator-Peripherie vieler Geräte in der Lage, sich mit Hilfe des Timer 2 mit der Hardware-Limit-Timer (HLT)-Peripherie zu verbinden.

Der Timer 2 mit HLT ist ein Timer, der bis zu einem benutzerspezifizierten Wert zählt und dann zurückgesetzt wird. Die HLT-Fähigkeit fügt ein zusätzliches Signal hinzu, das an eine Reihe von Quellen wie einen On-Board-Taktgeber, einige Peripheriegeräte und sogar an einen der Pins des Microcontrollers angeschlossen werden kann. Dieses zusätzliche Signal wird verwendet, um das Hochzählen des Timer zu STARTEN/STOPPEN. Dieser Timer verfügt auch über eine Reihe von Betriebsarten, einschließlich des Monostabil-Modus. Der monostabile Modus kann bei Auslösung durch dieses zusätzliche Signal, das an den On-Chip-Komparatorausgang angeschlossen werden kann, einen Ausgangsimpuls für eine definierte Zeitdauer erzeugen.

Weitere Informationen über den Timer 2 mit Hardware-Limit-Timer finden Sie unter ‘Dokumentation’ auf Microchip‘s Homepage der Peripheriegeräte (peripheral homepage).

Um zu unserer Anwendung zurückzukehren, wird also das analoge Eingangssignal in den Komparator geleitet und dann der Ausgang des Komparators zum Timer 2 mit HLT, der im Monostabil-Modus konfiguriert ist, geleitet. Wenn der Ausgang des Komparators auf HIGH geht und anzeigt, daß die Eingangsspannung 1,1 V übersteigt, erzeugt Timer 2 mit HLT einen Ausgangsimpuls, den Sie auf eine Dauer von 2 ms konfiguriert haben.

Diese Implementierung ist unten dargestellt:

image

Beachten Sie, daß der Ausgang von Timer 2 mit HLT über ein drittes Peripheriegerät, die so genannte Configurable Logic Cell (CLC), geleitet wird. Die CLC hat viele Fähigkeiten, die an anderer Stelle erklärt werden, einschließlich der Fähigkeit, Signale zu Microcontroller-Pins zu leiten. Der Timer 2 mit HLT-Ausgang wird natürlich nicht an Pins angeschlossen und erfordert daher die Verwendung der CLC.

Die obige Anwendung wird in den Microcontroller heruntergeladen und die resultierenden Wellenformen werden erfaßt:

image

Da die CIPs die Erkennung des 1,1 V-Durchgangs bis zur Erzeugung des 2 ms-Ausgangsimpulses in Hardware automatisch handhaben, steht es der CPU frei, den Toggle-Ausgang weiterhin parallel zu behandeln. Daher ist der Toggle-Ausgang während des 2 ms-Ausgangsimpulses im Gegensatz zu den Ausgangssignalen, die von der vorherigen softwarebasierten Implementierung erzeugt wurden, unterbrechungsfrei.

Was bedeutet das alles?

Durch den Einsatz der CIPs als Ersatz für die interruptgesteuerte Softwarelösung wird nicht nur der Jitter am Toggle-Ausgangspin eliminiert, sondern dies geschieht auch ohne Erhöhung der Systemtaktgeschwindigkeit, was den Stromverbrauch der Anwendung erhöhen würde. Ein zusätzlicher Vorteil ist spürbar, wenn wir sowohl die Wellenformen der softwarebasierten als auch der CIP-Lösung zusammen betrachten.

image

Es fällt auf, daß der Ausgangsimpuls für die softwarebasierte Lösung breiter/länger ist als der Ausgangsimpuls für die CIP-Lösung. Bei der Messung liegt der Ausgangsimpuls der softwarebasierten Lösung tatsächlich näher an 7 ms. Obwohl der Timer so konfiguriert wurde, daß er bei 2 ms überläuft, haben Latenzen, die durch die Software eingeführt wurden, eine zusätzliche Zeitverzögerung bewirkt, die die tatsächliche Geschwindigkeit des Ausgangsimpulses verzögert. Auch dies läßt sich bis zu einem gewissen Grad korrigieren, indem die Betriebsgeschwindigkeit des Systems erhöht wird, wodurch sich auch der Stromverbrauch erhöht. Umgekehrt beträgt der Ausgangsimpuls der CIP-Lösung ohne Änderung des Systemtaktes genau 2 ms.

Zusammenfassung

Unabhängige Kern-Peripheriegeräte wurden entwickelt, um Entwicklern die Möglichkeit zu geben, einen kostengünstigeren Mikrocontroller mit den zusätzlichen Kosteneinsparungen zu nutzen, die sich aus der Minimierung des Zeitaufwands für das Schreiben und natürlich die anschließende Validierung des Codes zur Bewältigung einfacher Aufgaben ergeben. CIPs werden bereits von Microchip Technology validiert. Zusätzlich minimiert die CIP-Lösung für das oben gezeigte einfache Anwendungsbeispiel den Stromverbrauch weiter, indem sie die Systemreaktion verbessert, ohne den Systemtakt zu erhöhen. Diese verbesserte Reaktion könnte dramatische Auswirkungen auf Systeme haben, die schnell auf Signale von Sensoren oder Komponenten der Benutzerschnittstelle reagieren müssen.