Verbesserte Interrupt-Bearbeitung im Microchip ATtiny817

Entdecken Sie die neuen Funktionen des ATtiny817, des neuesten Mikrocontrollers von Microchip, und finden Sie heraus, wie Sie diese umfangreiche Lösung für Ihre Anwendungen einsetzen können.

Interrupt-Bearbeitung im neuen ATtiny817

Verfasst von: Arild Rodland, Product Marketing für die MCU08-Abteilung bei Microchip Technology Inc.

Interrupt-Bearbeitung ist jetzt viel einfacher – mit den neuen AVR®-Mikrocontrollern (MCUs), und der ATtiny817 von Microchip ist das erste AVR-Gerät, das von diesen Änderungen profitiert.

Wer mit den verschiedenen AVR-Familien vertraut ist, sollte wissen, dass Interrupt-Bearbeitung für tinyAVR®- und megaAVR®-Geräte sehr einfach ist, denn alle Interrupts haben eine vordefinierte Priorität, bei der die kleinste Interrupt-Vektoradresse die höchste Priorität hat. Für die größere XMEGA®-MCU-Familie enthält das Interruptsystem einen programmierbaren Multilevel-Controller (PMIC), bei dem der Nutzer Interrupts drei Prioritätsstufen zuweisen kann, wodurch eine Anpassung der Prioritätswarteschlange möglich ist.

Der neue Interrupt-Controller am ATtiny817 ist eine Mischung aus diesen beiden Varianten. Sehen wir uns ihn also an und finden wir heraus, was neu ist.

Interrupt-Priorität

Die Standardeinstellungen am ATtiny817 werden mit einer Interrupt-Vektortabelle mit statischer Priorität eingerichtet, bei der die niedrigste Interrupt-Vektoradresse die höchste Priorität hat. Siehe Abbildung 1. Dies entspricht anderen tinyAVRs.

ABBILDUNG 1: INTERRUPT-PRIORITÄT MIT STATISCHEM PRIORITÄTSSCHEMA

Bei statischer Priorität können potentiell einige Probleme auftreten. Als Erstes können Sie bei vielen Interrupts mit hoher Priorität in eine Situation geraten, bei der Interrupts mit hoher Priorität dauernd Interrupts mit niedriger Priorität blockieren. Das Ergebnis ist, dass der Interrupt nicht zum Zug kommt. Das bedeutet, dass Sie nicht genug Zeit zur Bedienung aller Interrupts haben, und diejenigen mit der niedrigsten Priorität werden nie bedient. Um dieses Problem zu beheben, ermöglicht der ATtiny817 ein dynamisches Prioritätsschema (Round-Robin). Wenn Sie dieses Round-Robin-Schema aktivieren, erhält der zuletzt bediente Interrupt bei der nächsten Auslösung eines Interrupts die niedrigste Priorität. Siehe Abbildung 2.

ABBILDUNG 2: DYNAMISCHES ROUND-ROBIN-PRIORITÄTSSCHEMA

Zweistufiger Interrupt-Controller

Das Round-Robin-Prioritätsschema löst das Problem der Bedienung von Interrupts. Was lässt sich unternehmen, wenn Sie einem Peripheriegerät eine höhere Priorität geben möchten als in der Interrupt-Vektortabelle definiert?

Das Designteam hat zwar eine verantwortungsvolle, fest konfigurierte Priorität zwischen den Peripheriegeräten festgelegt. Wir verstehen allerdings auch, dass manche Nutzer immer die Möglichkeit brauchen, einem Interrupt eine höhere Priorität zu geben als durch die Standard-Priorität der Interrupts definiert.

Im ATtiny817 haben wir die Option, einen auswählbaren Interrupt-Vektor anzuheben, sodass seine Priorität höher ist als die aller anderen. Um diese Funktion zu nutzen, schreiben Sie die gewünschte Vektoradresse einfach in das Register LVL1VEC, und dieser Interrupt bekommt die höchste Priorität.

Compact Vector Table

Beim tinyAVR gibt es eine neue Funktion namens Compact Vector Table (CVT). Durch Nutzung dieser Funktion werden alle Interrupts auf drei Vektoren gekürzt: einen für nicht maskierbare Interrupts (für ATtiny817: CRC-Fehler-Interrupt), einen für alle Level0-Interrupts (für ATtiny817: alle Interrupts sind standardmäßig Level0) und einen für Level1-Interrupts (für ATtiny817: ein einzelner Interrupt kann eine höhere Priorität erhalten, indem seine Vektoradresse in das Register LVL1VEG geschrieben wird).

Diese Funktion kann nützlich sein, wenn Sie nur wenige Interrupts nutzen. Die Reduzierung der Vektortabelle auf nur drei Vektoren bedeutet, dass die Interrupt-Tabelle weniger Flash-Speicherorte belegt, wodurch dieser Platz für Benutzercode frei wird. Denken Sie allerdings daran, dass Sie bei Verwendung dieses Ansatzes zusätzlichen Code in die Interrupt-Bearbeitung aufnehmen müssen, um zu ermitteln, welcher Interrupt tatsächlich bedient werden will. Dadurch verlängert sich die Zeit, sowohl für das Schreiben von Code als auch für prüfende Tests, bis zur Fertigstellung Ihres Designs. Daher ist die kompakte Vektortabelle am nützlichsten, falls nur wenige Interrupts genutzt werden.

Erweiterte Funktion: Ist Round-Robin nicht aktiviert, ist das Register LVL0PRI weiterhin aktiv und definiert dennoch den Startpunkt für den Interrupt mit der niedrigsten Priorität. Also können Sie die Priorität bei Bedarf statisch in der Vektortabelle verschieben. Beispielsweise könnten Sie sie verschieben, um USART die höchste Priorität zu geben. Der Standardwert dieses Registers ist 0x00. Nach dem Zurücksetzen hat also wie erwartet der niedrigste Interrupt-Vektor die höchste Priorität.

Priorität der Vektortabelle verschieben

Zum Schluss dieses Artikels zeige ich Ihnen einen Trick bzw. eine Funktion, die nicht ausdrücklich im Datenblatt erwähnt wird. Bei der Nutzung der Round-Robin-Priorität gibt es ein Register namens LVL0PRI, das die Adresse des zuletzt ausgeführten Interrupts enthält. Dies wird der Interrupt mit der niedrigsten Priorität für die Auswahl des als Nächstes auszuführenden Interrupts. Wenn wir diesen Wert ändern, wirkt sich das direkt darauf aus, welche Interrupts die niedrigste und die höchste Priorität haben.

Wie hier gezeigt bietet die neue ATtiny187-MCU leistungsstarke Funktionen zur Verwaltung von Interrupts, mit denen Designer die Priorität von Interrupts und die Antwortzeit an ihre jeweiligen Design-Anforderungen anpassen können. Jetzt stellt sich nur noch die Frage: Was werden Sie erstellen, das diese Fähigkeiten nutzt?

Ähnliches Produkt:

ATTINY817-XPRO

Microchip Technology Eingebettete Systementwicklungsboards und -kits Anzeigen

microchip technology logo

Neue Beiträge

Leider ergab Ihre Suche kein Ergebnis

Aktuelles über Elektronikkomponenten­

Wir haben unsere Datenschutzbestimmungen aktualisiert. Bitte nehmen Sie sich einen Moment Zeit, diese Änderungen zu überprüfen. Mit einem Klick auf "Ich stimme zu", stimmen Sie den Datenschutz- und Nutzungsbedingungen von Arrow Electronics zu.

Wir verwenden Cookies, um den Anwendernutzen zu vergrößern und unsere Webseite zu optimieren. Mehr über Cookies und wie man sie abschaltet finden Sie hier. Cookies und tracking Technologien können für Marketingzwecke verwendet werden.
Durch Klicken von „RICHTLINIEN AKZEPTIEREN“ stimmen Sie der Verwendung von Cookies auf Ihrem Endgerät und der Verwendung von tracking Technologien zu. Klicken Sie auf „MEHR INFORMATIONEN“ unten für mehr Informationen und Anleitungen wie man Cookies und tracking Technologien abschaltet. Das Akzeptieren von Cookies und tracking Technologien ist zwar freiwillig, das Blockieren kann aber eine korrekte Ausführung unserer Website verhindern, und bestimmte Werbung könnte für Sie weniger relevant sein.
Ihr Datenschutz ist uns wichtig. Lesen Sie mehr über unsere Datenschutzrichtlinien hier.