Im Gegensatz zu den eben kennengelernten Taktgeneratoren (DCO, LFXT1 oder XT2) bezeichnet der Begriff der Taktquellen die daraus abgeleiteten internen Prozessortakte. Das Basic-Clock-Module (siehe dazu auch Bild 3.1) stellt dafür verschiedene Funktionen zur Verfügung. So kann entschieden werden, welche Taktquelle aus welchem Generator gespeist wird und ob die Frequenz direkt weitergegeben oder erst mit einem Teiler herunterskaliert wird. Insgesamt gibt es drei verschiedene interne Taktquellen:
Die Main-System-Clock kann aus allen drei möglichen Generatoren (DCO, LFXT1 oder XT2) betrieben werden. Die Auswahl erfolgt mittels eines Auswahlschalters (Multiplexers), der zwei Adressleitungen hat, Bild 3.14.
Dazu müssen die zwei Bits SELM0 und SELM1 im BCSCTL2-Register, dem Basic-Clock-System-Control-Register 2, gesetzt bzw. gelöscht werden (vgl. Tabelle 3.3).
| SELMx | Taktgenerator für MCLK |
| 00 | DCO |
| 01 | DCO |
| 10 | XT2 |
| 11 | LFXT1 |
| Tabelle 3.3.: | Auswahl des Taktgenerators für die Main-System-Clock |
Dem Multiplexer schließt sich ein Software-Frequenz-Teiler an. Mit ihm lässt sich die Frequenz durch eins, zwei, vier oder durch acht teilen. Die Bits DIVM0 und DIVM1 im Register BCSCTL2 müssen hierfür gesetzt bzw. gelöscht werden, siehe Tabelle 3.4. Die Main-System- Clock kann dann durch Setzen des CPUOFF-Registers zusätzlich noch komplett ausgeschaltet werden (vgl. Kapitel 3.1.6).
| DIVM1 | DIVM0 | Teiler |
| 0 | 0 | 1 |
| 0 | 1 | 2 |
| 1 | 0 | 4 |
| 1 | 1 | 8 |
| Tabelle 3.4.: | Vorteiler Einstellung für MCLK |
Die Sub-Main-Clock, die die Peripherie des Mikrocontrollers versorgt, ist ähnlich aufgebaut, wie die Main-System-Clock. Auch sie lässt sich mit dem DCO oder dem Quarzoszillator betreiben. Allerdings stehen hier nicht drei Taktgeneratoren zu Auswahl, sondern nur zwei: Neben dem DCO kann man als Taktgenerator nur noch den Taktgenerator XT2 verwenden. Sollte die verwendete Controller-Variante keinen XT2-Eingang haben, kann der Taktgenerator LFXT1 gewählt werden. Die Auswahl erfolgt durch Löschen (DCO) oder Setzen (XT2/LFXT1) des Bits SELS im BCSCTL2 Register. Mit den Bits DIVS0 und DIVS1 im gleichen Register lässt sich dann wieder die Taktfrequenz durch eins, zwei, vier oder acht Teilen
Anders als die Main-System-Clock oder die Sub-Main-Clock lässt sich die Auxiliary-Clock nur mit einem externen Quarzoszillator vom Taktgenerator LFXT1 betreiben. Auch sie lässt die Frequenz-Teilung durch einen Software-Teiler durch eins, zwei, vier und acht zu. Dazu müssen entsprechend die Bits DIVA0 und DIVA1 im Register BCSCTL1 gesetzt bzw. gelöscht werden1 .
Die Auxiliary-Clock ist eine zusätzliche Taktquelle, mit der zum Beispiel Timer A oder Timer B betrieben werden können.
Im folgenden Beispiel soll jetzt die Einstellung aller Taktquellen und Taktgeneratoren einmal im Ganzen vorgestellt werden. Die Main-System-Clock (MCLK) arbeitet nach dem Start des Controllers mit dem DCO bei einer mittleren Frequenz. Sie soll nun durch einen externen, hochfrequent arbeitenden Quarzoszillator betrieben werden. Wie wir einen Oszillator richtig starten, haben wir schon in Kapitel 3.1.5 erarbeitet. In Beispiel 3.6 werden wir jetzt XT2 als Quelle für MCLK und SMCLK wählen und zur Demonstration um den Faktor 2 respektive 8 teilen. Der Teiler von ACLK soll auf 1 gesetzt werden.
| Listing 3.6: | Start von Oszillator XT2 mit Taktfehlererkennung und Konfiguration aller Taktquellen |