CHAPTER 4 PROGRAM LIST
Application Note U17209EJ1V0AN
79
if ( init_pat >= 6 ) {
init_pat = 0 ;
if ( init_upco > 14 ) {
init_flag = 0 ;
} else {
init_upco++ ;
}
}
}
} else {
/****************************************************************************** /
/* Normal revolution processing */
/****************************************************************************** /
o_wre = abs(object_speed) * RPM_RADS * P / TH_U ; /* rpm -> radian conversion */
we = o_wre - wre ;
o_iqap = ( ( wre * KSP ) + ( we * KSP ) ) >> KSPGETA ;
o_iqa = o_iqap + ( o_iqai >> KSIGETA ) ;
if ( o_iqai > IQAMAX ) {
o_iqai = IQAMAX ;
} else if ( o_iqai < -IQAMAX ) {
o_iqai = -IQAMAX ;
} else {
o_iqai += ( KSI * we ) ;
}
pwm_value = o_iqa ;
if ( pwm_value <= 0 ) {
pwm_value = 1 ;
} else if ( pwm_value >= PWM_DATA ) {
pwm_value = ( PWM_DATA ) - 1 ;
}
wk = POER0 ;
if ( wk & 0x01 ) {
BFCM00 = 0 ;
BFCM01 = pwm_value ;
BFCM02 = pwm_value ;
} else if ( wk & 0x04 ) {
BFCM00 = pwm_value ;
BFCM01 = 0 ;
BFCM02 = pwm_value ;
} else {
BFCM00 = pwm_value ;
BFCM01 = pwm_value ;
BFCM02 = 0 ;
}