1.2  Die MSP430-Familie

Die Mikrocontroller der MSP430-Familie sind 16-Bit-MCUs, die in verschiedenen Ausführungen erhältlich sind. Es gibt derzeit (Stand 2010) etwa 279 verschiedene Typen, die von Texas Instruments vertrieben werden. Viele weitere sind in Planung oder bereits angekündigt. Einen ersten Überblick kann man in der Übersichtsbroschüre von Texas Instruments [Tex07c] gewinnen. Alternativ bietet die Webseite von TI [Tex07g] eine Familienübersicht, in der eine parametrische Eingrenzung auf gewünschte Modelle vorgenommen werden kann.

Aus Gründen der Übersichtlichkeit teilt Texas Instruments die Familie der MSP430-Prozessoren in sechs Gruppen auf (die x sind hierbei Platzhalter):

MSP430x1xx (Non-LCD)
Die Controller mit der Kennung MSP430x1xx sind Flash/Rom basiert mit einem Speicher von 10kB bis 60kB. Sie arbeiten mit einer Versorgungsspannung von 1.8V bis 3.6V bei 8MHz. Die Größe des RAMs beträgt je nach Typ zwischen 128 Byte und 10kB. Die Gruppe selbst kann in kleinere (und preisgünstigere) Typen mit 20/28 Pins und in Typen mit 64 Pins unterteilt werden. Prozessoren mit gleicher Pin-Zahl sind Layout-kompatibel und unterscheiden sich nur durch die interne Ausstattung an Speicher und Peripheriemodulen. Diese Gruppe ist eine der derzeitigen Haupt-Produktlinien, und alle Typen sind aktiv in Produktion.
MSP430x2xx (Non-LCD)
Die MSP430x2xx-Controller arbeiten mit 16 MIPS bei einer Versorgungsspannung von 1.8V bis 3.6V. Die Größe des Speichers beträgt zwischen 1kB und 120kB bei einem RAM von 128 Byte bis 8kB. Die Subgruppe mit ”G” im Namen MSP430G2xx adressiert das unterste Preis- und Funktionssegment, während die Prozessoren der MSP430F2xx-Familie angefangen bei relativ einfach ausgestatteten Prozessoren (z.B. der MSP430F2013 aus dem Starter-Kit) in letzter Zeit immer mehr auch Prozessoren größeren Funktionsumfangs integrieren.
MSP430x3xx (LCD)
Dies war die erste Modellreihe der MSP430-Prozessoren. Bei den MSP430x3xx handelt es sich um ein ROM/OTP-Speicher basiertes Controllermodell mit einer Versorgungsspannung von 2.5V bis 5.5V. Er arbeitet mit 4 MIPS deutlich langsamer als die anderen MCUs (bei einer Taktung von 8MHz). Diese Typen sollten für neuere Designs nicht mehr verwendet werden.
MSP430x4xx (LCD)
Der MSP430x4xx wird als 8MHz- oder 16MHz-Ausführung hergestellt. Sein Flash-Speicher umfasst 4kB bis 8kB. Der ROM-Speicher beträgt ebenfalls 4kB bis 120kB. Der Arbeitsspeicher umfasst 256 Byte bis 8kB. Er verfügt über einen integrierten LCD-Controller und leistet 8-16 MIPS bei einer Versorgungsspannung von 1.8V bis 3.6V. Besonderes Funktionsmerkmal dieser Modellreihe ist der bereits integrierte LCD-Controller zur direkten Ansteuerung eines LCD-Displays.
MSP430x5xx/6xx (Non-LCD)
Die neueste Gruppe der MSP-Familie ist als High-End-Erweiterung der MSP430-Familie zu sehen. Mit mehr Rechenleistung (bis zu 25MHz-Taktfrequenz), erweiterten Peripheriemodulen (z.B. USB), größerem Speicher und mehr I/O- Leitungen sind diese für komplexe Designs prädestiniert.
CC430xx
Diese Gruppe integriert zusätzlich zum MSP430-Prozessorkern auch ein komplettes RF-Funkmodul, so dass sich hiermit extrem energieeffiziente Funklösungen zur Datenübertragung realisieren lassen. Die Funkmodule sind für den Frequenzbereich unter 1GHz entworfen. Dort liegen beispielsweise die frei nutzbaren ISM-Bänder 433MHz, 868MHz oder 915MHz.

Betrachtet man die gesamte Auswahl des Herstellers an zur Verfügung stehenden Typen, so verliert man leicht die Übersicht, welcher konkrete Prozessor denn nun für das eigene Projekt geeignet ist. Bei den meisten Projekten definiert die funktionelle Anforderung in Bezug auf die integrierten Funktionskomponenten die Auswahl. Exemplarisch sind in Tabelle 1.3 die Eigenschaften einiger Typen aus der MSP430-Familie dargestellt. In dem später noch vorgestellten Experimentierboard können beispielsweise alle zu MSP430F1612 oder MSP430F149 pinkompatiblen Typen der MSP430x1xx-Familie eingesetzt werden. Ein einfach zu lötendes Gehäuse prädestiniert den MSP430F1232 für Hobby-Prototypen, da nicht gleich eine SMD-Lötausrüstung angeschafft werden muss. Der MSP430F2013-Controller findet sich z.B. im Texas Instruments Starter-Kit eZ430-F2013. Obwohl dort als SMD-Baustein integriert, gibt es diesen sogar im 14-poligen DIP-Gehäuse für diejenigen, die jetzt partout mit SMD auf Kriegsfuß stehen.


Tabelle 1.3.: Vergleich verschiedener MSP430-Typen
Bezeichnung Flash/RAM GPIO

ADC

Andere Peripherie

     
MSP430F2013 2 KB/128 B 22

16-Bit Sigma-Delta

16-Bit Timer, Watchdog, USI

MSP430F1232 8 KB/256 B 22

10-Bit SAR

16-Bit Timer, Watchdog, USART

MSP430F149 60 KB/2 KB48

12-Bit SAR

Analog-Comparator, Hardware-Multiplier, 2x 16-Bit Timer, Watchdog, 2 USART (SPI or UART)

MSP430F1612 55 KB/5 KB48

12-Bit SAR

2 DAC 12, Analog-Comparator, DMA, Hardware-Multiplier, SVS, 2x 16-Bit Timer, Watchdog, 2x USART (SPI or UART or I2C)

     

Vergleicht man die Eigenschaften der genannten Mikrocontroller fällt auf, dass der MSP430F1232 und der MSP430F2013 über deutlich weniger Speicher und Peripheriemodule verfügen. Dies spiegelt sich aber auch in einem entsprechend geringeren Preis im Vergleich zum MSP430F1612 wider. Der MSP430F2013 gehört also eher zu den kleinen Modellen, verfügt aber immerhin über einen 16-Bit-Sigma-Delta-Analog/Digital-Wandler. Zudem hat er nur wenige außen zugängliche I/O-Pins. Die Auswahlentscheidung zu Gunsten eines bestimmten Typs ist zwar im Wesentlichen durch die Anwendung bestimmt, aber durchaus auch durch wirtschaftliche Erwägungen geprägt. Spätestens wenn man die Ebene des Hobbyprojektes verlässt, werden Fragen nach Preis, aber auch nach Verfügbarkeit und Fertigungskosten bestimmend für den Auswahlprozess. Der Vorteil einer Prozessorfamilie wie der des MSP430 ist, dass bei Wechsel der Anforderungen der Prozessor relativ leicht zu wechseln ist und die Software nur an wenigen Stellen angepasst werden muss.

1.2.1  Registerübersicht

Der MSP430 verfügt über einen Registerblock, der sich in drei funktionale Bereiche gliedern lässt: 8-Bit-Peripherie-Register, 16-Bit-Peripherie-Register und Spezial-Register. Zu diesen Spezial-Registern gehören die 16 je 16-Bit breiten CPU-internen Steuer- und Rechenregister. Sie werden von R0 bis R15 durchnummeriert. Eine Übersicht über die Registeraufteilung des MSP430 ist in Abbildung 1.3 dargstellt. Manche dieser Register (R0 bis R3) haben eine spezielle Bedeutung.


PIC

Bild 1.3.: Register-Aufteilung des MSP430 [Tex06c]


Die übrigen Register sind General-Purpose-Register (Allzweckregister), die für Rechenoperationen verwendet werden können. Die Vielzahl der vorhandenen Allzweckregister ist typisch für RISC-Rechner. Mit diesen Allzweckregistern lassen sich Rechenoperationen besonders schnell und effizient ohne Speicherzugriffe durchführen.

R0 Programm-Counter Das Programm-Counter-Register ist der Befehlszähler der CPU des MSP430. Das Register R0 zeigt immer auf den nächsten abzuarbeitenden Befehl. Dabei ist das Bit 0 (LSB) stets 0, da der MSP nur Befehle mit einer Länge von 2 Byte bis 6 Byte verwaltet und alle Adressen gradzahlig sind.

R1 Stack-Pointer Der Stack ist ein LIFO- (last in first out) organisierter Bereich im Arbeitsspeicher. In diesem werden beispielsweise beim Aufruf von Unterprogrammen die Rücksprungadressen sowie der Inhalt veränderter Register kurzzeitig gespeichert. Das Stack-Pointer- Register verwaltet diesen Arbeitsbereich. Um mit dem Stack arbeiten zu können, muss dieser zunächst mit dem Stack-Pointer-Register initialisiert werden. Dabei zeigt der Stack-Pointer stets auf die oberste Adresse des aktuellen Stacks. Zusätzlich sollte man beachten, dass der Stack ausgehend von der Initialisierungsadresse von hohen nach niedrigen Adressen wächst. Ähnlich wie beim Programm-Counter ist auch beim Stack-Pointer das Bit 0 stets nicht gesetzt.

Im Stack lassen sich sowohl 1 Byte breite als auch 2 Byte (1 Word) breite Zahlen ablegen. Da der Stack jedoch intern nur 16 Bit verarbeitet, werden bei 1 Byte breiten Zahlen die restlichen acht Bits aufgefüllt.

R2/SR/CG1 Status-Register Das Status-Register beinhaltet alle wichtigen Flags der CPU. Sie dienen unter anderem der Steuerung und dem selektiven Programmfluss mit bedingten Sprungbefehlen. Dabei sind allerdings nur die untersten acht Bits belegt. Die restlichen acht Bits des Registers sind reserviert. Die Aufteilung der Flags ist in Abbildung 1.4 skizziert.


PIC

Bild 1.4.: Aufteilung des Status-Registers


R3/CG2 Constant-Generator Das Constant-Generator-Register ist eine Besonderheit der MSP430-Mikrocontroller. Damit lassen sich besonders schnell ohne Initialisierung Konstanten wie 0, 1, 2, 4, 8 und -1 darstellen, die für viele Rechneranwendungen immer wieder benötigt werden.

R4 bis R15 Dies sind so genannte ”General-Purpose-Register”, die ohne Einschränkung zur Programmierung verwendet werden können. Da Befehle mit Registern sehr schnell abgearbeitet werden können, kann man durch die geschickte Wahl der Registerzuordnung sehr effizienten Code produzieren. Dies ist allerdings nur in der Assemblerprogrammierung möglich, in C übernimmt diese Optimierung der Compiler.