casainho
10 GW
- Joined
- Feb 14, 2011
- Messages
- 6,058
I do have for 6 steps commutation code, it is pretty basic! I did that about 10 months ago (26 May 2017):nieles said:if the current code doesn't fit, then we might want to rethink this whole idea and go for an external controller. or do you also already have code for 6 step commutation?

So basic the base code for 6 steps:
Code:
void hall_sensors_read_and_action (void)
{
unsigned char hall_sensors = 0;
// read hall sensors signal pins and mask other pins
hall_sensors = (GPIO_ReadInputData (HALL_SENSORS__PORT) & (HALL_SENSORS_MASK));
switch (hall_sensors)
{
case 3:
pwm_phase_a_enable_pwm ();
pwm_phase_b_disable ();
pwm_phase_c_enable_low ();
break;
case 1:
pwm_phase_a_enable_pwm ();
pwm_phase_b_enable_low ();
pwm_phase_c_disable ();
break;
case 5:
pwm_phase_a_disable ();
pwm_phase_b_enable_low ();
pwm_phase_c_enable_pwm ();
break;
case 4:
pwm_phase_a_enable_low ();
pwm_phase_b_disable ();
pwm_phase_c_enable_pwm ();
break;
case 6:
pwm_phase_a_enable_low ();
pwm_phase_b_enable_pwm ();
pwm_phase_c_disable ();
break;
case 2:
pwm_phase_a_disable ();
pwm_phase_b_enable_pwm ();
pwm_phase_c_enable_low ();
break;
default:
return;
break;
}
}