=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; } } /*--------------------------------------------------------------------*/ ">