STM8 10-Bit Wandler ADC1
Der Analog-Digital-Wandler ADC1 kann durch zwei mögliche Ereignisse einen Interrupt auslösen:
EOC – Ende der A/D Wandlung
AWD – Überschreitung der Grenzwerte
Die entsprechenden Interrupt Freigabe Bits, EOCIE und AWDIE befinden sich im Register ADC_CSR. Beide Interrupts verzweigen auf den Interrupt Vektor irq22 und müssen danach hinsichtlich des auslösenden Ereignisses abgefragt werden.
Das EOC Flag im ADC_CSR signalisiert ein Ende des Wandlervorgangs während das AWD Flag im gleichen Register das Auslösen des Analog Watchdogs in mindestens einem Messkanal definiert.
Im Analog Watchdog Fall kann danach über die ADC_AWSRL (und gegebenenfalls auch ADC_AWSRH) Register der Messkanal ausgelesen werden der den Interrupt verursacht hat. Da bei der Verwendung mehrerer Messkanäle auch mehrere Grenzwertüberschreitungen gleichzeitig vorkommen können sind in den AWD Status Registern ADC_AWSRx eventuell auch mehrere Bits gleichzeitig gesetzt. Es ist dann Aufgabe der Anwendung zu entscheiden wie die auslösenden Kanäle behandelt werden sollen.
Der A/D-Wandler kann alternativ auch ohne Interrupt betrieben werden da die Anzahl der nötigen ADC-Takt Zyklen (14) bekannt ist. Es ist daher möglich den Wandler zu starten (über ADON) und danach eine entsprechende Anzahl von Zyklen mit dem Auslesen zu warten. Dabei kann das Einfügen einer Subroutine die eine gänzlich andere Funktion ausführt die Effektivität gegenüber einem Delay verbessern.
Der „End of Conversion“ Interrupt wird in allen ADC-Modi ausgelöst wenn das EOCIE Bit gesetzt ist und das EOC Flag von der Hardware gesetzt wurde. Der Interrupt wird erzeugt wenn:
Im Single Mode der ausgewählte Messkanal digitalisiert wurde.
Im Continuous Modus eine A/D-Wandlung abgeschlossen wurde, der ADC aber weiterläuft.
Im Continuous Buffered Modus wenn der Datenpuffer mit 8 (10) Messwerten gefüllt ist.
Im SCAN Modus wenn der Datenpuffer mit allen zu messenden Kanälen gefüllt wurde.
Im Continuous SCAN Modus wenn eine Mess-Sequenz aller Messkanäle in den Datenpuffer gespeichert wurde.
Der Analog-Watchdog-Interrupt kann in allen ADC-Modi ausgelöst werden wenn das AWDIE Bit gesetzt wurde und der in Frage kommende Kanal „i“ nicht durch das entsprechende AWEN[i] Bit maskiert wird. Ein von der Watchdog Hardware gesetzes AWS[i] Bit wird bei freigegebenen Messkanal dann den Interrupt auslösen.
Jeder über die AWS[i] Bits freigegebene Analogkanal wird auf die Über- bzw. Unterschreitung der Analog Watchdog Schwelle in den ADC_HTRH/ADC_HTRL bzw. ADC_LTRH/ADC_LTRL Registern hin überprüft und bei der Erkennung einer Grenzwertüberschreitung behandelt. Dabei wird sowohl das korrespondierende AWS[i] Bit für den auslösenden Kanal im ADC_AWSRL (oder gegebenenfalls im ADC_AWSRH) Register gesetzt als auch das AWD Flag im ADC_CSR Register.
Die Tabelle zeigt den ADC1 EOC-Interrupt als irq22, welcher allerdings auch für den AWD-Interrupt benutzt wird
![]() |
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.