+/*
+ * \brief
+ * Test function to be placed in controll loop.
+ * Switches PWM's at point where they produce same force.
+ * This points are found thanks to IRC position,
+ */
+inline void simple_ind_dist_commutator(int duty){
+ if (duty>=0){ /* clockwise - so that position increase */
+ /* pwm3 */
+ if ((rps.index_dist>=45 && rps.index_dist<=373) ||
+ (rps.index_dist>=1048 && rps.index_dist<=1377)){
+ rps.pwm1=0;
+ rps.pwm2=0;
+ rps.pwm3=duty;
+ /* pwm1 */
+ }else if ((rps.index_dist>=373 && rps.index_dist<=711) ||
+ (rps.index_dist>=1377 && rps.index_dist<=1711)){
+ rps.pwm1=duty;
+ rps.pwm2=0;
+ rps.pwm3=0;
+ /* pwm2 */
+ }else if ((rps.index_dist>=0 && rps.index_dist<=45) ||
+ (rps.index_dist>=711 && rps.index_dist<=1048) ||
+ (rps.index_dist>=1711 && rps.index_dist<=1999)){
+ rps.pwm1=0;
+ rps.pwm2=duty;
+ rps.pwm3=0;
+ }
+ }else{ /*counter-clockwise - position decrease */
+ /* pwm3 */
+ if ((rps.index_dist>=544 && rps.index_dist<=881) ||
+ (rps.index_dist>=1544 && rps.index_dist<=1878)){
+ rps.pwm1=0;
+ rps.pwm2=0;
+ rps.pwm3=-duty;
+ /* pwm1 */
+ }else if ((rps.index_dist>=0 && rps.index_dist<=211) ||
+ (rps.index_dist>=881 && rps.index_dist<=1210) ||
+ (rps.index_dist>=1878 && rps.index_dist<=1999)){
+ rps.pwm1=-duty;
+ rps.pwm2=0;
+ rps.pwm3=0;
+ /* pwm2 */
+ }else if ((rps.index_dist>=211 && rps.index_dist<=544) ||
+ (rps.index_dist>=1210 && rps.index_dist<=1544)){
+ rps.pwm1=0;
+ rps.pwm2=-duty;
+ rps.pwm3=0;
+ }
+ }
+}