I am using MC9S08DZ96 microcontroller and I using CodeWarrior version 11. I want to put the MCU to sleep mode(STOP3). In the CPU settings, I have changed the sleep mode setting and the relevant registers have been activated.
I know with the asm stop; command MCU goes to sleep mode. But it doesn't work. I think #define StopMode {asm STOP;} command, should be defined somewhere. Does anyone know how to define stop mode? These are my registers:
void _EntryPoint(void)
{
/* ### MC9S08DZ128_64 "Cpu" init code ... */
/* PE initialization code after reset */
/* Common initialization of the write once registers */
/* SOPT1: COPT=0,STOPE=1,SCI2PS=0,IIC1PS=0,??=0,??=0,??=0 */
setReg8(SOPT1, 0x20U);
/* SOPT2: COPCLKS=0,COPW=0,??=0,ADHTS=0,??=0,MCSEL=0 */
setReg8(SOPT2, 0x00U);
/* SPMSC1: LVWF=0,LVWACK=0,LVWIE=0,LVDRE=1,LVDSE=1,LVDE=1,??=0,BGBE=0 */
setReg8(SPMSC1, 0x1CU);
/* SPMSC2: ??=0,??=0,LVDV=0,LVWV=0,PPDF=0,PPDACK=0,??=0,PPDC=0 */
setReg8(SPMSC2, 0x00U);
/* System clock initialization */
/*lint -save -e923 Disable MISRA rule (11.3) checking. */
if (*(uint8_t*)0xFFAFU != 0xFFU) {
/* Test if the device trim value is stored on the specified address */
MCGTRM = *(uint8_t*)0xFFAFU;
/* Initialize MCGTRM register from a non volatile memory */
MCGSC = *(uint8_t*)0xFFAEU;
/* Initialize MCGSC register from a non volatile memory */
}
/*lint -restore Enable MISRA rule (11.3) checking. */
/* MCGC2: BDIV=0,RANGE=0,HGO=0,LP=0,EREFS=0,ERCLKEN=0,EREFSTEN=1 */
setReg8(MCGC2, 0x01U); /* Set MCGC2 register */
/* MCGC1: CLKS=0,RDIV=0,IREFS=1,IRCLKEN=1,IREFSTEN=1 */
setReg8(MCGC1, 0x07U); /* Set MCGC1 register */
/* MCGC3: LOLIE=0,PLLS=0,CME=0,DIV32=0,VDIV=1 */
setReg8(MCGC3, 0x01U); /* Set MCGC3 register */
/* MCGT: ??=0,??=0,DMX32=0,??=0,??=0,??=0,??=0,DRST_DRS=0 */
setReg8(MCGT, 0x00U); /* Set MCGT register */
/*** End of PE initialization code after reset ***/
/*lint -save -e950 Disable MISRA rule (1.1) checking. */
__asm jmp _Startup ; /* Jump to C startup code */
/*lint -restore Enable MISRA rule (1.1) checking. */
}