Mikrocontroller-Peripherie

Unabhängig vom Core

25. Mai 2016, 12:59 Uhr | Von Lucio Di Jasio
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 2

Der Signal Measurement Timer

Vereinfachtes Blockdiagramm eines Signal Measurement Timer
Bild 2. Vereinfachtes Blockdiagramm eines Signal Measurement Timer.
© Microchip

Als erstes Beispiel einer Core-unabhängigen Peripherieschaltung soll hier ein Signal Measurement Timer oder SMT vorgestellt werden. Diese Schaltung besteht aus drei Elementen: einem rücksetzbaren Zähler, einem Paar von doppelt gepufferten Erfassungsregistern und einer konfigurierbaren Hardware-Zustandsmaschine (Bild 2). Dieses neue Peripheriemodul lässt sich in vielen unterschiedlichen Konfigurationen einsetzen; im aktuellen Beispiel soll es auf einfachstem Wege verwendet werden und ähnelt damit am ehesten der weiter oben beschriebenen Signal­erfassungs-Methode. Der rücksetzbare Zähler ist mit einer Referenz-Taktquelle verbunden, deren Frequenz fr weiter unten bestimmt wird. Vor allem aber ist diese nun vollkommen unabhängig vom MCU-Takt.

Die zwei Signalerfassungsregister werden von der SMT-Zustandsmaschine gesteuert; diese Zustandsmaschine führt die folgende, einfache Sequenz autonom und ohne Beteiligung der MCU aus:

  • Beim Auftreten einer steigenden Flanke im Eingangssignal wird der Zähler zurückgesetzt und neu gestartet.
  • Bei der nächsten fallenden Flanke des Eingangssignals erfolgt die erste Signalerfassung (Ton).
  • Bei der darauffolgenden ansteigenden Flanke erfolgt die zweite Signalerfassung (T) und ein Interrupt oder Flag zur Aktivierung des Mikrocontrollers wird gesetzt.

Die Sequenz beginnt dann wieder am Anfang mit einem Zähler-Neustart.

Wie oben beschrieben ist eine ganze Pulsperiode abgelaufen, bevor der erste Interrupt oder das erste Flag generiert oder gesetzt wird. Da die Signalerfassungsregister doppelt gepuffert sind, bleibt der MCU die gesamte nächste Signalperiode zum Auslesen der zwei Werte und zur Berechnung des jeweiligen Ausgangswertes bzw. zur Bestimmung der nächsten Aktion. Die Bedingung zur Ermittlung des MCU-Taktes ist damit wesentlich weniger anspruchsvoll und lautet:

fcy ≥ P / Tmin

Dabei bezeichnet P die Anzahl der Taktzyklen, die zum Auslesen der erfassten Werte und zur Berechnung irgendeiner Ausgangsaktion oder eines Ausgangswertes nötig sind. Nimmt man P = 20 an, so ergibt sich fcy ≥ 200 kHz oder eine Verringerung um ca. den Faktor 100 gegenüber früheren, herkömmlichen Methoden. Dies ist nicht nur eine wesentlich niedrigere Frequenz als in irgendeinem der oben beschriebenen Beispiele; es belegt auch, dass die CPU-Frequenz nun unabhängig von der gewünschten Auflösung (R) der Messung ist.

In der Praxis nutzen aktuelle Implementierungen der SMT-Peripherieschaltung einen 24-bit-Zähler; die Signalerfassungsregister haben die gleiche Breite. Dies sorgt für einen großen Dynamikbereich für das Eingangssignal und erlaubt eine optimale Auswahl der Referenz-Taktquelle auf der Basis der benötigten Auflösung (R), die jedoch unabhängig vom CPU-Takt ist. Wie in früheren Abschätzungen ergibt sich damit:

fr ≥ 2R / Tmin oder fr ≥ 160 kHz bei R = 4

Damit lässt sich die CPU in jeder Signalperiode in den Leerlauf (bei gemeinsamer Nutzung von Referenztakt und MCU-Takt) oder in den Sleep-/Standby-Modus setzen und muss nur am Ende einer Messperiode aufgeweckt werden.

Daneben lässt sich auch ein Averaging-Modus nutzen, um die SMT-Zustandsmaschine anzuweisen, weiterhin Perioden- und Taktverhältnis-Werte über ein gegebenes Fenster zu erfassen und am jeweiligen Ende einen einzigen Interrupt auszugeben. Dies senkt den Strombedarf der Anwendung weiter, wenn das Ausgangssignal nicht nach jeder Signalperiode aktualisiert werden muss. In diesem Zusammenhang bietet ein automatisches Averaging-Filter Vorteile für die Stabilität einer Anwendung.

Nicht vergessen sollte man außerdem den einfacheren Aufbau der benötigten Software: Die Einsparung von Interrupts und Zustandsmaschine ist ein weiterer Pluspunkt neben der verständlicheren Software und bietet Potenzial für Kostensenkungen. Weitere Beispiele von Techniken zur Ausführung ähnlicher Messungen mit traditionellen Universal-Mikrocontrollern und verschiedenen Peripherieschaltungen sowie mit Hilfe von C- und Assembler-Programmcode finden sich im umfassenden Applikationsbericht [4].

Keine Angst vor Spezialisierung

Seit Jahren konzentrierte sich die Mikro­controller-Branche auf einen kleinen Satz von Peripherieschaltungen zur Abdeckung der häufigsten Anforderungen eines jeden Embedded-Steuerungsdesigns: Kommunikations-Schnittstellen (UART, SPI, I2C), Timing (Signalerfassung, Vergleich), Motorsteuerung und Analogschnittstellen. Zugleich aber zögerte man, über dieses grundlegende Funktionsangebot hinauszugehen: Man hatte Angst vor Spezialisierung.

Spezialisierung bei Peripherieschaltungen gilt als riskant, da ein Peripherieelement schnell zu speziell für eine Anwendung werden kann. Damit würde der Prozessor, in den die Schaltung integriert ist, zu teuer und/oder zu stark an ein vertikales Anwendungssegment oder einen Markt gebunden.

Wirkliche Core-unabhängige Peripherieschaltungen vermeiden dieses Risiko, indem sie klein sind. Dank ihrer Fähigkeit, sich ähnlich wie Lego-Bausteine nahtlos und direkt miteinander verknüpfen zu lassen, bieten sie unendlich viele mögliche Lösungen, ohne jemals für sich gesehen auch nur einen Cent mehr zu kosten. Dieses Konzept lässt sich dank eines sehr kleinen Pools konfigurierbarer Logik-Blöcke (CLCs) weiter vereinfachen. Diese Blöcke ähneln den Macro-Blöcken in FPGAs; sie bieten kombinatorische Funktionen zur flexiblen Anpassung von Ein- und Ausgängen für die meisten anderen Baustein-Peripherieschaltungen.

Besonders interessant wird dieses Konzept, weil sich damit durch die Kombination Core-unabhängiger und herkömmlicher Peripherieschaltungen neue Peripherieschaltungen mit völlig neuen Funktionen aufbauen lassen. Diese Funktionen können sehr spezifisch auf eine Anwendung oder ein Marktsegment ausgelegt sein und dabei eine ansonsten preisgünstige Familie von Universal-Mikrocontroller nutzen. Noch interessanter ist, dass sich alle Peripherieverbindungen während der Programmausführung über spezielle Funktionsregister (RAM) konfigurieren lassen. Die Funktion der neuen Peripheriemodule lässt sich also während der Ausführung der Anwendung verändern und ermöglicht einen dynamischen Übergang zwischen verschiedenen Betriebsarten.


  1. Unabhängig vom Core
  2. Die Analyse auf drei Basisfälle beschränkt
  3. Der Signal Measurement Timer
  4. Programmierbarer Logik: ­trügerische Versprechen

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu Microchip Technology GmbH

Weitere Artikel zu Mikrocontroller

Weitere Artikel zu Mikroprozessoren