This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

PWM program problem

=period_reg-100){
deltaKLa[k]=period_reg+1;
}
if(deltaKLb[k]>=period_reg-100){
deltaKLb[k]=period_reg+1;
}



printf("%d ",k);
printf("La=%d ,Lb=%d \n",deltaKLa[k],deltaKLb[k] );

}

PWM_Init();
PWM_PEC_init();
CC_PEC_init();


PWMCON0=PWMCON0+0x000F; /* PTR0=1;PTR1=1;PTR2=1,PTR3=1 RUN PWM CHANNEL 0,1 */
DP2=DP2+0x00007; /* Set P2.0,P2.1 as Output */
P2=P2+0x00007; /* P2.0,P2.1-->high, Enable Driver output */
while(1){


}

}


/***********************************/
/* Init Capture/Compare for PEC service */
/***********************************/
void CC_PEC_init(void){

CCM2=0x0020; /* ACC9=1; CCMOD9=0x2 ---> negetive edge; */
DP2=0x0000; /* SEt P2 as input */
EXICON=0x0002; /* Fast External Interrupt Enable */
CC9IC=0x007E; /* Capture ch9 for PEC priority level 15,group 2 */

}


/************************************/
/* Init PWM module for PEC service */
/************************************/

void PWM_PEC_init(void) {

PWMIC= 0x007F; /*Set PWM Interrupt priority level 15,groupt 3 */
PECC7=PECC7_init; /*Initialize PECC7 for PWM module */
SRCP7=(int)&deltaKLa[1];
DSTP7=(int)&PW0;

PECC6=PECC6_init;
SRCP6=(int)&deltaKLb[1];
DSTP6=(int)&PW1;

}


/***********************/
/* PWM Init /
/***********************/
void PWM_Init(void){

PWMCON0=0x0100; /* PTx = CLK cpu ,ENABLE CHANNEL 0 INTERRUPT,*/
PWMCON1=0x003F; /* PWM CHANNEL 1,2 ENABLE IN MODE 1 */
DP7=0x000F; /* SET P7.0,P7.1,P7.2 as OUTPUT */
P7=0x0008; /* Inverted PWM. */
PT2=PT1=PT0=0x0000;
PP1=PP0=period_reg; /* Pulse witdh period */
PP2=PP3=2*period_reg+1;
PW0=deltaKLa[1];
PW1=deltaKLb[1];
PW2=PW3=period_reg;

//PW2=period_reg/2;
//PP2=period_reg;
}

/*==================================================================*/
/* PWM Interrupt
/*==================================================================*/

void PWM_0 (void) interrupt 0x3F using S_RBANK {


//PIR0=0; /* Clear Interrut request flag PWM channel 0 */
//PWMIR=0;
PECC7=PECC7_init;
SRCP7=(unsigned short)&deltaKLa[1];

//SRCP6=(unsigned short)&deltaKLb[1];
//PECC6=PECC6_init;

}

/*==================================================================*/

/*==================================================================*/






/*===================================================================*/
/* PULSE GENERATOR
/*===================================================================*/
void pulse (void) {

DP2=0xFFFF;
ODP2=0x00FF;

while(1){
P7= 0xFF;
delay (20000);

P7=0x00;
delay (20000);
}
}

/*===================================================================*/
/* Funtion delay
/*===================================================================*/
void delay (int i)
{

while(i>0) {
i=i-1;
}
}
/*--------------------------------------------------------------------*/
">

0