STM8 10-Bit Wandler ADC1


Die „Analoge“ Watchdog Funktion

Der ADC1 Block auf dem STM8 ermöglicht eine Überwachung der gemessenen Spannungen auf einen gemeinsamen, oberen und unteren Schwellwert. Dazu können über die ADC_HTRH / ADC_HTRL und ADC_LTRH / ADC_LTRL Register entsprechende Schwellen eingestellt werden. Diese Schwellen gelten für alle über die Register ADC_AWCRH und ADC_AWCRL zur Überwachung freigegebenen Messkanäle.

Tritt eine Über- bzw. Unterspannung in einem der freigegebenen Kanäle auf, so wird das AWD Bit im Register ADC_CSR gesetzt (Watchdog Event). Im gleichen Register befindet sich das AWDIE Bit, welches im gesetzten Zustand das AWD Signal als ADC-Interrupt (irq22) weiterleitet.

Die „Analog Watchdog“ Überwachung funktioniert nicht nur bei Einzelmessungen sondern auch in den „Continuous“ und „SCAN“ Modi des Wandlers. Eine rein funktionale Übersicht des Aufbaues ist in folgendem Bild zusammengefasst.

Die „High Threshold“ und „Low Threshold“ Registerpaare beinhaltet den oberen bzw. den unteren Schwellwert für die Überwachungsfunktion. Diese Werte werden mit dem jeweils neu erfassten Messwert des aktuellen Kanals aus dem ADC verglichen und erzeugen bei einem Wert ausserhalb des erlaubten Bereichs ein Signal das zum Einen das AWD Bit im ADC_CSR Register setzt, aber gleichzeitig über den 1-auf-10 Multipexer in das entsprechende Kanal-Bit AWS[i] des ADC_AWSRH bzw. ADC_AWSRL Registers gespeichert wird, um den auslösenden Kanal („i“) später, per Software feststellen zu können.

Zu beachten: Die Threshold Register sind im Übrigen hinsichtlich ihrer Bit-Zuordnung fest vorgegeben und sind durch die ALIGN Funktion der Datenausgabe über die ADC-Datenregister bzw. die Datenpuffer Register nicht betroffen! Die höherwertigeren 8 Bit des 10-Bit Wertes stehen dabei im „H“-Register.

Die korrespondierenden Bits der ADC_WDCRH und ADC_WDCRL Watchdog Control Register ermöglichen es jeden einzelnen Kanal zu maskieren, der keinen AWD Event erzeugen bzw. kein Bit in den Statusregistern setzen soll. Nach einem Reset sind alle Kanäle automatisch gesperrt und müssen bei Bedarf per Software freigegeben werden.

Zu beachten:Über das Bit AWDIE Bit im ADC_CSR Register kann bei einem AWD Event der ADC Interrupt freigegeben werden. Dieser Interrupt wird auch durch das EOC Bit ausgelöst, daher müssen die Status Bits in den ADC_WDSRH bzw ADC_WDSRL Registern abgefragt werden um den Auslöser für den Interrupt zu erkennen.

Abschliessend sei zum Thema „Analog Watchdog“ noch bemerkt das der ADC2 Block der in verschiedenen STM8 Produkten zusätzlich zum ADC1 zur Verfügung steht diese Funktionalität nicht besitzt.

Copyright Notiz

Dieses Dokument sowie dessen Inhalt, insbesondere Texte, Fotografien und Grafiken, unterliegt dem Copyright (© 2017) und sind nur mit einer schriftlicher Zustimmung des Autors, Dipl.Ing.(FH) Franz Henkel zur vollständigen oder auszugsweisen Weiterverwendung  in Form  einer gedruckten oder elektronischen Kopie oder Replikation bzw. einer vollständigen oder auszugsweisen Bereitstellung des Inhalts in schriftlicher oder elektronischer Form, zu verwenden.