MSP430

Parameter Name

MSP430F149

ROM / Flash (kB)

60

RAM (Bytes)

2048

ADC

12-Bit

Capture / Compare plus Timer

Yes

UART

Hardware x 2

Hardware Multiplier

Yes

Number of Timers

3

Features MSP430F149

  • Low Supply Voltage Range 1.8 V - 3.6 V

  • Low Operation Current

    • 7 uA at 32 KHz, 2.2 V

    • 250 uA at 1 MHz, 2.2 V

  • Five Power Saving Modes:

    • Standby Mode: 1.3 uA,

    • RAM Retention Off Mode: 0.1 uA

  • 16-Bit RISC Architecture, 125ns Instruction Cycle Time

  • 12 Bit A/D Converter With Internal Reference,

    sample-and-hold and Autoscan Feature

  • Basic Clock Module Configurations:

    • Various Internal Resistors

    • Single External Resistor

    • 32 kHz Crystal

    • High Frequency Crystal

    • Resonator

    • External Clock Source

  • 16-Bit Timer With Seven Capture/Compare-With-Shadow Registers, Timer_B

  • 16-Bit Timer With Three Capture/Compare Registers, Timer_A

  • On-chip Comparator

  • Serial On-Board Programming,

  • No External Programming Voltage Needed

  • Programmable Code Protection by Security Fuse

  • Family Members Include:

    • MSP430F149: 60KB ROM, 2kB RAM

  • Available in:

    • 64-Pin Quad Flat Pack (QFP)

Weiterführende Informationen finden sie auf der Seite des Herstellers: Texas Instruments

Evaluation Module

Das hausintern entwickelte MSP430 Board ist für den Unterricht ausgerichtet. Die meisten Anschlüsse sind steckbar herausgeführt.

Ein Programm mit dem die Funktionen des Boards getestet werden können, finden sie hier .

Wer selber zuhause mit dem MSP430F149 experimentieren möchte, kauft sich ein günstiges EVM (evaluation module).

Olimex MSP430-H149 Header Board

Header Board von Olimex . Bestückt mit dem MSP430F149 (60K Program Flash, 256 Bytes data Flash, 2K Bytes RAM). Ideal für die Integration in ein bestehendes System.

Olimex MSP430-JP149 Development Board

Development Board von Olimex . Bestückt mit dem MSP430F149 (60K Program Flash, 256 Bytes data Flash, 2K Bytes RAM). Ideal für Prototypentwicklungen sowie erste Gehversuche mit dem MSP430.

JTAG Adapter

Um den MSP430 zu programmieren und debuggen, benötigt man einen JTAG Adapter. Hier empfehlen sich die Adapter des Herstellers Olimex, da diese viel billiger sind als die Orginale von Texas Instruments.

Olimex MSP430-JTAG-TINY

USB JTAG Adapter von Olimex . Informationen zur Installation, sowie die Installationsdateien finden sie hier .

Olimex MSP430-JTAG

Paralleler JTAG Adapter von Olimex . Ist nicht so schnell wie der USB JTAG-Adapter, dafür billiger.

Datenblätter

MSP430X1XX User's Manual

Download (pdf)

MSP430X14X Datasheet

Download (pdf)

MSP430 Experimentiersystem

Download Schema (pdf)

MSP430 Evaluation Module

Download (pdf)

MSP430 JTAG Adapter

Download (pdf)

Tutorials und Application Notes

Blinklicht mit IAR-Embedded Workbench

Download (pdf)

Manuals

MSP430 ASSEMBLER, LINKER, AND LIBRARIAN: Programming Guide

Download (pdf)

MSP430 C-SPY: User Guide

Download (pdf)

MSP430 WINDOWS WORKBENCH: Interface Guide

Download (pdf)

MSP430 C COMPILER: Programming Guide

Download (pdf)

FET User's Guide

Download (pdf)

IAR-C Compiler

Die aktuelle Version auf dem NTB-Image ist 5.0.2 für die IDE und 4.1A für den Compiler. Wenn Sie eine ältere Version benutzen, sind insbesondere die Interruptroutinen abzuändern!

Diese Version des Compilers ist gratis (die Vollversion kostet ca.2500CHF). Dafür können Sie nur 4k Code erzeugen.

MSP GCC Toolchain

MSP GCC Compiler

Brauchen Sie mehr Code (bis 60k sind im MSP430F149 drin) empfielt sich der GNU-C Compiler für den MSP430, mspgcc . Hier finden Sie auch viele nützliche Hinweise zum Compiler.

Achtung falls der GNU-C Compiler in Verbindung mit Eclipse verwendet wird, sollte die Version 20060502 installiert werden, da sonst beim Debuggen Probleme auftreten können.

Eine andere Seite mit viel Material

Manual zum mspgcc (pdf)

Für die Compilation benutzen Sie mit Vorteil ein Make-File. Mehr Infos dazu unter GNU Make . Sie können auch alle erzeugten Files (*.o, *.elf, *.lst, *.hex) mit "make clean" löschen.

Im folgenden Beispiel finden Sie eine kleine Applikation, die auf unserem EVM einmal pro Sekunde den AD0 liest und das Resultat auf dem Display ausgibt.

Im zip-File finden Sie auch das passende Makefile. Geben Sie in einer DOS-Shell im richtigen Verzeichnis den Befehl "make" ein. Jetzt wird in einem ersten (nur das erste Mal, ist nachher nicht mehr nötig) Durchgang ein File erzeugt, das alle gegenseitigen Abhängigkeitenin Ihrem Projekt abspeichert. Mit einem zweiten "make" erzeugen Sie das binäre Ausgangsfile *.elf, das Sie dann auf das Target brennen.

Achtung : In den Headerfiles zum GCC (konkret in "common.h" befindet sich ein Fehler in LPM_EXIT. Im Beispiel ist gezeigt, wie sie entweder die #define überschreiben oder besser das Schlüsselwort wakeup benützen. Mehr Infos dazu im mspgcc-Manual. Im Übrigen ist das Beispiel so programmiert, dass Sie das Beispiel sowohl mit dem GCC als auch mit dem IAR Compiler compilieren können.

MSP GCC Debugger

Für den GNU-Debugger gibt es das Frontend "Insight". Neu ist dieses Frontend nicht mehr im aktuellen Build des mspgcc enthalten sondern muss separat heruntergeladen werden. http://prdownloads.sourceforge.net/mspgcc/ . Die neuste Version von Insight für Linux User finden Sie unter http://sources.redhat.com/insight/.

Der GNU-Debugger setzt eine TCP-Connection voraus. Zusätzlich brauchen Sie noch den Zugriff auf die LPT. Als Administrator müssen Sie den Befehl ".\giveio\install_giveio.bat" ausführen. Dies ist auf den Klassenzimmer-PC's bereits passiert.

Mit dem Befehl "msp430-gdbproxy --port=3333 msp430" werden die entsprechenden Kommandos an Insight umgeleitet. Falls Ihr Target korrekt mit der LPT verbunden ist, erscheint die Meldung

info: msp430: Target device is a 'MSP430F14x'

notice: msp430-gdbproxy: waiting on TCP port 3333

Statt den Befehl einzutippen, können Sie auch das Skriptfile msp430-gdbproxy ausführen (zu finden unter Informatik->mspgcc)

Jetzt starten Sie den Insight und öffnen das *.elf File.

Achtung: Sie müssen das *.elf File jedesmals wieder schliessen, wenn Sie mit make ein neues erzeugen wollen.

Jetzt mit "Run->Connect to target" die folgenden Optionen wählen:

Target:

"Remote/TCP"

Hostname:

"localhost"

Port:

"3333"

Set breakpoint at main:

yes

Attach to target:

no

Download program:

no

Run Method:

Continue from last stop

 

Command to issue after attaching:

monitor erase all

 

Der Debugger ist nicht sehr stabil, lesen Sie die Online-Hilfe. Natürlich können Sie auch den C-Spy Debugger von IAR benutzen (*.hex File erzeugen und laden). Dann haben Sie allerdings keine Source-Line Unterstützung, da im Hexfile keine Debuginfo abgelegt wird. Dafür ist der Download wesentlich schneller.

Integration in Eclipse

Für die Eclipse-IDE besteht ein konfortables C/C++ Plugin welches die Möglichkeit bietet, externe Compiler einfach einzubinden. Im Folgenden wollen wir dies mit dem mspgcc tun.

Nutzen Sie die neuste Eclipseversion auf dem file-server ( \\file-server\inf\eclipse\ ). Dort ist das benötigte Plugin bereits installiert. Falls Sie ein Notebook benützen, kopieren Sie am besten den ganzen Eclipse Ordner auf Ihre Festplatte um lokal zu arbeiten. Beachten Sie, dass der mspgcc Compiler vorgängig installiert werden muss (Abschnitt „MSP GCC Compiler“ ).

Ein neues Projekt erstellen

Öffnen Sie den Projekt Wizard 'File' -> 'New' -> 'Project...' und wählen Sie unter dem Ordner 'C' den Punkt 'C Project' und klicken sie auf 'Next'.

Geben sie dem Projekt den Name 'TestProject'. Anschliessend wählen sie unter 'Project types' den Punkt 'Makefile project' und unter Toolchain '-- Other Toolchain --' aus.

Im nächsten klicken sie auf 'Advanced settings...' und fügen anschliessend unter 'C/C++ General -> Paths and symbols -> GNU C' mit 'Add' den Pfad für die Include Dateien hinzu. Falls schon andere Include Paths vorhanden sind, löschen sie diese mit 'Delete'.

Nun erstellt Eclipse ein neues 'Makefile C Project' und fragt Sie anschliessen, ob Sie in die C-Perspektive wechseln möchten. Vielleicht habe Sie Eclipse bereits für die Java Entwicklung benützt und wissen somit, dass es auch für Java eine eigene Perspektive gibt. Markieren Sie also das Kästchen 'Remember my decision' und bestätigen Sie mit 'Yes'.

Die C/C++ Perspektive wird rechts oben angezeigt.

Laden Sie nun das folgende Beispielprojekt herunter und kopieren Sie die Dateien in das Projektverzeichnis (z.B. im Explorer). Beachten Sie, dass die Dateien nicht sofort angezeigt werden, sondern erst nach einem 'Refresh'. Diese Aktion führen Sie aus, indem Sie mit der rechten Maustaste auf das Projekt klicken und 'Refresh' auswählen.

Jetzt sollten die Files im Projekt sichtbar sein.

Compiler und Make Targets

Der mspgcc Compiler ist bereits auf unserem System installiert und der Ordner indem sich die ausführbare Datei befindet in der Umgebungsvariable PATH eingetragen. Somit können wie in einem Command-Window einfach 'msp430-gcc' eingeben um dem Compiler zu starten. Da wir den Compiler über ein Makefile starten, müssen wir keine weiteren Modifikationen durchführen. Der Aufruf des Compiler funktioniert im Grunde gleich, wie von der Kommandozeile.

Was wir allerdings machen müssen, ist ein neues Make-Target zu erstellen, um z.B. den Befehl 'make all' ausführen zu können. Öffnen Sie dazu den Tab 'Make Targets' hinter 'Outline' und klicken Sie mit der rechten Maustaste auf 'TestProject'.

Beachten Sie, dass der Tab 'Make Targets' nur in der C/C++ Perspektive zur Verfügung steht!

Wir übernehmen die Standardeinstellung, die wie folgt aussieht:

Nun kann das vorgängig erstellte Make Target ausgeführt werden. Beim Doppelklicken von 'all' wird also 'make all' ausgeführt. Als Resultat erstellt der mspgcc die kompilierten Dateien.

Debuggen

Im CDT Plugin für Eclipse ist ein sehr komfortables Debugfrontend für den GDB-Debugger integriert. Starten Sie als erstes den gdbproxy mit folgenden Kommando: 'msp430-gdbproxy --port=3333 msp430'. Die Aufgabe diese Proxy ist es, Kommandos vom Debugger (Eclipse CDT) zu empfangen und die gewünschten Aktionen auf dem Target (Microcontroller) auszuführen. Möchte man einen anderen Microcontroller debuggen, muss nur der Proxy ausgewechselt werden. Der Proxy macht also die Übersetzung zwischen den standardisierten Debugkommandos der Entwicklungsumbegung und den microcontrollerspezifischen Kommandos des Targets.

Der Verbindungsaufbau ist ausführlicher im Abschnitt „MSP GCC Debugger“ beschrieben.

Öffnen Sie nach erfolgreicher Verbindung zum MSP430 im Menü 'Run' den Menüpunkt 'Debug...'. Markieren Sie 'C/C++ Local Application' und erstellen Sie eine neue Konfiguration mit 'New'. Wählen Sie im 'Main'-Tab unter 'C/C++ Application' 'Search Project...'. Als Information für den Debugger wählen wir die durch die Kompilation erstellte Datei 'appl.elf'. Dies Datei enthält alle Debuginformationen unserer Kompilierten C-Dateien.

Wechseln Sie zum Tab 'Debugger' und wählen sie im Pulldown-Menü 'Debugger' den 'gdbserver Debugger'. Im Feld 'GDB debugger' geben sie den MSPGCC Debugger 'msp430-gdb' an. Als nächstes drücken Sie hinter 'GDB command file' den Button 'Browse...'. Wählen Sie die Datei 'gdb-target.ini' aus unserem Projekt. Diese Datei enthält Instruktionen für die Initialisierung des Debuggers. Wenn Sie in die Datei schauen, sehen Sie, dass dort Einstellungen wie Portnummer (für Proxi) oder der Name des zu ladenden ELF-Files eingetragen sind. Für andere Projekte müssen Sie also mindestens den Namen des ELF-Files in dieser Datei anpassen.

Wechseln Sie bei den unteren Tabs auf 'Connection'. Wählen sie im Pulldown-Menü 'Type' die Verbindungsart 'TCP'. Nun müssen sie unter 'Port number' den Port angeben, unter welchem der Debugger den Proxy ansprechen kann. In unserem Beispiel ist dies '3333'.

Betätigen Sie nun den 'Debug'-Button um die Debug Session zu starten. Der msp430-gdb Debugger wird gestartet und hält automatisch beim Eintreten in die main()-Methode.

Im Fenster in der rechten oberen Ecke werden die Werte der aktuell sichtbaren Variablen laufend dargestellt. Strings und Structs können durch das drücken des '+'-Symbols inspiziert werden.

Beachten Sie, dass auch die aktuellen Breakpoints, geladenen Module sowie aktuellen Registerwerte ausgelesen werden können.

Möchten Sie das Programm an einem bestimmten Ort anhalten lassen, können Sie einen Breakpoint setzen. Entweder können Sie mit Doppelklick auf der entsprechenden Zeile einen Breakpoint setzen oder mit der rechten Maustaste über das Menü. Dies funktioniert in der 'C/C++' und in der 'Debug' Perspektive.

Viel Spass beim Käfer eliminieren!

Für Anregungen und Verbesserungsvorschläge schreiben Sie bitte ein Mail an die Assistenten der Informatik.

MSPGCC und Eclipse Tutorial von Andreas Ackermann

Download (zip)

MicroC/OS II

Dieses kleine populäre RTOS finden Sie unter http://www.micrium.com/ beschrieben. Es bietet einen preemtiven Scheduler und alles, was man so braucht, inkl. Semaphoren, Message Queues usw. Es wurde auch auf den MSP430 portiert.

Die Version für den IAR Compiler setzt die Vollversion des Compilers voraus und kann direkt von der Mikrium Homepage heruntergeladenund in einem Projekt kompiliert werden.

Die Version für den mspgcc finden Sie hier . Im zip-File befindet sich auch ein passendes Makefile sowie eine kleine Applikation mit zwei Tasks.

FAQ

1. Blinklicht läuft zu schnell
2. Codegrösse reicht nicht für IAR-Compiler
3. Target läuft nicht
4. Low-Power Modi und GCC
5. if, else oder switch Anweisungen werden auf dem uC nicht ausgeführt
6. GDB Timeout
7. Nach dem Start des msp430-gdbproxy wird im Cmd-Fenster der Fehler error msp430: The FET tool version does not match this program. Update required. ausgegeben.
8. Beim MSP430-PXXX Development Board oder beim MSP430-HXXX Header Board schwingt der externe Oszillator teilweise bis überhaupt nicht.
1.

Blinklicht läuft zu schnell

Sehr oft wird vergessen den Watchdogtimer zu Beginn auszuschalten. Dieser löst in seiner Startkonfiguration alle 32ms einen Reset aus (und Ihre LED) blinkt dann in diesem Takt statt der vorgesehenen Periodendauer von z.B. 1s.

2.

Codegrösse reicht nicht für IAR-Compiler

Der IAR Compiler ist nur gratis für eine Codegrösse kleiner als 4k. Wenn das nicht reicht:

  • die Vollversion verwenden (relativ teuer)

  • den GCC Compiler+Debugger verwenden

  • den Code optimieren, indem Sie z.B. diese Option in den Project Options so wählen oder das printf Modell auf medium resp. small stellen (in diesem Fall werden float und leading zeros nicht unterstützt)

3.

Target läuft nicht

Der Chip-Sockel ist etwas "wackelig". Die Kontakte korrodieren schnell. Drücken Sie mit einem Finger auf den Sockel und versuchen Sie es erneut.

4.

Low-Power Modi und GCC

Achtung: Im Headerfile zum MSP430 ist im GCC-Packet ein Fehler enthalten. Mit diesem Fehler kann der Prozessor in einer Interruptservice-Routine den Low-Power Modus nicht mehr verlassen. Entweder Sie ändern das Headerfile ab oder Sie überschreiben die entsprechende #define in Ihrer Applikation. #define LPM3_EXIT _BIC_SR_IRQ(PM3_bits) Entsprechendes gilt auch für die anderen LPM's.

5.

if, else oder switch Anweisungen werden auf dem uC nicht ausgeführt

Der GCC Compiler überoptimiert den Code teilweise. Um diesen Fehler zu beheben, kann im Makefile die Optimierungsstufe angepasst werden. Hierfür in der Zeile CFLAGS = -mmcu=${CPU} -O2 -Wall -g die Option O auf 0 (no optimizations) oder 1 (slight optimizations) setzen.

6.

GDB Timeout

Falls die Codegrösse 2k überschreitet, kann beim Flashen des uC's mittels GDB folgender Fehler auftreten: Target is not responding (time out) . Dies kann verhindert werden, indem unter Window > Preferences > C/C++ > Debug > GDB MI der Wert Launch timeout erhöht wird.

7.

Nach dem Start des msp430-gdbproxy wird im Cmd-Fenster der Fehler error msp430: The FET tool version does not match this program. Update required. ausgegeben.

Die Firmware des JTAG-Adapters muss aktualisiert werden. Sie können dies tun, indem sie mit IAR ein Programm auf den MSP430 laden ( Achtung: schliessen sie zuerst den msp430-gdbproxy). Die Frage The firmware on the TI USB FET does not match this software version. Do you want to update the firmware? beantworten sie mit Yes .

8.

Beim MSP430-PXXX Development Board oder beim MSP430-HXXX Header Board schwingt der externe Oszillator teilweise bis überhaupt nicht.

Die beiden 12pF Kondesatoren in der Nähe des Oszillators müssen entfernt werden.