But there are some "gotchas" that you should be aware of that can cause a headache.
14) When C-SPY controls the device, the CPU is in a state (that is, it is not in low power mode) regardless of the settings of the low-power mode bit in the status register. Any conditions of the low power mode restored to a step or transition. Therefore, do not measure the power consumed by the device, but C-SPY controls the device. Instead, launch the app using Go with the JTAG release.
19) C-SPY uses the system clock to control the device during debugging. Therefore , device counters, etc., which are synchronized. The main system clock (MCLK) is affected when C-SPY monitors the device . Special precautions are taken to minimize exposure to the Watchdog Timer. CPU registers are saved. All other clock sources (SMCLK, ACLK) and peripherals continue to function normally during emulation. In other words, the Flash Emulation Tool is a partially intrusive tool .
Devices that support synchronization control (emulator β Advanced β Clock Control) can further minimize these effects by choosing to stop the clock (s) during debugging
24) The peripheral bits that are cleared when reading during a regular program execution (i.e. interrupt flags) are cleared when reading while being debugged (that is, a memory dump, peripheral registers).
When using some MSP430 devices (such as MSP430F15x, MSP430F16x, MSP430F43x and MSP430F44x), the bits do not behave this way (that is, the bits are not cleared using C-SPY reads).
26) While one step with active and enabled interrupts, it can only active interrupt service (ISR) is active (that, non-ISR code is never executed, and one step the operation always stops in the first line of the ISR ) However, this behavior is correct because the device always processes the active and enabled interrupt before processing code other than the ISR (that is, the main one). A workaround for this behavior is to disable the GIE bit on the stack within the ISR, so interrupts are disabled after the ISR exits. This allows you to debug code without ISR (but without interrupting). Interrupts can later be re-enabled by setting GIE to in the register.
On devices with the synchronization control emulation function, it is possible to pause synchronization between individual steps and delay the interrupt request (Emulator β Advanced β Clock Management).
One thing to try is to comment out all the low-power code and see if your UART code works. Then go back and try turning low power mode back on.