Schnell und kompakt: Signalcontroller für preissensitive Anwendungen

DSP im Mikrocontroller-Pelz

15. November 2006, 16:09 Uhr | Harald Kreidl
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 2

Sicherheit geht über alles

Systemsicherheit stellt in vielen Anwendungen eine Herausforderung für den Entwickler dar und ist oftmals mit Aufwand und damit einer Verteuerung des Systems verbunden. Deshalb hat man in den 56F801x-Controllern bereits entwurfsseitig Maßnahmen ergriffen, dem Entwickler durch Software-Vorkehrungen die Möglichkeit zu geben, das System sicherer zu machen. So können viele Konfigurationsregister während des Betriebs nur einmal beschrieben werden (write once), um ein versehentliches Beschreiben durch einen „Code-Runaway“ zu verhindern. Das betrifft Register, die besonders kritische Funktionen festlegen, wie zum Beispiel der Wert für die Totzeit-Generierung, Freigabe der Fehlereingänge, Polarität der PWM-Ausgänge und Betriebsarten der PWM. In einem System stellen diese Parameter Konstanten dar, die von den verwendeten Treiberbausteinen oder vom Hardware-Design abhängen. Sie müssen bzw. dürfen nicht verändert werden. Unzulässige Änderungen könnten ein kritisches Verhalten nach sich ziehen, das in einer Zerstörung der Endstufe gipfeln könnte.

Die Taktversorgung ist wie die Stromversorgung ein kritischer Teil in einem Mikrocontrollersystem, da eine Unterbrechung zum unweiger-lichen Systemstillstand führt. Wird der 56F801x mit dem internen RC-Oszillator (Relaxation Oscillator) betrieben, kann mit Hilfe der integrierten PLL ein Takt von maximal 32 MHz (und für Timer und PWM maximal 96 MHz) erzeugt werden. Die Grundfrequenz für den RC-Oszillator beträgt 8 MHz im Betrieb und 400 kHz im Standby-Modus, seine Stabilisierungszeit liegt bei 1 bis 3 µs. Die Einschwingzeit für die PLL beträgt weitere 0,1 bis 1 ms. Nach dieser Zeit „rastet“ die PLL ein und erzeugt einen stabilen Systemtakt von entweder 1, 2, 4, 8, 16 oder 32 MHz. Timer und PWM können mit der dreifachen Systemfrequenz, also 3, 6, 12, 24, 48 oder 96 MHz versorgt werden. Angezeigt wird das „Einrasten“ („Lock“) durch den „Lock“-Detektor, der bei einer Änderung des Lock-Zustandes einen Interrupt erzeugen kann. Die beiden ersten Derivate 56F8013 und 56F8014 unterstützen als Taktquelle nur den internen RC-Oszillator und einen externen digitalen Takt. Weitere Derivate, die dann auch ein CAN-Modul beinhalten, werden als Quelle auch einen Quarz und Keramikresonator unterstützen. Wird ein externer Oszillator verwendet (Quarz oder Keramikresonator), schützt eine „Loss-of-Clock“-Einheit den Signalcontroller bei einem Verlust der externen Taktquelle. Das kann passieren, wenn beispielsweise der Quarz bricht oder eine Lötstelle in der Oszillatorschaltung nicht mehr richtig leitet. In diesem Fehlerfall wird ein Interrupt erzeugt, und die CPU kann entweder das System in einen sicheren Zustand bringen oder auf den internen Oszillator umschalten. Das Weiterarbeiten der CPU bei einem Verlust der Taktquelle ist deswegen noch möglich, da die PLL auch ohne Referenztakt weiterarbeiten kann. Lediglich eine genaue Frequenzsynthese ist nicht mehr möglich, da ja der Referenztakt fehlt.

Ein so genannter „Power-Supervisor“ überwacht die Versorgungsspannung und hält den Digitalcontroller bei einer Spannung kleiner 1,8 V im Reset-Zustand. Ab dieser Spannung arbeitet die interne Logik zuverlässig und verhindert, dass die Ein- und Ausgänge zufällige Werte annehmen. Eine Fehlfunktion der Peripherie wäre die fatale Folge. Zwei Spannungsschwellwerte von 2,2 und 2,7 V lassen eine durch Software kontrollierte Systemabschaltung (shutdown) zu. Auch sporadische Spannungseinbrüche können detektiert werden und Brown-Out-Zustände lassen sich so vermeiden. Der Hardware-Designer spart sich einen externen Spannungsüberwachungsbaustein und kann so die Systemkosten reduzieren. Die Controller arbeiten bei einer Versorgungsspannung von 3,0 bis 3,6 V, die digitalen Ein- und Ausgänge sind aber 5-V-tolerant. Die Ausgänge unterstützen den Push-Pull- und den Open-Drain-Betrieb. Die Ausgangstreiberleistung beträgt wahlweise 4 oder 8 mA.

Ein obligatorischer Watchdog (COP), der Endlosschleifen oder Code-Runaways aufspüren kann, gehört in jeden Mikrocontroller. Der Watchdog der 56F801x-Controller verwendet den PLL-Takt und lässt sich auf unterschiedliche Zeitüberschreitungen (von 128 µs bis 8,4 s) einstellen. Der Watchdog erzeugt bei fehlendem Zurücksetzen einen Reset, der einen eigenen Vektor besitzt. Damit kann die Software einen COP-Reset anders behandeln als einen Systemstart.

„Fast-Interrupts“ verkürzen Reaktionszeiten

Integrierte oder externe Peripheriemodule erzeugen nach Eintreten eines Ereignisses ein Signal an die Zentraleinheit und konkurrieren damit um die Zuteilung der CPU. Ein Interrupt-Controller bestimmt mit Hilfe von Prioritäten (hier fünf Interrupt-Level), wer Zugriff auf die CPU bekommt. Hat der Interrupt-Controller festgelegt, welche Interrupt-Quelle an die CPU weitergegeben wird, muss die CPU ihre gegenwärtige Tätigkeit unterbrechen und die Interrupt-Service-Routine (ISR) durchführen. Damit sie nach deren Beendigung die vorangegangene Tätigkeit wieder sauber ausführen kann, muss sie alle Registerinhalte vor Eintritt in die ISR retten und nach Beendigung wiederherstellen. Außerdem müssen die Register in der ISR mit den relevanten Daten geladen werden. Damit für bestimmte Interrupt-Anforderungen diese Zeit erheblich verkürzt werden kann, unterstützen die Controller so genannte Fast-Interrupts, die für die Interrupt-Abarbeitung einen zusätzlichen Registersatz (Schattenregister) zur Verfügung haben. Die allgemeinen Register müssen nicht mehr gesichert werden, und Daten für die spezielle Interrupt-Anforderung können in den Schattenregistern belassen werden. Die Controller stellen für zwei frei zuweisbare Interrupt-Quellen den Fast-Interrupt zur Verfügung.


  1. DSP im Mikrocontroller-Pelz
  2. Gedächtnis des Controllers
  3. Sicherheit geht über alles

Jetzt kostenfreie Newsletter bestellen!