A/D-Wandler mit 12 bit Auflösung bei Abtastraten von mehr als 1 MS/s sind heute nicht Ungewöhnliches mehr. Manche Mikrocontroller-Hersteller haben bei der Konzeption der Analogmodule jedoch nicht zu Ende gedacht: Denn für viele Anwender definiert sich Genauigkeit nicht allein durch die Höhe der Auflösung und der Abtastrate. Ihnen ist es mindestens genauso wichtig, den Zeitpunkt der Messung exakt festlegen zu können, um Strom-Ripple, z.B. durch Schaltvorgänge, als Quelle für Messfehler ausblenden zu können.
Anders als bei den Wettbewerbsprodukten können XMC1200 und XMC1300 über programmierbare, Hardware-gesteuerte Sequenzen die Abtastzeitpunkte passend zu den Schaltmustern definieren. Zusätzlich hat man jederzeit die Möglichkeit, über Gating-Signale auch eine laufende Sequenz zu unterbinden, um Fehlmessungen zu vermeiden.
Der XMC1100 enthält einen 12-bit-A/D-Wandler je nach Gehäuse mit 6, 10 oder 12 Kanälen, der neben 12-bit- auch 10-bit- und 8-bit-Werte wandeln kann. Dabei erreicht er bei 12-bit-Auflösung unkalibriert 1,88 MS/s (17 Taktzyklen bei 32 MHz), bei 10-bit 2,13 MS/s (15 Taktzyklen) und bei 8-bit 2,46 MS/s (13 Taktzyklen). Daneben gibt es noch einen Compare-Modus für 10-bit-Werte, in welchem für einen Vergleich nur 62,5 ns benötigt werden. Dabei kann man einen Schwellwert festlegen, dessen Unter- bzw. Überschreitung sehr schnell detektiert wird, ohne dass eine vollständige Wandlung durchgeführt werden muss.
Das Eingangssignal kann bei der ohnehin im A/D-Wandler notwendigen Pegelanpassung wahlweise mit Faktor 3, 6 oder 12 verstärkt werden. Im Gegensatz zu einem Operationsverstärker, bei dem die Verstärkung auf Kosten der Geschwindigkeit geht, passiert dies beim XMC1000 ohne Verluste. Dazu kann in zwei frei wählbaren Kanälen (Stichwort: Audio) ein Quantisierungsfehler bei der nächsten Wandlung berücksichtigt werden, um die ENOB-Zahl zu erhöhen.
Dabei wird die in dem kapazitiven Netzwerk des Wandlers übrig gebliebene Restladung additiv gespeichert und in die Folgewandlung eingebracht, so dass man ein echtes Oversampling aufbauen kann. Angenommen, man würde 200 Mal den Wert 100,25 abtasten; dann würde man mit diesem Verfahren bei drei Wandlungen den Wert 100 und bei jeder vierten Wandlung durch die additiven Restladungen den Wert 101 als Ergebnis bekommen.
Bei dem komplexeren A/D-Wandler, der in XMC1200 und XMC1300 eingebaut ist, gibt es zusätzlich zwei Abtast-Halte-Glieder (Sample-and-Hold-Stufen), die im Hinblick auf den Abtastzeitpunkt und die Frage, welche Signale abgetastet werden, gesteuert werden. Dazu gibt es zwei Steuereinheiten, die jeweils zwei Quellen „Queue“ und „Scan“ mit unterschiedlichen Eigenschaften besitzen, um eine Abtastung anzustoßen (Bild 6).
Wenn beide gleichzeitig abtasten wollen, entscheidet der Arbiter anhand von zuvor festgelegten Prioritäten, welche Quelle als erste drankommt. Es kann sogar eine laufende Wandlung unterbrochen werden, wenn deterministisches Verhalten gefordert wird – wenn z.B. eine Motorsteuerungs-Strom- und eine Temperaturmessung stattfinden. Indem man Kanäle auswählt, die auf unterschiedlichen Abtast-Halte-Gliedern liegen, kann man bei der Motorsteuerung zusätzlich zur Strom- z.B. noch zeitgleich eine Spannungsmessung vornehmen.
In einer programmierbaren Sequenz können mehrere Signale automatisch ohne Involvierung der Software konvertiert werden. Bei der Quelle „Queue“ kann man individuell festlegen, welche Kanäle abgetastet, ob die Wandlung pro Kanal durch einen Trigger z.B. durch die CCU4/8 oder BCCU angestoßen und/oder Interrupts ausgelöst werden sollen. Bei der Quelle „Scan“ kann man dagegen „nur“ festlegen, welche Kanäle involviert sein sollen; diese werden dann der Reihe nach z.B. auf ein Trigger-Signal hin gewandelt (Bild 6).
Zusätzlich zu diesen vier Quellen gibt es noch einen weiteren Block, der eine zusätzliche Quelle „Background-Scan“ enthält. Dieser ist für zeitunkritische Wandlungen gedacht. Ähnlich der Quelle „Scan“ kann man auch hier die Kanalnummern angeben, die nacheinander bedient werden sollen. Die Wandlungen werden immer dann eingefügt, wenn sie die übrigen beiden nicht stören.
Damit hat man in Summe fünf Steuereinheiten und „fünf virtuelle A/D-Wandler“.
Zudem können natürlich auch bei den XMC1200/1300-Wandlern Grenzen für die Eingangssignale programmiert werden, bei deren Überschreitung ein Interrupt oder Trigger (z.B. Start PWM, Stop PWM, Timer) ausgelöst wird. Ein externer Komparator wird damit überflüssig. Als Sicherheitsmerkmal ist wie beim XMC4000 die Erkennung einer unterbrochenen Leitung implementiert. Die gewandelten Werte können in einem Ergebnisverarbeitungs-Block automatisch aufkummuliert oder mit eingebauten FIR- und IIR-Filtern 1. Ordnung gefiltert werden.
Selbst bei einem Standard-Element wie einem Analog-Komparator hat sich Infineon etwas einfallen lassen: Die Offsetspannung von nur 3 mV und die Laufzeitverzögerung von nur 30 ns sind im Cortex-M0-Universum unerreicht. Das Ausgangssignal kann entweder direkt auf einen Pin gegeben oder von den oben beschriebenen Peripherieelementen genutzt werden. Davon abgesehen gibt es noch einen weiteren Komparator (Out of Range, ORC), der die Eingänge des A/D-Wandlers auf Werte ober- bzw. unterhalb vorgegebener Schwellenspannungen überwacht.