TuX as LLG logo
Software
DMX4Linux
Driver Suite for Linux
csv2iif.pl suite
convert PayPal transactions to IIF, OFX, QIF
Hardware
DMX30 Interface
128Ch SPP
DMX43 Interface
2out 2in EPP
LED Hardware
for Linux and Windows
EPROM Sampler
for 8 bits of sound
Misc
CatWeasel
Linux drivers for MK3/4 PCI
pg_trompe
PostgreSQL replication
trycatch
C exception/signal handling lib
Patches
to various software
Tools
and small scripts
Docs
misc documents
Links
to lighting stuff

TI MSP430 Notes

Every platform beeing it hardware of software has some oddities you should be aware of for maximum coding pleasure. The advises below are based on our experience we gathered while making the DMX43 Project.

CPU

If you mov some byte values into a register the upper byte of the register will be cleared. This differs from x86 CPUs!. Example:
mov   0x1122, R15
mov.b 0xff,   R15
R15 now contains the value 0x00FF and not 0x11FF.

Oscilators

The MSP430 is very afraid of loosing external oscilator/clock sources. If anything suspicious happens with external clocks the MSP will fall back to its internal clock generators. Upon fall back an osc fail interrupt is triggered. This osc failure is so sensitive that it triggers if you apply an oscilloscope to the clock source and even if you touch the contacts with your finger!

If an osc fail interrupt is triggered you should simply reset the external clock source and the system. A nice solution is the following program layout:

; startup code
startup:
call    #osc_setup
...

; subroutine to set up external clocks
osc_setup:
bis.b	#XTS,	&BCSCTL1 ; select XT1
...
ret

; interrupt routine for osc failure, flash violation and nmi
osc_failure_interrupt:
dint
bit.b	#OFIFG,	&IFG1
jz	next1
call	#osc_setup
jmp     return
next1:  bit.b   #NMIIE, &IFG1
jz      next2
...
jmp     return
next2:  bit.b   #ACCVIE,&IFG1
jz      return
...
return:	eint
reti

BSL Bootstrap Loader

Some revisions of the MSP430 have bugs in their internal boot strap loader. BSL version < 1.10 have to be patched to provide write access to addresses > 0x8000. You have to apply this patch every time you issued a write operation into either the ram or flash area of the MSP or subsequent writes will fail.

Links

GCC and binutils for MSP430. They also have a Python BSL.

ASL assembler a powerfull macro assembler for every important processor on earth.

bslsh BSL frontend for un*x OS.

MSP430F149 test board you could use, if you don't want to solder those little smd devices for yourself.

Pong


Search:
https://llg.cubic.org/dmx43 © 2001-2024 by Dirk Jagdmann and Michael Stickel