Bild 1: Schnell und ernergiesparsam sind AVR-Mikrocontroller durch ihre autonome Peripherie.

Bild 1: Schnell und ernergiesparsam sind AVR-Mikrocontroller durch ihre autonome Peripherie. Microchip

Die Kombination von Mikrocontroller und prozessorunabhängigen intelligenten Peripheriebaugruppen (CIPs), die als autonomes Netzwerk losgelöst von der CPU untereinander kommunizieren und selbstständig Aufgaben übernehmen, bieten vielfältige Vorteile.

Weil die peripherie-interne Kommunikation ohne die CPU abläuft, kann diese im Sleep-Modus verbleiben oder wird in ihrem Programmfluss nicht unterbrochen. Damit verringert sich der Stromverbrauch der Anwendung, denn die CPU verursacht im Mikrocontroller den höchsten Stromverbrauch.

Eckdaten

Eine autonome und vernetzte Schaltungsperipherie entlastet den Mikrocontroller, beschleunigt den Programmablauf, spart Energie und reduziert den Programmier- wie auch Entwicklungsaufwand von embedded Systemen. Microchip erläutert in diesem Beitrag die Vorteile und Anwendungen der intelligenten Umgebung für die AVR-Mikrocontroller-Familie, die es durch den Einsatz von CIPs einer Anwendung erlaubt, in Echtzeit mit geringem Software-Overhead zu reagieren.

Prozessorunabhängige Peripherie verursacht keine Interrupts und ermöglicht eine wesentlich schnellere Kommunikation. Für gewöhnlich benötigt ein Interrupt drei Taktzyklen plus zwei Taktzyklen für den relativen Sprung und könnte je nach Anwendung mehrere Zyklen für den Kontextwechsel erfordern, um die Daten im RAM zwischenzuspeichern. Durch CIPs erfolgt der Programmablauf in der CPU ohne Unterbrechung und wird deutlich beschleunigt.

Der Einsatz von CIPs kann auch eine schnellere Markteinführung bedeuten. Entwickler müssen weniger Software schreiben, da die Hardware die Aufgaben selbstständig ausführen kann. Folglich verringern sich das Risiko von Software-Fehlern wie auch der Aufwand einer Software-Validierung.

Prozessorunabhängige Peripherie einsetzen

In Mikrocontrollern der Familie AVR sind alle Peripheriebausteine über das Event-System verbunden. Darin verbindet ein Multiplexer den Event-Generator und den Event-User. Asynchrone Events (Ereignisse) benötigen weniger als einen Taktzyklus, synchrone benötigen zwei Taktzyklen.

An das Event-System lässt sich umfangreiche Peripherie anschließen, die damit prozessorunabhängig wird. Zu den Komponenten zählen Timer, Echtzeitzähler (RTC), Periodische Interrupt Timer (PIT), kundenspezifisch konfigurierbare Logik (CCL), Analog-Komparator (AC), A/D-Wandler (ADC), universelle synchrone/asynchrone Receiver/Transmitter (USART) und universelle Ein-/Ausgänge (GPIOs).

CIPs muss einmal konfiguriert werden, bevor sie zu Einsatz kommen kann. Beim Start initialisiert die CPU das Event-System und die entsprechenden Peripheriebaugruppen.

Bild 2:  Alternativ zur Soft-Lösung in der CPU kann eine Signalentprellung per Logik (CCL) in der Peripherie erfolgen.

Bild 2: Alternativ zur Soft-Lösung in der CPU kann eine Signalentprellung per Logik (CCL) in der Peripherie erfolgen. Microchip

Signale entprellen oder verzögern

Die Signalentprellung einer mechanischen Eingabetaste per Software ist für ein AVR-MCUs eine einfache Aufgabe und kann durch Verzögerungselemente und/oder Logik realisiert werden. Eine Tastenbetätigung lässt sich entweder durch Abfrage oder über einen Interrupt seitens des GPIO-Controllers ermitteln. Beides jedoch kostet Zeit und benötigt CPU-Ressourcen.

Mit CIPs hingegen erfolgt eine Signalentprellung ohne zusätzlichen CPU-Overhead. Alles was benötigt wird, ist die kundenspezifisch konfigurierbare Logik (CCL). Der GPIO, an dem die Taste angeschlossen ist, ist als asynchroner Event-Generator konfiguriert. Die Logik ist der Event-User. Das Signal läuft ohne Verzögerung vom GPIO-Pin durch ein CCL-Filter, bestehend aus Wahrheitstabelle und Verzögerungsglied (Bild 2). Das CCL-Filter eliminiert Störungen aus dem Eingangssignal und ermöglicht eine variable Laufzeitverzögerung von zwei bis fünf Taktzyklen (Peripherie-Takt) für das Ausgangssignal. Bei Verwendung eines langsamen Taktes von 32 kHz ergibt sich eine Verzögerung von 1,5 ms. Die Verzögerungszeit lässt sich mit einem anderen Takt oder wie nachfolgend mit einem Timer verlängern.

Eine sehr flexible Signallaufzeitverzögerung ist per Timer/Counter B (TCB) im Single-Shot-Modus realisierbar. Ein Event-Signal startet den Zähler, bis dieser seinen programmierten Maximalwert erreicht hat und stoppt. Die angekoppelte CCL steuert dann das Signal.

Bild 3a: Verschaltung von Logigelementen zur Erzeugung einer Totzeit. Microchip

Bild 3: Verschaltung von Logikelementen zur Erzeugung einer Totzeit. Microchip

Totzeiten erzeugen

Arbeiten Leistungshalbleiter wie Bipolar-Transistoren, FETs oder IGBTs als serielle Schalter zwischen Phase und Masse wie beispielsweise in einer H-Brückenschaltung zu Motorsteuerung, verhindert eine Totzeit ein gleichzeitiges Aktivieren und damit einen Kurzschluss zwischen dem High-side- und Low-side-Schalter. Je nach Anwendung ist eine Totzeit entweder zwischen Kommutierungen oder zwischen den PWM-Impulsen (Pulsweitenmodulation) erforderlich.

Totzeit wird zwischen PWM-Impulsen bei sinusförmiger Ansteuerung und zwischen Kommutierungen in 1-poligen bürstenlosen Gleichstrommotoren (BLDC) benötigt. Sie lässt sich per Timer-TCD (Time Code Display) erzeugen.

Bild 4: Die Totzeit TCB0 stellt eine überlappungsfreie Ansteuerung der Leistungsschalter in der Motorendstufe sicher.

Bild 4: Die Totzeit TCB0 stellt eine überlappungsfreie Ansteuerung der Leistungsschalter in der Motorendstufe sicher. Microchip

Um eine Totzeit zwischen Kommutierungen zu erreichen, sind zwei Timertypen erforderlich. Einer wird über die kundenspezifisch konfigurierbare Logik (CCL) gebildet, der andere in Verbindung mit einem Analog-Komparator (AC).

Bild 3 zeigt die Verschaltung der Logik. Ein Timer TCA erzeugt das Basis-PWM-Signal für die Motorsteuerung. Der Komparator ACOUT ist extern mit dem Hallsensor des Motors verbunden und intern über das Event-System mit dem Timer TCB. Dieser erzeugt das eigentliche Totzeitsignal. Die CCL verknüpft die drei Signale miteinander. Die Eingangssignale lassen sich direkt in der CCL-Konfiguration auswählen und es gibt fest verdrahtete Verbindungen zwischen den einzelnen Funktionsmodulen. Die CCL erzeugt dann zwei PWMs (Bild 4), die die Leistungsschalter in der Motorendstufe überlappungsfrei ansteuern. Der Motor läuft ohne CPU-Beteiligung. Weitere Details hierzu finden Sie in der AVR-Applikationsschrift AVR42778.

Automatische PWM-Abschaltung

Viele Anwendungen müssen den Stromverbrauch überwachen, sodass ein Höchstwert nicht überschritten wird. Hier übernimmt diese ein Analog-Komparator AC, welcher die Spannung über ein Shunt-Register erfasst. Wird ein zuvor festgelegter Schwellenwert überschritten, soll das PWM-Signal sofort stoppen. Die folgenden zwei Beispiele verwenden prozessorunabhängige Peripherie. Das PWM-Ausgangssignal wird ohne Mitwirkung der CPU gestoppt, sobald ein Überstrom erkannt wird.

Tabelle 1: Im Falle eines Überstromes verriegelt der Komparator AC die PWM-Signalerzeugung von TCA0.

Tabelle 1: Im Falle eines Überstromes verriegelt der Komparator AC die PWM-Signalerzeugung von TCA0. Microchip

Im Beispiel einer LED-Beleuchtung sind zur Überwachung zwei Peripherieelemente TCA und CCL erforderlich. Der Timer/Counter A0 erzeugt das PWM-Grundsignal für die LED. Der Komparator AC erfasst den Überstrom, und die CCL kombiniert verknüpft beide Signale, sodass bei einem erkannten Überstrom die PWM automatisch gestoppt wird. Der Komparator AC und der Timer/Counter A0 sind über das Event-System mit der CCL verbunden. Das AC-Ausgangssignal und die PWM sind in der Wahrheitstabelle der CCL konfiguriert (Tabelle 1). Das PWM-Signal wird weitergeleitet, wenn das Event-Signal seitens des AC gleich Null ist. Wird ein Überstrom erkannt, ist das AC-Event-Signal Eins und der Ausgang Null, solange ein Überstrom vorliegt.

In einem zweiten Beispiel wird ein BLDC-Motor über den TCD-Timer angesteuert, der die beiden Kanäle erzeugt sowie zwei komplementäre Kanäle für PWM-Signale, um die vier MOSFETs der H-Brücke anzusteuern. Der AC erkennt den Überstrom im Motor über einen Shunt zwischen Motor und Masse (GND). Der Komparator AC ist über das Event-System mit dem Timer/Counter D0 (TCD) verbunden. Zu dessen Funktionen zählt auch die Fehlerbehandlung. Wird der Schwellenwert des AC überschritten (Überstrom erkannt), wird ein Ereignis an den TCD ausgegeben und die PWMs werden automatisch gestoppt.

Bild 5: Die reine Laufzeitmessung mittels Ultraschall erfolgt ohne CPU-Eingriff autark in der Peripherie.

Bild 5: Die reine Laufzeitmessung mittels Ultraschall erfolgt ohne CPU-Eingriff autark in der Peripherie. Microchip

Laufzeitmessung

Die Laufzeitmessung eines Signals (time of flight) kommt bei Abstands- oder Wegmessungen zum Einsatz. Die Messungen beginnen, wenn das Signal den Transceiver verlässt und stoppen, wenn es vom Empfänger erkannt wird. Mit bekannter Ausbreitungsgeschwindigkeit des Signals lässt sich dann der Abstand berechnen. Im folgenden Beispiel soll mithilfe von Ultraschallsignalen ein Abstand ermittelt werden. Mit den Peripherieelementen TCA0, TCB0, TCS0, AC und 2 × CCL lässt sich die Laufzeit ohne CPU-Einsatz berechnen.

Bild 5 zeigt die Look-up-Tabelle 1 (LUT-1) und das erzeugte Sendesignal. TCA Out erzeugt das PWM-Signal und TCD Out B ist die Sendemaske. Die invertierte Sendemaske und die PWM werden logisch mit UND verknüpft und erzeugen das Sendesignal, das durch die LUT1-Wahrheitstabelle angezeigt wird.

Das reflektierte Signal durchläuft Look-up-Tabelle 0 (LUT-0). AC Out zeigt die Aktivität auf der Empfangsleitung an, und TCD Out A ist die Empfangsmaske. Die invertierte Empfangsmaske und die Empfangsleitung sind logisch mit UND verknüpft, um das reflektierte Signal zu erzeugen, das durch die LUT0-Wahrheitstabelle angezeigt wird.

Das SR-Latch wird mit dem ersten gesendeten Signal zurückgesetzt und startet den Zähler im TCD. Mit dem Signal seitens des reflektierten Signals (SR-Latch gesetzt) wird der TCD-Zähler gestoppt. Die Laufzeitmessung wird nun im Zählerwert des TCD ohne Einsatz der CPU gespeichert. Die CPU wird nur für die Distanzberechnung benötigt, wobei die Laufzeitmessung mit der Geschwindigkeit des Signals multipliziert wird.

Echtzeit-Performance

Die neue MCU-Reihe AT-Tiny1617/1616/1614/817/816/814/417 von Microchip ergänzt die Tiny-AVR-Serie um neue prozessorunabhängige Peripherie (CIPs). Mit diesen CIPs kann eine Anwendung in Echtzeit reagieren – mit weniger Software-Overhead und geringerem Stromverbrauch als ohne CIPs. Die aufgeführten Beispiele zeigen, dass sich CIPs einfach einrichten lassen, was die Echtzeit-Performance verbessert und weniger Strom verbraucht wird als mit softwarebasierten Lösungen. Auch mit wesentlich leistungsstärkeren MCUs wird diese Echtzeit-Performance nicht immer erreicht, und der Stromverbrauch ist um ein Vielfaches höher.