implementation {
command error_t Init.init()
{
+ uint16_t i;
+
+#if defined (CALDCO_8MHZ_) && !defined(__DisableCalData)
if (CALBC1_8MHZ != 0xff || CALDCO_8MHZ != 0xff) {
/* Use built-in constant */
atomic {
BCSCTL2 = SELM_0 | DIVM_0 | DIVS_3;
DCOCTL = CALDCO_8MHZ;
- /* Turn on TimerB, aka the 32KHz clock */
- TBCTL |= MC1;
+ /* Turn on TimerB, driven by ACLK */
+ TBCTL |= MC_2;
}
return SUCCESS;
- } else {
- /* Constant not present; calibrate on the fly */
- int i;
-
- for (i = 0; i < 0xfffe; i++); /* ensure LFXT1 is stable */
- return call SubInit.init();
}
+#endif
+
+ /* Calibrate DCOCLK to ACLK when calibration data are disabled or erased */
+ for (i = 0; i < 0xfffe; i++); /* ensure LFXT1 is stable */
+ return call SubInit.init();
}
event void Msp430ClockInit.setupDcoCalibrate()
event void Msp430ClockInit.initClocks()
{
- /* We run at 8MHz, so SMCLK divider needs to be /8 */
call Msp430ClockInit.defaultInitClocks();
- BCSCTL2 |= DIVS_3;
}
event void Msp430ClockInit.initTimerA()