BLDC motor sürmek için daha iyi bir algoritma.

Başlatan blacklogic, 03 Ağustos 2013, 12:14:11

blacklogic

Benim yazdığım algoritma çok uzun ve kafa karıştırıcı oldu sizce daha iyi ne yapmak lazım ? PDC0H 6 bit, PDC0L8 bit bunları 0x000 dan 0x3FFF e kadar artırmam gerekiyor.

int pwm_command=0;       // Duty
int a=0; //PDC H mi L mi seçimi
int PWM0=1, PWM1=0; // Port seçimi
init_comms();
pwm_init();
while(1)
{
while(PWM0==1)
{
OVDCOND=0b00000001;
OVDCONS=0x00;

while(a==0)
{
while(pwm_command<256)
{
pwm_command++;
PDC0L++;
__delay_ms(1);
}
a=1;
}


while(a==1)
{
pwm_command=0;
while(pwm_command<64)
{
pwm_command++;
PDC0H++;
__delay_ms(1);
}
a=2;
}

while(a==2)
{
pwm_command=0;
while(pwm_command<64)
{
pwm_command++;
PDC0H--;
__delay_ms(1);
}
a=3;
}

while(a==3)
{
pwm_command=0;
while(pwm_command<256)
{
pwm_command++;
PDC0L--;
__delay_ms(1);
}
a=0;
}
PWM1=1;
PWM0=0;

}

while(PWM1==1)
{
OVDCOND=0b00000010;
OVDCONS=0x00;

while(a==0)
{
while(pwm_command<256)
{
pwm_command++;
PDC0L++;
__delay_ms(1);
}
a=1;
}


while(a==1)
{
pwm_command=0;
while(pwm_command<64)
{
pwm_command++;
PDC0H++;
__delay_ms(1);
}
a=2;
}

while(a==2)
{
pwm_command=0;
while(pwm_command<64)
{
pwm_command++;
PDC0H--;
__delay_ms(1);
}
a=3;
}

while(a==3)
{
pwm_command=0;
while(pwm_command<256)
{
pwm_command++;
PDC0L--;
__delay_ms(1);
}
a=0;
}
PWM0=1;
PWM1=0;

}

}



Çıktı ise böyle