|
|
MSP430Der MSP430 ist ein 16 Bit-Mikrocontroller von Texas Instruments (TI). Er wurde speziell für eine geringe Stromaufnahme entwickelt, so dass er besonders für batteriebetriebene Geräte geeignet ist. Es gibt verschiedene Typen mit 1-256 kB Flash-ROM, 128-18432 Byte RAM, teilweise mit Hardware-Multiplizierer, UART, AD-Wandler oder LCD-Treiber, die meisten im SMD-Package mit 20 bis >100 Pins. Einige neuere aus der MSP430F2xxx-Serie gibt es auch im DIP-Package (Bezeichnung: MSPxxxx -N). Der MSP430F1121 zum Beispiel hat 4kB Flash-ROM, 256B RAM, 2 Timer und steckt in einem SO-20 Gehäuse.
[Bearbeiten] EntwicklungshardwareFür den schnellen Einstieg stellt TI mehrere Entwicklungssysteme mit USB Schnittstelle zur Verfügung. Beliebt ist, auf Grund des günstigen Preises, vor allem das MSP430 Launchpad. Es gibt jedoch noch andere wie z.B. das MSP430 USB Stick Development Tool. Das Launchpad besitzt einen integrierten JTAG-Programmer, dessen Pins über Jumper herausgeführt sind. So kann man auch Controller direkt im Breadboard programmieren. Es können dadurch auch Controller programmiert werden, die nicht in den 20-Pin PDIP-Sockel passen, wie z.B. die MSP430F-Serie. Weitere Adapterplatinen und JTAG-Programmer für MSP430-Controller bekommt man bei Olimex (Bulgarien), in Deutschland bei http://shop.mikrocontroller.net und http://www.elektronikladen.de oder in Japan bei PassWorld. Einen einfachen Schaltplan für den JTAG-Programmer von TI bzw. Olimex gibt es hier. Die Spannungsversorgung kommt im Gegensatz zum Original allerdings nicht vom Drucker-Port sondern muss extern (am besten vom MSP430 Board) bereitgestellt werden. Neben der JTAG-Programmierung bieten die MSP430-Controller auch die Möglichkeit, die Firmware über einen Bootloader einzuspielen. Die dafür erforderliche Hardware wird in der Application Note SLAA096d von Texas Instruments beschrieben. Launchpad Bezugsquellen: [1] [2] [3] [4] [5] [Bearbeiten] StromversorgungDer MSP430 benötigt meistens eine Spannung zwischen 1,8 und 3,6 V. Es gibt einige wenige Derivate, die mit 0.9V auskommen (z.B. MSP430L092). Einfach erzeugen kann man diese z. B. mit der folgenden Schaltung:
An den Eingang wird ein Steckernetzteil angeschlossen, die Ausgangsspannung lässt sich über das Potentiometer P1 einstellen. Benutzt man für P1 einen 500Ω-Typ, kann man die Spannung in einem Bereich von 1,2 Volt und knapp 3,6 Volt einstellen. Dann kann man den MSP430 nicht durch zu hohe Versorgungsspannungen zerstören. Für den Batteriebetrieb eines MSP430 gibt es von TI eine fertige Lösung mit wenig Peripherie: TPS61221 Schaltung für 3,3V Versorgung: [6] Die neue Generation mit USB, MSP430F55xx, enthält bereits einen Längsregler von 5 V auf 3,3 V für den Betrieb an der USB-Speisespannung. Die Minimalausstattung für die Erstinbetriebnahme ist ein Quarz (bspw. 12 MHz), ein Widerstand 1,5 kΩ und eine Drahtbrücke.
Dabei meldet sich der Mikrocontroller (genauer: der enthaltene Bootloader) als HID-Gerät. Zum Füllen des Flash steht von Texas Instruments eine Software mit Quelltext zur Verfügung. Leider ist die API der DLL völlig missraten (total stümperhaft), und das Programm schluckt keine .HEX-Dateien (wie sonst üblich), sondern TI-spezifische .TXT-Dateien. {Da habe ich etwas nachprogrammiert, siehe: http://www-user.tu-chemnitz.de/~heha/hs_freeware/msp430-usbbsl.zip } [Bearbeiten] Programmieren und DebuggenZum Füllen des internen Flash-Programmspeichers und zum Verfolgen des Programmablaufs stehen üblicherweise drei Schnittstellen zur Verfügung:
[Bearbeiten] Programmieren[Bearbeiten] seriell oder USBWer fehlerarm programmieren kann und für jedwede Hilfsadapter zu geizig ist, benutzt am besten den eingebauten Bootloader. Dies ist auch der günstigste Weg bei der Serienfertigung. Zur Nutzung des seriellen Bootloaders ist es am günstigsten, wenn die fertige Schaltung bereits eine serielle Schnittstelle braucht. Ungünstigerweise „hört“ der Bootloader nicht auf RxD und TxD, sondern zumeist auf P1.1 und P2.2 (siehe jeweiliges Datenblatt!). Daher behilft man sich mit festen oder trennbaren Brücken zwischen P1.1 und TxD sowie P2.2 und RxD. Von den SubD-Pins 1+4+6 geht man via Serienwiderstand bspw. 33 kΩ auf /RESET, von den SubD-Pins 7+8 ebenso via 33 kΩ auf TCK, fertig ist der On-Board-Programmieradapter. Richtig debuggen kann man mit der seriellen Schnittstelle nicht. MSP430 mit USB-Schnittstelle haben keinen seriellen Bootloader. Dieser ist durch den USB-Bootloader ersetzt worden. Zu seiner Verwendung werden keine ominösen Brücken verwendet; der USB-Anschluss (den wohl jede Anwendungsschaltung mit MSP430F55xx haben wird) ist sofort zum Herunterladen der Firmware geeignet. Clevererweise meldet sich der Bootloader als HID-Gerät, das erspart den Treiber. (Genau genommen gibt es extra für Firmware-Updates eine eigene USB-Geräteklasse.) [Bearbeiten] JTAGKomfortabel und dennoch preisgünstig ist der JTAG-Anschluss. Leider benötigt dieser mindestens 5 Kontakte und damit Platz auf der Schaltung. Anschluss-Adapter für den Parallelport sind leicht zu bekommen und beinhalten im einfachsten Fall nur Schutzwiderstände. Wer partout kein Parallelport hat (sollte ein Entwicklungsrechner immer haben) benötigt teure aber komfortable USB-JTAG-Adapter. [Bearbeiten] Spy-bi-WireDie TI-Erfindung Spy-bi-Wire kommt mit nur 2 Leitungen aus. (Nebenbei, die Konkurrenz kommt mit One-Wire mit einer Leitung aus.) Hier sind nur spezielle USB-Adapter bekannt, die vom Hersteller zu beziehen und closed-source sind. Auf TI-Entwicklungsplatinen ist dieser Umsetzer bereits als ein weiterer Chip aufgelötet. Eine Liste möglicher Adapter ist z.B. [hier] einsehbar. Die verfügbaren Adapter variieren teils sehr stark in ihrem Preis aber auch in ihrer Leistungsfähigkeit. Die kostengünstigste Lösung ist es ein MSP430 Launchpad als USB-Programmieradapter zu verwenden. Das Launchpad ist ein Kleines Entwicklungsboard von TI und kann bei Farnell bereits für unter 5 Euro bezogen werden. Die Spy-bi-Wire Anschlüsse (RST & TEST) können einfach an J2, J3 oder J4 abgenommen und an den zu programmierenden MSP430 angeschlossen werden. Zu beachten ist nur, das man den auf dem Board eingesetzten MSP430 heraus nimmt. Siehe Launchpad Userguide/SLAU318 Ein genereller Nachteil bei Spy-Bi-Wire ist die zum Teil erheblich reduzierte Geschwindigkeit bei der Datenübertragung. Dies liegt v.a. daran, dass die Daten, die vorher bei JTAG über 3 Leitungen übertragen wurden (TMS, TDI, TDO) nun über eine gemeinsame bidirektionale Leitung laufen. Es gibt jedoch auch Tools die diesen Nachteil weitestgehend ausgleichen können. Es bleibt daher zu überlegen, ob es nicht sinnvoll ist, lieber einen Chip in einem etwas größeren Gehäuse mit mehr Pins zu verwenden und dafür JTAG zu nutzen. v.a. in Sachen Selbstbaudebugger ist dies sinnvoll. [Bearbeiten] Dokumentation
[Bearbeiten] Software[Bearbeiten] Freie Tools[Bearbeiten] MSP-CCE430Dies ist die Entwicklungsumgebung von TI. Es gibt eine teure Pro-Version, aber eben auch eine Freeware-Version, die auf 16kB Codegrösse beschränkt ist. Dieser Entwicklungsumgebung liegt Eclipse zugrunde, wobei der C-Compiler und ein Debugger bereits eingebunden sind. Die Installation ist im Gegensatz zu MSPGCC kein Problem. [Bearbeiten] MSPGCCMan kann Programme für den MSP430 komplett mit freien Tools entwickeln. Mit dem C-Compiler MSPGCC, dem Debugging-Programm GDB/Insight und einem beliebigen Texteditor kann man C-Programme schreiben, kompilieren, in den Controller programmieren und debuggen. In Kombination mit MSPGCC kann man auch die freie Entwicklungsumgebung Eclipse verwenden. Direkt mit Eclipse 3.6 Helios compilieren und debuggen
Weblinks:
Achtung: Es gibt mspgcc und mspgcc4! Ersterer unterstützt keine CPUX (moderner MSP430-Prozessorkern mit 20 Bit Adressierungs- und Verarbeitungsbreite, für 1 MByte Adressraum), so ist man praktisch auf 47 KByte Code beschränkt, und ohne selbstgemachte Linker-Skripte kann man zurzeit keine MSP430F55xx programmieren. Letzterer basiert häufig auf cygwin und ist deshalb nicht so leicht in Gang zu setzen, die Dokumentation noch spärlicher und ausschließlich auf man basierend. Update(09/2011): Das Projekt mspgcc4 wurde in das Projekt mspgcc übernommen und beinhaltet viele Verbesserungen und die Unterstützung für CPUX. Für Windows gibt es eine mingw32 Toolchain. [Bearbeiten] MSPDebugMSPDebug ist ein Programmier/- Debugwerkzeug für den MSP430, ähnlich wie avrdude für die AVRs. Es beinhaltet auch einen gdb-server um in eclipse oder direkt mit msp430-gdb zu debuggen. Momentan (0.21) unterstütze Programmer/Debugger (aus der Hilfe übernommen):
Er läuft unter Linux, *BSD, OS/X und Windows. Weblinks: [Bearbeiten] MSP430 Instruction Set SimulatorDie Firma Lauterbach bietet unter der Artikelnummer LA-8815 einen Instruction Set Simulator für den MSP430 an. Die Demoversion ist zur Evaluierung kostenlos. Einschränkungen bestehen in der Anzahl der zu ladenen Debugsymbole, was jedoch für die meisten (teils auch kleineren) Hobbyanwendungen kein Problem darstellen sollte. Der Simulator unterstützt alle gängigen MSP430 Derivate, d.h. beide Instruction Sets (16bit/20bit CPUs). Der Simulator lädt alle gängigen Debugformate, wie die des IAR Compilers, des Code Composer Studios von TI oder des freien Tools MSPGCC. Zum Simulator gäbe es entsprechende zugehörige Debugtools für den MSP430, die käuflich zu erwerben sind.
Der Screenshot zeigt ein Beispiel mit Quellcode (HLL/ASM mixed), Register/Stack Fenster, Breakpoint-Konfiguration, Variablenansicht, Stackframe und Darstellung des anfänglichen RAM Inhalts.
[Bearbeiten] MSP430 ForthMecrisp ist eine Forth-Implementation, die direkt im Microcontroller läuft und über eine serielle Schnittstelle angesprochen wird. Momentan werden die Chips MSP430F2274 und MSP430G2553 unterstützt. Weblinks:
Weblinks:
Weblinks:
[Bearbeiten] Kommerzielle Compiler für MSP430
[Bearbeiten] Beispielanwendungen[Bearbeiten] Mathar.ComAuf http://www.mathar.com gibt es ein paar Beispiele (in C), was man so alles mit dem MSP430 anstellen kann. Dort hat der Autor einige Anwendungen näher erläutert. Angefangen mit simplen Aufgaben wie LEDs leuchten lassen geht es weiter über eine LCD- und GLCD-Ansteuerung (HD44780- und KS0108-kompatibel) sowie einigen Beispielen zur Verwendung des integrierten A/D-Wandlers, des USARTs, des Timers und vielem mehr ... Als weitere Codebeispiele sind dort auch eine I2C-Softwareimplementation und eine CAN-Library für den MSP430 zu finden. [Bearbeiten] Examples Ordner der freien Toolchain MSPGCCDer "examples"-Ordner bzw. "checkout" aus dem CVS vom MSPGCC ist auch sehr umfangreich: http://mspgcc.cvs.sourceforge.net/mspgcc/examples/ [Bearbeiten] Codebeispiele auf Mikrokontroller.netEinige MSP430 Codebeispiele finden sich auch hier in der Artikelsammlung. [Bearbeiten] uIP Port auf Mikrokontroller.netDer Port des TCP/IP Stacks von Adam Dunkels uIP 1.0 für den MSP430 findet sich hier.
[Bearbeiten] Launchpad interne Temp. Messung mit ADC und Anzeige auf LCDC Codebeispiel für Launchpad mit IAR Kickstartcompiler, interner ADc und LCD Ansteuerung. Vergleich Atmel 8 Bit AVR Controller und mit MSP Familie: [8] [Bearbeiten] Links
[Bearbeiten] Bezugsquellen[Bearbeiten] Evaluation Boards |