Difference between revisions of "Chips msp430"
(7 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{TocRight}} |
|||
⚫ | |||
== Toolchain == |
|||
⚫ | |||
* http://mspgcc.sourceforge.net/ |
|||
* Ubuntu 11.10 (Oneric) has the packages in the main repository. |
|||
: To install it for Ubuntu 11.10 or higher: |
|||
sudo apt-get install gcc-msp430 |
|||
: You might also be interested in these debugger packages: |
|||
sudo apt-get install gdb-msp430 mspdebug |
|||
== Documentation == |
|||
The documentation supplied with mspgcc is very comprehensive and describes the MCU in great detail. Can be found here http://mspgcc.sourceforge.net/manual/. This could be very good introductory material for this MCU. |
The documentation supplied with mspgcc is very comprehensive and describes the MCU in great detail. Can be found here http://mspgcc.sourceforge.net/manual/. This could be very good introductory material for this MCU. |
||
== Parts == |
|||
Tmote Sky sensor module is equipped with MSP430 F1611 MCU. According to mspgcc docs on how to decode MSP430 part numbers (http://mspgcc.sourceforge.net/manual/x675.html). |
Tmote Sky sensor module is equipped with MSP430 F1611 MCU. According to mspgcc docs on how to decode MSP430 part numbers (http://mspgcc.sourceforge.net/manual/x675.html). |
||
Line 13: | Line 28: | ||
Key documents about this MCU: |
Key documents about this MCU: |
||
* [http://www.ti.com/ |
* [http://www.ti.com/litv/pdf/slau049f MSP430F15x/16x/161x MSP430x1xx Family User's Guide (Rev. F)] |
||
* [http://www.ti.com/ |
* [http://www.ti.com/lit/gpn/msp430f1611 MSP430x15x, MSP430x16x, MSP430x161x Mixed Signal Microcontroller (Rev. E) (Datasheet)] |
||
* [http://www.ti.com/litv/pdf/ |
* [http://www.ti.com/litv/pdf/slaz018b MSP430F15x/16x/161x Device Erratasheet (Rev. B)] |
||
== Software Notes == |
|||
===Word align requirement === |
|||
Msp430 is a 16-bit processor. Note, that it requires certain 16-bit register and memory transfer operation source also to be 16-bit word aligned in the memory. I.e., the address must be divisible by 2. |
|||
In some cases automatic word-alignment of 16-bit words might create unexpected surprises. For example, the following structure is really 10 bytes long, instead of 8. This might hurt you if you try to fit it with a packet that has less than 10 bytes for the payload space. |
|||
struct { |
|||
uint16_t w1; |
|||
uint8_t b1; |
|||
uint16_t w2; |
|||
uint8_t b2; |
|||
uint16_t w3; |
|||
}; |
|||
If you don't want that to happen, use __attribute__((packed)). With it correct (but slower!) code will be generated for accessing unaligned member variables. |
|||
So, watch out! |
Latest revision as of 00:49, 25 November 2011
Toolchain
MSP430 MCU GCC toolchain can be found here:
- http://mspgcc.sourceforge.net/
- Ubuntu 11.10 (Oneric) has the packages in the main repository.
- To install it for Ubuntu 11.10 or higher:
sudo apt-get install gcc-msp430
- You might also be interested in these debugger packages:
sudo apt-get install gdb-msp430 mspdebug
Documentation
The documentation supplied with mspgcc is very comprehensive and describes the MCU in great detail. Can be found here http://mspgcc.sourceforge.net/manual/. This could be very good introductory material for this MCU.
Parts
Tmote Sky sensor module is equipped with MSP430 F1611 MCU. According to mspgcc docs on how to decode MSP430 part numbers (http://mspgcc.sourceforge.net/manual/x675.html).
F1611 - stands for:
- F - Flash ROM,
- 16xx - Like 14x, but adding 2xDAC12, 3xDMA, brownout reset and I2C,
- xx11 - 48K ROM, 10K RAM
Manufacturers page for this MCU - http://focus.ti.com/docs/prod/folders/print/msp430f1611.html.
Key documents about this MCU:
- MSP430F15x/16x/161x MSP430x1xx Family User's Guide (Rev. F)
- MSP430x15x, MSP430x16x, MSP430x161x Mixed Signal Microcontroller (Rev. E) (Datasheet)
- MSP430F15x/16x/161x Device Erratasheet (Rev. B)
Software Notes
Word align requirement
Msp430 is a 16-bit processor. Note, that it requires certain 16-bit register and memory transfer operation source also to be 16-bit word aligned in the memory. I.e., the address must be divisible by 2.
In some cases automatic word-alignment of 16-bit words might create unexpected surprises. For example, the following structure is really 10 bytes long, instead of 8. This might hurt you if you try to fit it with a packet that has less than 10 bytes for the payload space.
struct { uint16_t w1; uint8_t b1; uint16_t w2; uint8_t b2; uint16_t w3; };
If you don't want that to happen, use __attribute__((packed)). With it correct (but slower!) code will be generated for accessing unaligned member variables.
So, watch out!