int
pxmc_pxmcc_pwm3ph_out(pxmc_state_t *mcs)
{
+ int32_t cur_d_raw;
+ int32_t cur_q_raw;
+ pxmc_rocon_state_t *mcsrc = pxmc_state2rocon_state(mcs);
+
if (!(mcs->pxms_flg & PXMS_PTI_m) || !(mcs->pxms_flg & PXMS_PHA_m) ||
(mcs->pxms_flg & PXMS_PRA_m)) {
short ptindx;
}
}
+ pxmcc_axis_get_cur_dq_filt_raw(mcs, &cur_d_raw, &cur_q_raw);
+
{
/*wind_current[0]=(ADC->ADDR0 & 0xFFF0)>>4;*/
/* FIXME - check winding current against limit */
pwm_d = 0;
pwm_q = (pxmc_rocon_pwm_magnitude * ene) >> 15;
+ if (mcs->pxms_flg & (PXMS_ENR_m | PXMS_ENO_m)) {
+ int cur_d;
+ int cur_d_req, cur_d_err;
+ int max_pwm = (pxmc_rocon_pwm_magnitude * mcs->pxms_me) >> 15;
+
+ cur_d_req = 0;
+
+ pxmcc_axis_cur_dq_raw2filt(&cur_d, cur_d_raw);
+
+ cur_d_err = cur_d_req - cur_d;
+
+ pxmcc_cur_ctrl_pi(&pwm_d, &mcsrc->cur_d_err_sum, cur_d_err,
+ mcsrc->cur_d_p, mcsrc->cur_d_i, max_pwm);
+ }
+
pxmcc_axis_pwm_dq_out(mcs, pwm_d, pwm_q);
if (mcs->pxms_flg & PXMS_ERR_m)