In diesem Artikel erfahren Sie, wie einige dieser Peripheriegeräte funktionieren und wie sie kombiniert werden können, um viele der grundlegenden Aufgaben zu automatisieren, die in typischen Mikrocontroller-Anwendungen anfallen.
Eines der interessantesten, aber am wenigsten verstandenen Peripheriegeräte eines typischen RA-Mikrocontrollers ist der DOC (Data Operations Circuit). Dieser kann in Echtzeitanwendungen erhebliche Leistungsvorteile bieten, indem er einfache Aufgaben von der CPU auslagert, die Reaktionszeit verbessert und potenziell den Stromverbrauch senkt. Dies gilt insbesondere, wenn der DOC zusammen mit anderen, fortschrittlicheren Funktionen der RA-Familie verwendet wird.

Das Herzstück des DOC (Data Operation Circuit) ist eine einfache ALU (Arithmetisch-Logische Einheit). Diese einfache ALU verfügt über drei grundlegende Funktionen: Sie kann 16-Bit-Daten vergleichen, addieren oder subtrahieren und anschließend basierend auf einer festgelegten Bedingung einen Interrupt auslösen. Alle diese Aufgaben können ohne CPU-Eingriff ausgeführt werden, indem die zu verarbeitenden Daten automatisch über einen DMA-Controller (Data Transfer Controller) an den DOC übertragen werden, den wir später erläutern werden. Siehe Abbildung 1. Abbildung
1: Vereinfachtes Blockdiagramm des Datenoperationsschaltkreises (DOC).
Im 16-Bit-Vergleichsmodus wird ein initialer Referenzwert in den DOC geladen. Anschließend werden die zu vergleichenden 16-Bit-Daten geladen und hardwareseitig mit dem Referenzwert verglichen. Der DOC kann so programmiert werden, dass er bei Übereinstimmung (wahr oder falsch) einen Interrupt auslöst.
Im 16-Bit-Summationsmodus wird ebenfalls ein initialer 16-Bit-Wert in den DOC geladen. Anschließend werden weitere 16-Bit-Werte (einer oder mehrere) in den DOC geladen und zum ursprünglichen Wert addiert. Sobald alle benötigten Werte geladen sind, prüft das System auf Überlauf und löst gegebenenfalls eine Interruptanforderung aus. Dieser einfache Mechanismus ermöglicht es, festzustellen, ob ein bestimmter Schwellenwert überschritten wurde – ideal beispielsweise für die automatische Pegelerkennung mittels ADC.

Im 16-Bit-Subtraktionsmodus wird zunächst ein 16-Bit-Wert in den DOC geladen. Anschließend werden weitere 16-Bit-Werte (einer oder mehrere) in den DOC geladen und vom ursprünglichen Wert subtrahiert. Sobald alle benötigten Werte geladen sind, wird eine Überlaufprüfung durchgeführt und gegebenenfalls ein Interrupt ausgelöst. Dieser einfache Mechanismus ermöglicht es, festzustellen, ob ein bestimmter Schwellenwert überschritten wurde.
Die wahre Stärke des Datenverarbeitungsschaltkreises liegt jedoch darin, dass diese drei einfachen Funktionen ohne CPU-Eingriff direkte Entscheidungen über die Systemfunktion ermöglichen. So können wir einfache Entscheidungen direkt in der Mikrocontroller-Hardware treffen und der Systemhardware erlauben, die Verarbeitung der erzeugten Daten anhand eines einfachen Vergleichs zu bestimmen.
In Kombination mit Peripheriegeräten wie dem DMAC (Direct Memory Access Controller) oder dem DTC (Data Transfer Controller), die den Datentransfer zum DOC automatisieren, lässt sich ein System realisieren, das datengesteuerte Entscheidungen aus nahezu jeder Quelle treffen kann. Dies kann ohne CPU-Eingriff erfolgen, selbst wenn die CPU im Leerlauf ist. Dadurch wird eine deutlich schnellere Reaktion auf Datenänderungen ermöglicht, anstatt auf eine CPU-Unterbrechung warten zu müssen.
Es gibt zahlreiche Anwendungsfälle für den DOC (Digital Object Controller). Beispielsweise könnte er in Verbindung mit einer UART-Schnittstelle eingehende Adressen automatisch erkennen und die CPU benachrichtigen, sobald diese gültig sind. In einem Pegelüberwachungssystem könnte der DOC zusammen mit dem Analog-Digital-Wandler (ADC) automatisch erkennen, wenn ein programmierter Schwellenwert überschritten wird. Der Einsatz des DOC für diese Funktionen bietet viele Vorteile. So könnte die CPU beispielsweise anderen, dringenden Aufgaben gewidmet sein, und der DOC würde nur dann per Interrupt eine Benachrichtigung auslösen, wenn eine bestimmte Bedingung erfüllt ist. Die CPU könnte in den Energiesparmodus versetzt werden und erst wieder durch einen Interrupt bei einer gültigen Alarmbedingung, die vom DOC-Vergleich erkannt wurde, aktiviert werden.

Die Datenverarbeitungsschaltung (DOC) ist in allen Mitgliedern der RA-Familie zu finden, und wir haben die Funktionen der DOC kontinuierlich verbessert. Die neuesten Versionen bieten zusätzliche Funktionen, die noch komplexere Datenentscheidungen automatisieren.
Betrachten wir nun den bereits erwähnten Datentransfercontroller (DTC). Dieses Peripheriegerät bietet einen einfachen, aber äußerst flexiblen Mechanismus für die Datenübertragung zwischen Peripheriegerät und Speicher. Ein DTC ist in allen Mikrocontrollern der RA-Familie integriert.
Der DTC verwendet einen einfachen programmierbaren Controller für die Datenübertragung zwischen Speicher und Peripheriegeräten und speichert seine Konfigurationsinformationen in einer Tabelle im SRAM. Dies ist deutlich kompakter als die Verwendung eines großen dedizierten Hardwareblocks, wie er typischerweise vom Direct Memory Access Controller (DMAC) eingesetzt wird. Diese Programmierbarkeit bietet eine wesentlich höhere Flexibilität als ein DMAC. Durch die Speicherung der die Übertragung beschreibenden Konfigurationstabelle im SRAM sind nahezu unbegrenzt viele Kanäle möglich, die lediglich durch die verfügbare SRAM-Kapazität begrenzt werden.
In der RA-Familie kann ein Ereignis (oder Interrupt), ausgelöst durch die CPU, ein Peripheriegerät oder einen externen Pin, mehrere Aktionen auf dem Gerät auslösen. Abbildung 2 zeigt ein vereinfachtes Diagramm des Interrupt-Controllers. Hier ist ersichtlich, dass ein Ereignis mehrere Aktionen auslösen kann: einen herkömmlichen Interrupt, der die Anwendungsadresse ändert; eine DMAC-Übertragung; oder eine DTC-Übertragung. Es ist auch möglich, mehrere dieser Aktionen durch ein einzelnes Ereignis auszulösen.
RA
-Interrupt-Controllers
. Der Hauptvorteil dieser Programmierbarkeit besteht darin, dass alle für die Übertragung notwendigen Informationen in einem kleinen SRAM-Block auf dem Chip gespeichert sind. Dies bedeutet, dass der DTC-Controller nicht nur einen oder zwei Datenübertragungskanäle, sondern bei Bedarf auch 10, 20 oder sogar mehr erstellen kann. Der Hauptnachteil dieses Mechanismus ist, dass jede Übertragung mehrere Zyklen zum Lesen der im SRAM gespeicherten Konfigurationsdaten benötigt. Daher sind DTC-Übertragungen typischerweise langsamer als DMA-Übertragungen.
DTC kann bis zu 256 Mal ein oder mehrere Bytes zwischen Peripheriegerät und Speicher oder zwischen Speicher und Peripheriegerät übertragen. Quell- und Zieladresse können dabei identisch sein oder unabhängig voneinander inkrementiert bzw. dekrementiert werden, wodurch eine Pufferstruktur im Speicher entsteht.
Nach Abschluss der Übertragung kann DTC einen Interrupt auslösen, um der CPU zu signalisieren, dass die Daten bereit sind, oder eine zweite DTC-Übertragung starten. Dadurch lassen sich mehrere Übertragungen verketten – ein Vorgang, der, etwas ironisch, als Verkettungsmodus bezeichnet wird. Dieser Modus ist besonders nützlich, wenn mehrere Datenelemente zwischen Peripheriegeräten und Speicher übertragen werden müssen. In Verbindung mit dem zuvor beschriebenen DOC ist der Verkettungsmodus besonders interessant, da er es ermöglicht, mehrere Übertragungen von verschiedenen Speicherorten und/oder Peripheriegeräten durch eine einzige Interruptquelle auszulösen. Beispielsweise können wir mit einem Interrupt, wie dem ADC-Interrupt, die Vergleichsdaten in den DOC laden und durch eine zweite, verkettete Übertragung die ADC-Daten zum Vergleich in den DOC laden – alles vollautomatisch, ohne Eingriff der CPU. Die Fähigkeit eines Interrupts, komplexe Sequenzen verschiedener Datenübertragungen zu generieren, ist äußerst leistungsstark, nicht nur in Verbindung mit dem DOC. Abbildung 3 veranschaulicht einige der verschiedenen Betriebsmodi des DTC.
Abbildung 3: Beispiele für Betriebsmodi des Datentransfer-Controllers
Der DTC kann auch in den Wiederholungsmodus versetzt werden, in dem er die Datenübertragung mehrmals wiederholt. Für die meisten Anwendungen bietet die Flexibilität des DTC ein optimales Verhältnis zwischen Geschwindigkeit, Flexibilität und Kosten. Automatisierte Datenübertragungen zwischen beliebigen Peripheriegeräten und dem Speicher sind praktisch unbegrenzt möglich.
Der Datentransfer-Controller (DTC) bietet eine ideale Methode zur Automatisierung der Datenübertragung zwischen Peripheriegeräten und dem Speicher ohne CPU-Eingriff. Die Verwendung des DTC im Daisy-Chain-Modus bei der Datenübertragung zum DOC ermöglicht einfaches Testen großer Datenmengen ohne CPU-Eingriff und versetzt den Chip somit in die Lage, selbstständig Entscheidungen zu treffen.
Sie sehen also, wie viel flexibler der DTC im Vergleich zum herkömmlichen DMAC ist. Für höchste Datenübertragungsgeschwindigkeiten ist DMAC nach wie vor die geeignetste Methode, und nahezu alle RA-Mikrocontroller verfügen über mehrere DMAC-Kanäle. Hinsichtlich Flexibilität und Datenmanagement ist DTC jedoch deutlich überlegen, da es die Erstellung mehrerer Kanäle ermöglicht, deren Anzahl lediglich durch den verfügbaren SRAM begrenzt ist.

Betrachten wir nun, wie DTC und DOC mit dem ADC kombiniert werden können, um ein intelligentes analoges Abtastsystem zu realisieren, das vollständig ohne CPU-Eingriff auskommt. Dadurch können die CPU-Auslastung reduziert und sogar Energie gespart werden, indem die CPU während des Systembetriebs abgeschaltet wird. Das zu entwickelnde System ist ein einfacher Pegeldetektor mit mehreren Eingängen, der den Gruppen-Sweep-Modus des 12-Bit-ADC nutzt, um jedes der vier Eingangssignale nacheinander abzutasten. Mithilfe der Kombination aus DTC und DOC erkennt das System, ob ein programmierbarer Schwellenwert überschritten wird. Nur wenn dieser Wert überschritten wird, generiert das System eine Interruptanforderung und weckt die CPU.
Nach der initialen Systemeinrichtung wechselt die CPU in den Energiesparmodus und wird nur durch einen DOC-Interrupt geweckt, der die Überschreitung des Schwellenwerts signalisiert. Abbildung 4 zeigt ein vereinfachtes Schaltbild des Systems.

Abbildung 4: Vereinfachtes Systemlayout
I. Im Gruppen-Sweep-Modus tastet der ADC kontinuierlich jeden Eingang nacheinander ab und speichert das Ergebnis im SRAM. Sobald alle vier Eingänge abgetastet wurden, generiert der ADC eine DTC-Anforderung. Bei Verwendung des Kettenmodus initiiert diese Anfrage eine Kette von acht Übertragungen zwischen dem Speicher und dem DOC, wobei sowohl die vier ADC-Ergebnisse als auch ein entsprechender Schwellenwert aus dem On-Chip-SRAM kopiert werden, mit dem jedes ADC-Ergebnis erneut verglichen werden muss.

ADC-zu-DTC-Übertragungsanforderung…
DTC-Übertragung 1: Vergleich [0] mit DOC. Kette aktiviert, folgende Übertragung wird durchgeführt:
DTC-Übertragung 2: AN000 an DOC. Kette aktiviert, folgende Übertragung wird durchgeführt:
DTC-Übertragung 3: Vergleich [0] mit DOC. Kette aktiviert, folgende Übertragung wird durchgeführt:
DTC-Übertragung 4: AN001 an DOC. Kette aktiviert, folgende Übertragung wird durchgeführt:
DTC-Übertragung 5: Vergleich [0] mit DOC. Kette aktiviert, folgende Übertragung wird durchgeführt:
DTC-Übertragung 6: AN003 an DOC. Kette aktiviert, folgende Übertragung wird durchgeführt:
DTC-Übertragung 7: Vergleich [0] mit DOC. Kette aktiviert, folgende Übertragung wird durchgeführt:
DTC-Übertragung 8: AN005 an DOC. Kette deaktiviert, gestoppt.

In diesem Fall initialisieren wir den DOC, um jeden Wert zu vergleichen und einen Interrupt auszulösen, sobald einer der Schwellenwerte überschritten wird.
Nach der Initialisierung von ADC, DOC und DTC wird jeder ADC-Eingang kontinuierlich im Hintergrund überprüft, ohne dass die CPU eingreifen muss. Die CPU kann andere Aufgaben bearbeiten oder in den Schlafmodus wechseln und wird erst wieder aktiviert, wenn einer der Eingänge seinen entsprechenden Wert überschreitet.
Viele weitere Low-Level-Aufgaben lassen sich durch die Kombination von DOC und DTC auf ähnliche Weise automatisieren. Dies ist eine äußerst leistungsfähige Technik zur Automatisierung von Low-Level-Funktionen und spart Zeit und Entwicklungskosten bei der Entwicklung von Low-Level-Softwaretreibern. Zudem verbessert sie die Systemleistung durch die Automatisierung grundlegender Funktionen ohne CPU-Beteiligung.
Jedes Mitglied der RA-Mikrocontroller-Familie verfügt über intelligente Peripheriefunktionen wie den Datenoperatorschaltkreis (DOC) und den Datentransfercontroller (DTC) sowie viele weitere leistungsstarke Peripheriefunktionen, die auch zur Erstellung intelligenter Subsysteme genutzt werden können. Zusammen bieten DOC und DTC hochflexible und leistungsstarke Lösungen zur Automatisierung von Low-Level-I/O-Funktionen in vielen verschiedenen Anwendungen. Die Automatisierung dieser grundlegenden Funktionen verbessert nicht nur die Reaktionszeit des Systems auf Echtzeitereignisse, sondern reduziert häufig auch die Komplexität und Größe der Systemsoftware. Dadurch werden die Zuverlässigkeit erhöht und die Kosten für Systemtests gesenkt.
Die RA-Mikrocontroller-Familie eignet sich für ein breites Spektrum an Kommunikations- und Steuerungsanwendungen, wie z. B. Motorsteuerung, intelligente Sensoren, Messtechnik, tragbare Geräte, stromsparende Modems und viele weitere industrielle und Konsumanwendungen. Sie ist mit verschiedenen Speicherkapazitäten und Gehäuseoptionen erhältlich. Weitere Informationen finden Sie unter www.renesas.com/ra.

Autor: Graeme Clark, Senior Product Marketing Specialist, Renesas Electronics