Hi Leute,
ich mache gerade meine ersten Schritte mit dem MSP430 (in Verbindung mit
MSP430-GCC unter Windows XP). Die Hardware funktioniert soweit
(MSP430F1121A im BSL-Modus über USB-Seriell-Adapter). Ich habe ein
kleines Python-Programm geschrieben, das mit dem BSL des MSP430
kommuniziert und ich kann den Controller auslesen, beschreiben, etc.
Leider läuft das einfachste Testprogramm nicht, und ich kann den Fehler
nicht finden. Das Programm soll einfach eine LED blinken lassen, die an
P1.4 angeschlossen ist. Was jedoch passiert ist, daß die LED dauerhaft
leuchtet. Dabei macht es keinen Unterschied, ob ich den Controller
resette oder den Code mittels der "Load PC" Bootloaderfunktion
anspringe. Hier das Programm:
1 | #include <signal.h>
|
2 | #include <io.h>
|
3 |
|
4 | .section .text
|
5 | RESET: mov #0x300,R1 ; Initialize stack pointer
|
6 |
|
7 | StopWDT: mov #WDTPW+WDTHOLD,&WDTCTL ; Stop WDT
|
8 |
|
9 | bis.b #0x10,&P1DIR
|
10 |
|
11 | L1: bis.b #0x10,&P1OUT
|
12 | call Delay
|
13 | bic.b #0x10,&P1OUT
|
14 | call Delay
|
15 | jmp L1
|
16 |
|
17 |
|
18 | Delay: mov #0xffff,R15
|
19 | D1: dec R15
|
20 | jnz D1
|
21 | ret
|
22 |
|
23 | .section .vectors
|
24 | .org RESET_VECTOR,0xFF
|
25 | .word RESET ; POR, ext. Reset, Watchdog
|
Das Makefile:
1 | CC=msp430-gcc
|
2 | CPPFLAGS= -g -O2 -mmcu=msp430x1121 -D_GNU_ASSEMBLER_ -nostartfiles -nostandartlibs
|
3 |
|
4 | all:
|
5 | $(CC) $(CPPFLAGS) ledblink.S -o ledblink.o
|
6 |
|
7 | hex:
|
8 | msp430-objcopy -I elf32-msp430 -O ihex ledblink.o ledblink.hex
|
9 |
|
10 | clean:
|
11 | -rm -f $(PROGS)
|
Das Intel-Hexfile, das msp430-objcopy produziert:
1 | :10F00000341231400003B240805A2001F2D0100087
|
2 | :10F010002200F2D01000210090120E00F2C0100069
|
3 | :10F02000210090120400F53F3F431F83FE2330412F
|
4 | :040000030000F00009
|
5 | :00000001FF
|
Und ein Hexdump des Controllers nach dem Flashen:
1 | f000 34 12 31 40 00 03 b2 40 80 5a 20 01 f2 d0 10 00 4.1@...@.Z .....
|
2 | f010 22 00 f2 d0 10 00 21 00 90 12 0e 00 f2 c0 10 00 ".....!.........
|
3 | f020 21 00 90 12 04 00 f5 3f 3f 43 1f 83 fe 23 30 41 !......??C...#0A
|
4 | f030 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
|
5 | f040 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
|
6 | f050 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
|
7 | f060 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
|
8 | f070 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
|