Hi,
For the past couple of days I've been investigating a hang that I've been getting on an msp430g2452 fitted to a launchpad. I narrowed down the issue to some code that was attempting to change the DCO frequency. This was surprising as I'd been careful to apply the workarounds mentioned in the BCL12 erratum (as of October 2012). Also, I was sourcing MCLK from DCO/8 so as not to exceed 16MHz. Despite this my program was freezing up, and I was getting the following message in the debugger output:
MSP430: Can't Single Step Target Program: Error during step; unknown state
MSP430: Trouble Halting Target CPU: Could not terminate EEM polling thread.
The same code worked fine on a msp430g2553 and a msp430g2001 (unfortunately I only have one 2452 chip). After boiling down the problem code to a minimal test program, I found that the 2452's DCO was locking up if I tried to set DCOCTL to a value greater than 0xCF before setting RSEL to 15 (while respecting BCL12). The VLO was still running, and I was even able clock TimerA from the VLO to flash a LED after the CPU had hung. Attempting the same with TimerA clocked by DCO produced no flashes. The WDT+ was unable to reset the chip irrespective of its clock source.
Before posting a message about this I decided to take one last look at the errata page to see if there were any updates. Sure enough, all the value line errata files were updated on 17th January. Reading BCL12, I noticed this addition:
"In the majority of cases switching directly to intermediate RSEL steps as described above will prevent the occurrence of BCL12. However, a more reliable method can be implemented by changing the RSEL bits step by step in order to guarantee safe function without any dead time of the DCO."
I tried this suggestion in my test program, and while it allowed me to raise DCOCTL to 0xD7 safely I still get a hang if I go higher than that.
Is that a known issue?
Thanks, Rob
[EDIT] To clarify my question, I'd like to know whether the new BCL12 advice quoted above is expected to completely resolve the DCO lockup issue. The words "a more reliable method" imply it might only be a partial fix, while "guarantee safe function" suggests the opposite.