The MSP430 microcontroller CPU architecture provides a constant generator that can generate constants for the most commonly used bits: -1, 0, 1, 2, 4, and 8 (1, 2, 4, 8 are the lower 4 bits in a byte). These constants are directly available for instructions that require access/compare against the aforementioned values. On the other hand, access/compare with other values requires additional cycles for the instruction. Hence, it is best to leverage these constants in the application code whenever possible. The benefit becomes more visible when the access/comparison is repeated in a loop structure. One of the most common use-cases is comparing a program flow controlling variable against certain flags. It would be therefore more power-effective to use the lower 4-bits as the program flow controlling flags.
Using a regular bit/value instead of the lower 4 bits for program flow control can add additional clock cycle for each comparison instruction. In a loop structure, the additional cycles executed can add up depending on the number of iterations the program has to go through.
The code contains at least one loop program flow controlling flag
that is not one of the 4 lower bits (1, 2, 4, 8 or BIT0, BIT1,
BIT2, BIT3)
If possible, change the loop program flow controlling flag(s) to be one of the 4 lower bits.
#define FLAG_1 1 #define FLAG_2 2 #define FLAG_3 4 #define FLAG_4 8 void main(void) { unsigned int i, variable=FLAG_1; while ( variable & FLAG_1) { /* Execute application code */ } }
See the rest of the code examples for all MSP430 devices here!
Want to squeeze a few more nanoAmps out of your application? Leverage the e2e (Engineer-to-Engineer) online community to get all of your ULP questions answered! Or, if you are an Ultra-Low Power pro, give back to the community with your expertise.
Go to MSP430's e2e online forum!
If you are posting on the forums in relation to this rule, try using the tag "ULP_11.1"
For technical support please post your questions at http://e2e.ti.com. Please post only comments about the article Compiler/diagnostic messages/MSP430/1539 here. |