If you are using Codewarrior, you can get example code through processor expert. Note, the MC56F8006 has the same PWM as other DSC devices such as 56F8013.
Here is an example of the PWM intialization in processor expert for complementary PWM on the 56F8013
** ===================================================================
** Method : PWM1_Init (component Init_PWM)
**
** Description :
** Peripheral Initialization Beans provide a low-level
** hardware approach to initialize registers of the
** peripheral module. They are intended for experienced
** users.
** Parameters : None
** Returns : Nothing
** ===================================================================
*/
void PWM1_Init(void)
{
/* PWM_PMCTL: LDFQ=1,HALF=0,IPOL2=0,IPOL1=0,IPOL0=0,PRSC=0,PWMRIE=0,PWMF=0,??=0,??=0,LDOK=0,PWMEN=0 */
setReg16(PWM_PMCTL, 4096U);
/* PWM_PMFCTL: ??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,FIE3=0,FMODE3=0,FIE2=0,FMODE2=0,FIE1=0,FMODE1=0,FIE0=0,FMODE0=0 */
setReg16(PWM_PMFCTL, 0U);
/* PWM_PWMCM: ??=0,CM=800 */
setReg16(PWM_PWMCM, 800U);
/* PWM_PWMVAL0: VAL=400 */
setReg16(PWM_PWMVAL0, 400U);
/* PWM_PWMVAL1: VAL=400 */
setReg16(PWM_PWMVAL1, 400U);
/* PWM_PWMVAL2: VAL=400 */
setReg16(PWM_PWMVAL2, 400U);
/* PWM_PWMVAL3: VAL=400 */
setReg16(PWM_PWMVAL3, 400U);
/* PWM_PWMVAL4: VAL=400 */
setReg16(PWM_PWMVAL4, 400U);
/* PWM_PWMVAL5: VAL=400 */
setReg16(PWM_PWMVAL5, 400U);
/* PWM_PMDISMAP1: DISMAP=4369 */
setReg16(PWM_PMDISMAP1, 4369U);
/* PWM_PMDISMAP2: ??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,DISMAP=17 */
setReg16(PWM_PMDISMAP2, 17U);
/* PWM_PMDEADTM0: ??=0,??=0,??=0,??=0,PWMDT0=32 */
setReg16(PWM_PMDEADTM0, 32U);
/* PWM_PMDEADTM1: ??=0,??=0,??=0,??=0,PWMDT1=32 */
setReg16(PWM_PMDEADTM1, 32U);
/* PWM_PMCCR: ENHA=0,nBX=0,MSK=0,??=0,??=0,VLMODE=0,??=0,SWP45=0,SWP23=0,SWP01=0 */
setReg16(PWM_PMCCR, 0U);
/* PWM_PMOUT: PAD_EN=0,??=0,OUTCTL=0,??=0,??=0,OUT=0 */
setReg16(PWM_PMOUT, 0U);
/* PWM_PMICCR: ??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,ICC2=0,ICC1=0,ICC0=0 */
setReg16(PWM_PMICCR, 0U);
/* PWM_PMSRC: ??=0,??=0,CINV5=0,CINV4=0,CINV3=0,CINV2=0,CINV1=0,CINV0=0,SRC2=0,SRC1=0,SRC0=0 */
setReg16(PWM_PMSRC, 0U);
/* PWM_PMCFG: ??=0,DBG_EN=0,WAIT_EN=0,EDG=0,??=0,TOPNEG45=0,TOPNEG23=0,TOPNEG01=0,??=0,BOTNEG45=0,BOTNEG23=0,BOTNEG01=0,INDEP45=0,INDEP23=0,INDEP01=0,WP=0 */
setReg16(PWM_PMCFG, 0U);
/* PWM_PMFSA: FPIN3=0,FFLAG3=0,FPIN2=0,FFLAG2=0,FPIN1=0,FFLAG1=0,FPIN0=0,FFLAG0=0,??=0,FTACK3=1,DT5=0,DT4_FTACK2=1,DT3=0,DT2_FTACK1=1,DT1=0,DT0_FTACK0=1 */
setReg16(PWM_PMFSA, 85U); /* clear fault flags */
/* PWM_PMFCTL: ??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,FIE3=0,FMODE3=0,FIE2=0,FMODE2=0,FIE1=0,FMODE1=0,FIE0=1,FMODE0=0 */
setReg16(PWM_PMFCTL, 2U);
/* PWM_PMCTL: LDOK=1 */
setReg16Bits(PWM_PMCTL, 2U); /* set LDOK bit */
/* PWM_PMCTL: PWMEN=1 */
setReg16Bits(PWM_PMCTL, 1U); /* set PWMEN bit */
/* PWM_PMCTL: PWMF=0 */
clrReg16Bits(PWM_PMCTL, 16U); /* clear PWMF flag */
}
/* END PWM1. */