我用了MPALB中的MCC生成PWM訊號並且在PWM訊號的CODE中更改了使他生成的不只是PWM而是SPWM但是我現在遇到的問題是我是用學長的閉迴路檔案自己改成開迴路但是始終無法成功

unsigned short phase=0, ZeroCrossing=0;
unsigned short i=0, j=1, k=0;
const int16_t Vdc = 574; //VDC = 48V
//open loop table
const int16_t VrefTable[334]={
{0},{38},{76},{114},{153},{191},{229},{267},{305},{343},{381},{419},{457},{495},{533},{571},{608},{646},{684},{721},{759},{796},{834},{871},{908},{945},{982},{1019},{1056},{1093},{1130},{1166},{1203},{1239},{1276},{1312},{1348},{1384},{1420},{1455},{1491},{1526},{1562},{1597},{1632},{1667},{1701},{1736},{1770},{1805},{1839},{1873},{1906},{1940},{1973},{2007},{2040},{2073},{2105},{2138},{2170},{2202},{2234},{2266},{2298},{2329},{2360},{2391},{2422},{2452},{2483},{2513},{2543},{2572},{2602},{2631},{2660},{2688},{2717},{2745},{2773},{2801},{2828},{2856},{2883},{2909},{2936},{2962},{2988},{3014},{3039},{3064},{3089},{3114},{3138},{3162},{3186},{3209},{3233},{3256},{3278},{3301},{3323},{3344},{3366},{3387},{3408},{3428},{3449},{3469},{3488},{3508},{3527},{3545},{3564},{3582},{3600},{3617},{3634},{3651},{3668},{3684},{3700},{3715},{3730},{3745},{3760},{3774},{3788},{3801},{3814},{3827},{3840},{3852},{3864},{3875},{3886},{3897},{3908},{3918},{3927},{3937},{3946},{3955},{3963},{3971},{3979},{3986},{3993},{4000},{4006},{4012},{4017},{4022},{4027},{4032},{4036},{4040},{4043},{4046},{4049},{4051},{4053},{4055},{4056},{4057},{4057},{4058},{4057},{4057},{4056},{4055},{4053},{4051},{4049},{4046},{4043},{4040},{4036},{4032},{4027},{4022},{4017},{4012},{4006},{4000},{3993},{3986},{3979},{3971},{3963},{3955},{3946},{3937},{3927},{3918},{3908},{3897},{3886},{3875},{3864},{3852},{3840},{3827},{3814},{3801},{3788},{3774},{3760},{3745},{3730},{3715},{3700},{3684},{3668},{3651},{3634},{3617},{3600},{3582},{3564},{3545},{3527},{3508},{3488},{3469},{3449},{3428},{3408},{3387},{3366},{3344},{3323},{3301},{3278},{3256},{3233},{3209},{3186},{3162},{3138},{3114},{3089},{3064},{3039},{3014},{2988},{2962},{2936},{2909},{2883},{2856},{2828},{2801},{2773},{2745},{2717},{2688},{2660},{2631},{2602},{2572},{2543},{2513},{2483},{2452},{2422},{2391},{2360},{2329},{2298},{2266},{2234},{2202},{2170},{2138},{2105},{2073},{2040},{2007},{1973},{1940},{1906},{1873},{1839},{1805},{1770},{1736},{1701},{1667},{1632},{1597},{1562},{1526},{1491},{1455},{1420},{1384},{1348},{1312},{1276},{1239},{1203},{1166},{1130},{1093},{1056},{1019},{982},{945},{908},{871},{834},{796},{759},{721},{684},{646},{608},{571},{533},{495},{457},{419},{381},{343},{305},{267},{229},{191},{153},{114},{76},{38}
};
int32_t Buck_PWM = 0, Boost_PWM = 0;
int32_t boost_dynamic_coefficient = 0;
int16_t finallyDuty_buck = 0;
int16_t finallyDuty_boost = 0;
int32_t B_Coefficient_BOOST_finally[3]={0,0,0};
void __attribute__ ((weak)) PWM_Generator1_CallBack(void)
{
// Add Application code here
ZeroCrossing = PORTDbits.RD0 ^ phase;
phase = PORTDbits.RD0;
if ( ZeroCrossing == 1 || i > 333 ) i = 0;
if ( VrefTable[i] >= Vdc ) {
BOOST_DUTY();
if ( phase == 1 ) Buck_PWM = 12500;
else Buck_PWM = 0;
}
else{
BUCK_DUTY();
Boost_PWM = 0;
}
//PG1DC = Buck_PWM;
//PG2DC = Boost_PWM;
}
void BOOST_DUTY()
{
Boost_PWM = VrefTable[i] - Vdc;
Boost_PWM *= 12500;
Boost_PWM /= VrefTable[i] + Vdc;
if ( Boost_PWM >= 12500) Boost_PWM = 12500;
else if (Boost_PWM <= 0) Boost_PWM = 0;
}
void BUCK_DUTY()
{
Buck_PWM = VrefTable[i];
Buck_PWM *= 6250;
Buck_PWM /= Vdc;
if ( phase == 1 ){
Buck_PWM = 6250 + Buck_PWM;
}
else {
Buck_PWM = 6250 - Buck_PWM;
}
if ( Buck_PWM >= 12500) Buck_PWM = 12500;
else if (Buck_PWM <= 0) Buck_PWM = 0;
}
void PWM_SetGenerator1InterruptHandler(void *handler)
{
PWM_Generator1InterruptHandler = handler;
}
void __attribute__ ( ( interrupt, no_auto_psv ) ) _PWM1Interrupt ( )
{
if(PWM_Generator1InterruptHandler)
{
// PWM Generator1 interrupt handler function
PWM_Generator1InterruptHandler();
}
// clear the PWM Generator1 interrupt flag
IFS4bits.PWM1IF = 0;
}
void __attribute__ ((weak)) PWM_Generator2_CallBack(void)
{
// Add Application code here
}
void PWM_Generator2_Tasks(void)
{
if(IFS4bits.PWM2IF)
{
// PWM Generator2 callback function
PWM_Generator2_CallBack();
// clear the PWM Generator2 interrupt flag
IFS4bits.PWM2IF = 0;
}
}
void __attribute__ ((weak)) PWM_Generator7_CallBack(void)
{
// Add Application code here
if ( j > 10 ) j = 1;
if ( j <= 5 ) {
PG7DC = 52083;
}
else {
PG7DC = 0x00;
}
j++;
}