CPU von Mikrocontrollern entlasten Peripheriefunktionen schnell und einfach triggern

Embedded-Anwendungen sind extrem komplex. Sie erfordern eine höhere Funktionssicherheit, optimale Ausführungszeit mit Echtzeit-Reaktionen sowie nahtlose Synchronisierung zwischen unterschiedlichen Funktionen. Durch einen Peripheral-Trigger-Generator lassen sich viele Anwendungen vereinfachen.

Von der Motorsteuerung mit integrierter Blindleistungskompensation bis zur Steuerung der Lichtintensität müssen sich komplexe Anwendungen zwischen verschiedenen Modulen einfach umschalten lassen. Prozessorgesteuerte Timing- und Sequenzierungslösungen besitzen inhärente Latenzen, die sich nicht immer genau vorhersagen lassen. Ein solches Vorgehen verbraucht zudem wertvolle CPU-Bandbreite, ohne die Fähigkeiten der CPU ausreichend zu nutzen. Diese Bandbreite könnte zur Optimierung der Anwendungsleistung auslagert werden. 

Der Peripheral-Trigger-Generator (PTG), ist eine core-unabhängige Peripherieschaltung (Core Independent Peripheral – CIP). Dieser PTG ist Teil der 16-Bit-Digital-Signal-Controller (DSC) der Serie dsPIC33 von Microchip. Er ermöglicht die Koordinierung eines genauen Timings sowie eine Sequenzierung von Funktionen in komplexen Anwendungen und kann damit die CPU entlasten.

Dieser Artikel präsentiert mehrere Beispiele, in denen ein PTG die Sequenzierung von Peripherieschaltungen in zeitkritischen Anwendungen vereinfacht: die Steuerung eines Motors mit Blindleistungskompensation, die Steuerung der Lichtintensität oder die Erzeugung eines Signals mit konstanter Frequenz, das unabhängig vom CPU-Kern auch als Taktquelle dienen kann. Da der PTG unabhängig vom CPU-Kern arbeitet, kann er weiter laufen, während sich die CPU im energiesparenden Sleep-Modus befindet oder mit anderen kritischen Aufgaben befasst ist.

Wie der Name schon sagt, ist der PTG ein benutzerprogrammierbarer Sequenzer, der Triggersignale anhand komplexer Eingangssignal-Sequenzen erzeugt, und damit den Betrieb anderer, auf dem Chip integrierter Peripherieschaltungen koordiniert. Anwendungen nutzen den PTG zur Zusammenarbeit mit anderen Peripherieschaltungen wie A/D-Wandlern (ADC), Ausgangs-Komparatoren (OC), Pulsbreitenmodulatoren (PWM), Timern und Interrupt-Controllern zur Erzeugung komplexer Sequenzen aus Trigger- und Ausgangssignalen. Der PTG verringert nicht nur die Abhängigkeit der Anwendung vom CPU-Kern, er übernimmt auch die ausschließliche Kontrolle über Modul-Interaktionen. Dies verringert die Software-Komplexität und sichert die Modularität der Anwendung.

Die PTG-Peripherieschaltung unterstützt 8-Bit-Befehle – die sogenannten Step-Befehle – für die PTG-Queue-Register. Jeder 8-Bit-Step-Befehl besteht aus einem 4-Bit-Befehlscode und einem 4-Bit-Optionsfeld. Diese Befehle definieren eine Sequenz von Ereignissen zur Erzeugung von Ausgangs-Triggersignalen für die Peripherieschaltungen. Die Step-Befehle lassen sich auch zur Erzeugung von Interrupt-Requests für den Core nutzen. 

Blindleistungskompensations- und Motorsteuerung 

In einer integrierten Blindleistungskompensations- und Motorsteuerungs-Anwendung steuert ein einziger DSC über eine feldorientierte Regelung (FOC – Field Oriented Control) einen Permanentmagnet-Synchronmotor und übernimmt außerdem die Blindleistungskompensation. Eine solche Anwendung benötigt drei PWM-Kanäle zur Steuerung der Motorfunktion sowie einen zusätzlichen PWM für die Blindleistungskompensation. Mit der Ausgangskomparator-Peripherieschaltung (OC) lässt sich die Zahl der für die Anwendung verfügbaren PWM-Kanäle über die Anzahl der auf dem Baustein verfügbaren High-Speed PWM-Kanäle hinaus steigern. 

Zusammen mit der OC-Peripherieschaltung lässt sich die PWM-Peripherieschaltung zur Erzeugung der für die Motorsteuerung und den PFC-Betrieb (Power Factor Correction) erforderlichen Signale nutzen. Bei Anwendungen wie der Blindleistungskompensation ist allerdings das Ausführungs-Timing sehr wichtig und erfordert die Durchführung verschiedener Aufgaben innerhalb einer optimalen Ausführungszeit. Dies umfasst die Synchronisierung der PWM-Stufen für Motorsteuerung und Blindleistungskompensation, die Triggerung des A/D-Wandlers sowie eine Umschaltung der für die Rückkopplungssignale der Motorsteuerung und der Blindleistungskompensation genutzten A/D-Wandlerkanäle.

Diese Anforderungen lassen sich mit der PTG-Peripherieschaltung effizient realisieren. Sie übernimmt die Synchronisation zwischen den Hochgeschwindigkeits-Peripherieschaltungen für PWM und OC und erzeugt Peripherie-Triggersignale für den A/D-Wandler durch Überwachung der Hochgeschwindigkeits-PWM-Flanken. Der PTG überwacht außerdem den »A/D-Wandlung-komplett-Interrupt« und erzeugt entsprechende Interrupts zur Ausführung des Steuercodes für feldorientierte Regelung und Blindleistungskompensation. So sind weniger CPU-Interventionen nötig, und die Peripherie wird unabhängig vom CPU-Kern betrieben. Auf diese Weise wird der Gesamt-Stromverbrauch der Anwendung verringert und zugleich CPU-Bandbreite zur Ausführung weiterer kritischer Funktionen freigesetzt. Die Schaltfrequenz der PWM-Stufen für Motorsteuerung und Blindleistungskompensation sollten so gewählt werden, dass sie ein ganzzahliges Vielfaches des jeweils anderen Wertes beträgt.

Der A/D-Wandler im dsPIC-DSC kann vier Kanäle gleichzeitig abtasten. Die Algorithmen für Motorsteuerung und Blindleistungskompensation besitzen ihre eigenen Analogkanäle, die gleichzeitig abgetastet werden müssen, da das Phasenverhältnis dieser Signale entscheidend für die Implementierung einer wirksamen Steuerung ist.

Die Rückkoppelsignale von Motorsteuerung und Blindleistungskompensation sollten so ausgewählt werden, dass sie durch alternierende A/D-Wandler-Kanalauswahl sowohl die Motorsteuerungs- wie auch die Blindleistungskompensationssignale abtasten können. Bevor der A/D-Wandler getriggert wird, müssen die Motorsteuerungs- und Blindleistung-Kompensationssignale in Abhängigkeit von den PWM-Flanken an die Sample-and-Hold-Stufen angelegt werden. Dabei sollten die Kanäle so konfiguriert werden, dass die Wandlungsergebnisse für feldorientierte Regelung und Blindleistungskompensation am Ende einer Sampling- und Wandlungssequenz für die vier Kanäle in den entsprechenden A/D-Wandler-Puffer-Registern bereitstehen.

Nach Setzen der Kanalwahl-Bits zur Verschaltung der Blindleistungskompensations-Rückkoppelsignale mit der Sample-and-Hold-Stufe eines A/D-Wandlers muss ein Triggersignal für jeden Blindleistungskompensations-PWM-Zyklus erzeugt werden. Auf ähnliche Weise muss ein A/D-Wandler-Triggersignal für jeden Motorsteuerungs-PWM-Zyklus generiert werden, nachdem die Kanalwahl-Bits zur Verbindung der Motorsteuerungs-Rückkoppelsignale mit der Sample-and-Hold-Stufe eines A/D-Wandlers gesetzt worden sind. Die PTG-Peripherieschaltung wird also so konfiguriert, dass sie die Flanken der PWM-Pulse für Motorsteuerung und Blindleistungskompensation überwacht und daraus ein Triggersignal für den A/D-Wandler erzeugt. Weiterhin müssen zwei PTG-Interrupts zur Ausführung des Codes für feldorientierte Steuerung und Blindleistungskompensation generiert werden (Bild 1).

Dieses Beispiel zeigt, wie man mit dem PTG eines dsPIC33-Bausteins die Implementation durch eine effiziente Sequenzierung des Betriebs von A/D-Wandlern und PWM-Stufen für Motorsteuerung und Blindleistungskompensation vereinfachen kann. 

Beleuchtungssteuerung 

 Ein PWM-Generator mit einer OC-Schaltung lässt sich zur Steuerung der Helligkeit einer Leuchte nutzen. 

Eine solche Anwendung nutzt zwei OC-Peripherieschaltungen. Ihre Tastverhältnisse lassen sich über Eingangssignale steuern, die aus zwei voneinander getrennten A/D-Wandlerkanälen abgeleitet werden. Das Tastverhältnis wird in Abhängigkeit von den beiden A/D-Wandlerwerten aktualisiert. Die PTG-Peripherieschaltung ermöglicht eine einfachere Synchronisierung von A/D-Wandler- und OC-Peripherieschaltungen. Zusätzlich kann mit dem PTG eine Blockierung von Peripherieschaltungen vermieden und so die Betriebssicherheit der Anwendung verbessert werden.

Zur Durchführung der Synchronisierung überwacht die Schaltung zunächst den A/D-Wandler und erzeugt entsprechende Interrupts zur Veränderung des OC-Tastverhältnisses. Anschließend wechselt der PTG den A/D-Wandlerkanal ohne die CPU zu stören, da der PTG dies eigenständig erledigen kann. Als zusätzliche Sicherheitsmaßnahme für den Fall eines unerwarteten Fehlers verfügt die PTG-Peripherieschaltung über einen speziellen Watchdog-Timer zur Überwachung und Durchführung der eventuell benötigten Korrekturmaßnahmen. Bild 2 zeigt ein Blockdiagramm dieser Anwendung.

Der Watchdog-Timer in der PTG-Peripherieschaltung verhindert eine Situation, in der der PTG unbegrenzt auf ein externes Ereignis wartet, zum Beispiel bei der Ausführung eines Befehls, der einen High-Low-Zustand eines Hardware-Triggers erwartet. In dieser Anwendung wartet der PTG auf ein Triggersignal für den Abschluss einer A/D-Wandlung. Einmal aktiviert, beginnt der Watchdog-Timer beim Start der Befehlsausführung zu zählen. Tritt das erwartete Ereignis nicht ein, bevor die Timeout-Periode des Watchdog-Timers abläuft, dann bricht die PTG-Peripherieschaltung die Ausführung des erfolglosen Befehls ab und stoppt den Sequenzer. Anschließend gibt sie einen Watchdog-Timer Fehler-Interrupt an die CPU aus.

Diese Sicherheitsfunktion ermöglicht einen Ausgang aus einer Situation, in der der A/D-Wandler oder die PTG-Peripherieschaltung ihren Betrieb eingestellt haben. Anschließend kann man diese Peripherieschaltungen innerhalb der Dauer des Watchdog-Timer-Fehler-Interrupts erneut initialisieren und starten.

Der PTG macht die Anwendung vom CPU-Kern unabhängig, indem er eigenständig die A/D-Wandlerkanäle umschaltet und Peripherieschaltungen überwacht. So lässt sich die CPU für andere Aufgaben in der Anwendung nutzen.

Der PTG übernimmt eigenständig sämtliche Interaktionen innerhalb einer Peripherieschaltung. Dadurch lässt sich die Software-Komplexität verringern und die Modularität aufrecht erhalten. Der Watchdog-Timer in der PTG-Peripherieschaltung hilft bei der Wiederherstellung nach einem Totalausfall, und verbessert damit die Funktionssicherheit der Anwendung. 

Konstantfrequenz- Wellenform 

Die PTG-Peripherieschaltung lässt sich auch zur Erzeugung eines Konstantfrequenzsignals nutzen, das auch als Taktquelle dient. Der PTG triggert einen Komparator, der als Maskiereingangsauswahl arbeitet. Die Trigger-Pulsbreite des PTGs lässt sich variieren und der PTG verfügt über einen eigenen Timer. Der Peripherie-Trigger kann außerdem als Maskiereingangsauswahl für den Operationsverstärker und Komparator arbeiten (Bild 3). 

Mit dieser Funktion lässt sich ein PTG-Ausgangssignal über eine Komparator-Peripherieschaltung ausgeben. Der Komparator wird so konfiguriert, dass der invertierende Eingang mit Masse und der nichtinvertierende Eingang mit einer internen Referenzspannung verbunden ist.

Der Triggerpuls entsteht direkt als Komparator-Ausgangssignal. Solange der PTG kontinuierlich Triggersignale erzeugt, liefert der Komparator eine Konstantfrequenz-Wellenform. Die Pulsbreite der Wellenform entspricht der Zyklusdauer des PTG-Taktsignals.

Die On- und Off-Zeiten lassen sich durch den PTG-Timer sowie die Pulsbreiten-Bits steuern. Die Pulsbreite des Ausgangssignals bestimmt die Off-Zeit und der Timer definiert die On-Zeit der ausgegebenen Wellenform, die auch der Verzögerung zwischen den triggernden Komparator-Peripherieschaltungen entspricht. Je nach Ausgangs-Polarität des Komparator-Signals lassen sich die On- und Off-Zeiten entweder durch den Timer oder die Pulsbreiten-Bits steuern. Die Ausgangsfrequenz lässt sich ebenfalls über ein Register definieren, das als Frequenzteiler arbeitet.

Durch die Veränderung der Komparator-Ausgangspolarität lässt sich eine komplementäre Wellenform über vier Komparator-Peripherieschaltungen erzeugen. Die Breite des Pulses lässt sich mit Hilfe der Pulsbreiten-Bits modifizieren; diese verringern die Frequenz des Ausgangssignals. Auf diese Weise kann eine konstante Wellenform mit Hilfe des PTGs und der Komparator-Peripherieschaltungen erzeugt werden.

Zu den Vorteilen eines PTG-Einsatzes in dieser Anwendung zählt, dass das Ausgangssignal als konstante Taktquelle arbeiten kann und der PTG sich unabhängig vom CPU-Kern betreiben lässt. Mit zusätzlichen Komparator-Peripherieschaltungen kann man sogar eine komplementäre Wellenform generieren. Der PTG arbeitet selbst dann, wenn sich die CPU in Stromspar-Modi wie Idle und Sleep befindet. 

Fazit 


Mit der PTG-Peripherieschaltung in den dsPIC33 kann der Benutzer komplexe Anwendungs-Sequenzen mit erhöhter Flexibilität für Timing- bzw. Stromverbrauchs-kritische Anwendungen entwickeln. Der PTG erlaubt eine Interaktion zwischen verschiedenen Peripherieschaltungen ohne bzw. nur mit minimaler CPU-Beteiligung. Dies verbessert die Fähigkeiten bestehender Peripherieschaltungen und erweitert den Bereich dessen, was mit beliebigen Peripherieschaltungen möglich ist. 

Der Einsatz einer PTG-Peripherieschaltung ermöglicht schnellere Reaktionszeiten und eine geringere Belastung durch Software. Die Peripherieschaltung bietet darüber hinaus integrierte Funktionen wie einen dedizierten Watchdog-Timer, mit denen sich die Funktionssicherheit verbessern lässt. (fr)

Referenz 

Applications of the Peripheral Trigger Generator (PTG): http://www.microchip.com/downloads/cn/AppNotes/cn586398.pdf