User Tools

Site Tools


tutorials:microcontroller_programming_tips

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tutorials:microcontroller_programming_tips [2024/10/29 20:28] ibchadmintutorials:microcontroller_programming_tips [2024/10/29 20:32] (current) ibchadmin
Line 1: Line 1:
 ====== Microcontroller Programming Tips ====== ====== Microcontroller Programming Tips ======
  
-When programming microcontrollers, a few things will be different from what you’re used to on a laptop.+When programming microcontrollers, a few things will be different from what you’re used to on a laptop.  The tips written below assume you are working on an [[microcontrollers:msp430|MSP430]], but is broadly applicable to most microcontrollers used in intermittent/batteryless contexts as well.
  
 **Registers:** You will often be interacting with hardware by writing to and reading from registers. These registers have names, just like variables. Often you will use bit-wise operations, like & and | to set or clear a single bit in the register. **Registers:** You will often be interacting with hardware by writing to and reading from registers. These registers have names, just like variables. Often you will use bit-wise operations, like & and | to set or clear a single bit in the register.
Line 20: Line 20:
 **UART/SPI/I2C:** These are three common serial communication technologies that are all supported by the MSP430. If you ever need to send or receive binary data from another microcontroller, sensor, or other component, you will probably be using one of these three. UART is probably the simplest. SPI is probably the most common.  **UART/SPI/I2C:** These are three common serial communication technologies that are all supported by the MSP430. If you ever need to send or receive binary data from another microcontroller, sensor, or other component, you will probably be using one of these three. UART is probably the simplest. SPI is probably the most common. 
  
-**Memory:** The MSP430s we use have very little RAM (usually 2Kb). This means that the usual games you play on your laptop have to change. For one, we generally do not use dynamic memory allocation — no malloc, calloc, realloc, free, new. Everything is static. The reason is that with so little memory, having a heap that grows dynamically at runtime makes things really hard to debug. Your stack grows from one end of that 2KB. Your globals go on the other end. If your stack ever grows too large, it will start overwriting the globals (or the heap, if you have one). For this reason, we have a fairly strict no-heap policy. It just makes life easier.+**Memory:** The MSP430s typically used have very little RAM (usually 2Kb). This means that the usual games you play on your laptop have to change. For one, we generally do not use dynamic memory allocation — no malloc, calloc, realloc, free, new. Everything is static. The reason is that with so little memory, having a heap that grows dynamically at runtime makes things really hard to debug. Your stack grows from one end of that 2KB. Your globals go on the other end. If your stack ever grows too large, it will start overwriting the globals (or the heap, if you have one).
 Note, that recursion, deep function call graphs, and passing large arrays or structs as parameters are similarly dangerous. You want to keep your stack small, so it doesn’t run over your globals. Note, that recursion, deep function call graphs, and passing large arrays or structs as parameters are similarly dangerous. You want to keep your stack small, so it doesn’t run over your globals.
  
-**FRAM:** RAM may be tight, but you do have FRAM to use. FRAM is like Flash memory (it’s nonvolatile) but faster and less complicated to use. On the MSP430s, your code is stored in FRAM, and the remaining FRAM is available for data that you want to keep around even if your device reboots. +**FRAM:** RAM may be tight, but you do have FRAM to use. FRAM is like Flash memory (it’s nonvolatile) but faster and less complicated to use. On the MSP430s, your code is stored in FRAM, and the remaining FRAM is available for data that you want to keep around even if your device reboots.
  
tutorials/microcontroller_programming_tips.1730233737.txt.gz · Last modified: 2024/10/29 20:28 by ibchadmin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki