Äber die MSP430 Serie von TI gibt es reichlich Informationen im Netz, wenn man aktuelle deutschprachige Informationen sucht, wird die Luft dünner. Eine aktuelle und umfassende Quelle ist die Brandenburger LinuxUserGroup Bralug.
(Diesen Artikel habe ich schon seit 25.8.14 im Entwurf, ich denke, es ist ander Zeit es mal zu veröffentlichen. Wenn ich wesentliche Ergänzungen mache, verweise ich darauf)
Weil ich mich momentan in das Launchpad einarbeiten will, kommen einige Fragen aber auch Erkenntnisse auf, die ich hier zusammen trage.
Ich habe folgende Pakete in Jessie installiert:
apt-get install gcc-msp430 gdb-msp430 msp430-libc msp430mcu mspdebug geany
Meine erste Fragestellung war, welche Ports kann ich denn ohne Probleme und Einschränkungen mit welchem Launchpad verwenden? Das beantwortet ein genauer Blick auf das Launchpad eigentlich von selbst. (Ein klick auf das linke Bild zeigt es)
Belegung |
J1 |
J2 |
Belegung |
VCC
|
VCC
|
GND
|
GND
|
LED1 |
P1.0 |
X-IN |
X-IN |
UART |
P1.1 |
XOUT |
XOUT |
UART |
P1.2 |
TEST |
TEST |
S2 |
P1.3 |
RESET |
S1 |
|
P1.4 |
P1.7 |
|
|
P1.5 |
P1.6 |
LED2
|
|
P2.0 |
P2.5 |
|
|
P2.1 |
P2.4 |
|
|
P2.2 |
P2.3 |
|
Ich benötige eine Möglichkeit, Debug Informationen auf dem PC
auszugeben, weil ich gerade versuche ein Display anzusteuern. Bevor das
nicht funktioniert, habe ich keine Möglichkeit komplexere Informationen
nach außen zu geben. Nun stellt das Launchpad gleichzeitig mit dem USB
Anschluss einen Terminal Anschluss zur Verfügung. Ich habe immer parallel zu meinen Versuchen ein Terminal Fenster offen, indem ich
dmesg -Hw
eingebe, das ist quasi ein tail -f auf die /var/log/messages. Somit bekomme ich mit, ob das Launchpad erkannt worden ist und welche serielle Schnittstelle bereit gestellt wurde. Wichtig ist allerdings dass der Hardware UART aktiviert wurde, sonst ist nix mit per printf debuggen
Deshalb hier auch im Foto hervorgehoben, falls ich mal wieder unschlüssig bin 
Nach dem Anstöpseln benötigt Linux und das Launchpad ein paar Sekunden Zeit, damit die folgenden Schritte zuverlässig funktionieren. Ich gebe dem System ca. 10 Sekunden Zeit. Dann... (Kommentare in Grün von mir)
Zur Vorbereitung der seriellen Schnittstelle über Pseudo TTY und auch zur Kontrolle, ob das Launchpad ansprechbar ist:
mspdebug rf2500 exit
MSPDebug version 0.22 - debugging tool for MSP430 MCUs
Copyright (C) 2009-2013 Daniel Beer
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Trying to open interface 1 on 002
Initializing FET...
FET protocol version is 30394216
Set Vcc: 3000 mV
Configured for Spy-Bi-Wire
Device ID: 0x2553 # Chip ID
Code start address: 0xc000 # ...
Code size : 16384 byte = 16 kb # verfügbarer Speicher
RAM start address: 0x200 # ...
RAM end address: 0x3ff # ...
RAM size : 512 byte = 0 kb # verfügbarer Arbeitsspeicher
Device: MSP430G2553/G2403 # Chip Device
Number of breakpoints: 2
fet: FET returned NAK
warning: device does not support power profiling
Chip ID data: 25 53
Nach dieser Initialisierung kann mit
stty -F /dev/ttyACM0
geprüft werden, ob die Schnittstelle auf die im Programm angegebene Geschwindigkeit eingestellt ist.
Man braucht dann nichts weiter zu unternehmen, als mit
cat /dev/ttyACM0
die Ausgaben seines Programmes zu beobachten. Sinnvoller Weise macht man das natürlich auch in einem eigenen Fenster. Wenn die Geschwindigkeit nicht passt, z.B. wenn man es das erste Mal in dieser Sitzung macht, dann kann man mit
stty 9600 -F /dev/ttyACM0
die Geschwindigkeit seinem Programm anpassen. (Ich nehme immer 9600 Baud, weil das schön fehlerfrei bei 1Mhz Takt bei mir funktioniert)
Code compilieren:
msp430-gcc -O2 -mmcu=msp430g2553 -o blink.elf blink.c
Programm zum Launchpad übertragen:
mspdebug rf2500 "prog blink.elf"
Größe des Codes überprüfen:
Wenn man soweit fortgeschritten ist, ist das Beispielprogramm von Uwe Berger
"zyklische Ausgabe des Messwertes des internen Temperatursensors" von der ganz oben erwähnten Bralug ganz hervorragend.
Im Unterschied zu Uwe habe ich eine andere Formel für die Ausgabe der Temperatur benutzt.
uart_printf("%i°C (ADC=%i)", (((temp * 27069L - 18169625L) >> 16));
Hier gehts irgendwann mal weiter
Continue reading "MSP430 Launchpad" »