examples/dsptest: fix nxstyle issues

This commit is contained in:
raiden00pl 2020-04-03 21:21:09 +02:00 committed by Abdelatif Guettouche
parent 7cb5bc3b76
commit dd95e35787
7 changed files with 105 additions and 98 deletions

View File

@ -102,7 +102,7 @@ static void test_foc_init(void)
foc_vbase_update(&foc, 0.1); foc_vbase_update(&foc, 0.1);
TEST_ASSERT_EQUAL_FLOAT(0.1, 1.0/foc.vab_mod_scale); TEST_ASSERT_EQUAL_FLOAT(0.1, 1.0 / foc.vab_mod_scale);
TEST_ASSERT_EQUAL_FLOAT(0.1, foc.vdq_mag_max); TEST_ASSERT_EQUAL_FLOAT(0.1, foc.vdq_mag_max);
} }

View File

@ -270,7 +270,7 @@ static void test_fast_sin(void)
/* Compare with LIBC sine */ /* Compare with LIBC sine */
for(angle = 0.0; angle < 2*M_PI_F; angle += TEST_SINCOS_ANGLE_STEP) for (angle = 0.0; angle < 2 * M_PI_F; angle += TEST_SINCOS_ANGLE_STEP)
{ {
s_ref = sinf(angle); s_ref = sinf(angle);
s = fast_sin(angle); s = fast_sin(angle);
@ -289,7 +289,7 @@ static void test_fast_cos(void)
/* Compare with LIBC cosine */ /* Compare with LIBC cosine */
for(angle = 0.0; angle < 2*M_PI_F; angle += TEST_SINCOS_ANGLE_STEP) for (angle = 0.0; angle < 2 * M_PI_F; angle += TEST_SINCOS_ANGLE_STEP)
{ {
c_ref = cosf(angle); c_ref = cosf(angle);
c = fast_cos(angle); c = fast_cos(angle);
@ -308,7 +308,7 @@ static void test_fast_sin2(void)
/* Compare with LIBC sine */ /* Compare with LIBC sine */
for(angle = 0.0; angle < 2*M_PI_F; angle += TEST_SINCOS2_ANGLE_STEP) for (angle = 0.0; angle < 2 * M_PI_F; angle += TEST_SINCOS2_ANGLE_STEP)
{ {
s_ref = sinf(angle); s_ref = sinf(angle);
s = fast_sin2(angle); s = fast_sin2(angle);
@ -327,7 +327,7 @@ static void test_fast_cos2(void)
/* Compare with LIBC cosine */ /* Compare with LIBC cosine */
for(angle = 0.0; angle < 2*M_PI_F; angle += TEST_SINCOS2_ANGLE_STEP) for (angle = 0.0; angle < 2 * M_PI_F; angle += TEST_SINCOS2_ANGLE_STEP)
{ {
c_ref = cosf(angle); c_ref = cosf(angle);
c = fast_cos2(angle); c = fast_cos2(angle);
@ -574,7 +574,7 @@ static void test_phase_angle_update(void)
c = ANGLE_COS(val); c = ANGLE_COS(val);
phase_angle_update(&angle, val); phase_angle_update(&angle, val);
TEST_ASSERT_EQUAL_FLOAT(val-2*M_PI_F, angle.angle); TEST_ASSERT_EQUAL_FLOAT(val - 2 * M_PI_F, angle.angle);
TEST_ASSERT_EQUAL_FLOAT(s, angle.sin); TEST_ASSERT_EQUAL_FLOAT(s, angle.sin);
TEST_ASSERT_EQUAL_FLOAT(c, angle.cos); TEST_ASSERT_EQUAL_FLOAT(c, angle.cos);
@ -585,7 +585,7 @@ static void test_phase_angle_update(void)
c = ANGLE_COS(val); c = ANGLE_COS(val);
phase_angle_update(&angle, val); phase_angle_update(&angle, val);
TEST_ASSERT_EQUAL_FLOAT(val+2*M_PI_F, angle.angle); TEST_ASSERT_EQUAL_FLOAT(val + 2 * M_PI_F, angle.angle);
TEST_ASSERT_EQUAL_FLOAT(s, angle.sin); TEST_ASSERT_EQUAL_FLOAT(s, angle.sin);
TEST_ASSERT_EQUAL_FLOAT(c, angle.cos); TEST_ASSERT_EQUAL_FLOAT(c, angle.cos);
} }

View File

@ -155,7 +155,7 @@ static void test_openloop_many_steps(void)
/* Do some iterations in CW direction */ /* Do some iterations in CW direction */
for (i = 0; i < iter; i+=1) for (i = 0; i < iter; i += 1)
{ {
motor_openloop(&op, speed, DIR_CW); motor_openloop(&op, speed, DIR_CW);
} }
@ -174,7 +174,7 @@ static void test_openloop_many_steps(void)
/* Do some iterations in CCW direction */ /* Do some iterations in CCW direction */
for (i = 0; i < iter; i+=1) for (i = 0; i < iter; i += 1)
{ {
motor_openloop(&op, speed, DIR_CCW); motor_openloop(&op, speed, DIR_CCW);
} }
@ -218,7 +218,7 @@ static void test_openloop_normalize_angle(void)
/* Do many iterations to exceed 2PI range */ /* Do many iterations to exceed 2PI range */
for (i = 0; i < iter; i+=1) for (i = 0; i < iter; i += 1)
{ {
motor_openloop(&op, speed, DIR_CW); motor_openloop(&op, speed, DIR_CW);
} }
@ -233,9 +233,9 @@ static void test_openloop_normalize_angle(void)
/* And normalize to <0.0, 2*PI> */ /* And normalize to <0.0, 2*PI> */
while (expected > 2*M_PI_F) while (expected > 2 * M_PI_F)
{ {
expected -= 2*M_PI_F; expected -= 2 * M_PI_F;
} }
/* Test angle */ /* Test angle */
@ -265,7 +265,7 @@ static void test_angle_init(void)
TEST_ASSERT_EQUAL_FLOAT(0.0, angle_e); TEST_ASSERT_EQUAL_FLOAT(0.0, angle_e);
TEST_ASSERT_EQUAL_FLOAT(0.0, angle_m); TEST_ASSERT_EQUAL_FLOAT(0.0, angle_m);
TEST_ASSERT_EQUAL_UINT8(p, angle.p); TEST_ASSERT_EQUAL_UINT8(p, angle.p);
TEST_ASSERT_EQUAL_FLOAT((float)1.0/p, angle.one_by_p); TEST_ASSERT_EQUAL_FLOAT((float)1.0 / p, angle.one_by_p);
TEST_ASSERT_EQUAL_INT8(0, angle.i); TEST_ASSERT_EQUAL_INT8(0, angle.i);
} }
@ -313,7 +313,7 @@ static void test_angle_el_update_cw(void)
angle_step = 0.1; angle_step = 0.1;
expected_e = 0.1; expected_e = 0.1;
expected_m = 0.1/p; expected_m = 0.1 / p;
s = sin(expected_e); s = sin(expected_e);
c = cos(expected_e); c = cos(expected_e);
@ -336,14 +336,14 @@ static void test_angle_el_update_cw(void)
angle_step = 2 * M_PI_F + 0.2; angle_step = 2 * M_PI_F + 0.2;
expected_e = 0.2; expected_e = 0.2;
expected_m = angle_step/p; expected_m = angle_step / p;
s = sin(expected_e); s = sin(expected_e);
c = cos(expected_e); c = cos(expected_e);
/* Move in a few steps */ /* Move in a few steps */
motor_angle_e_update(&angle, M_PI_F, DIR_CW); motor_angle_e_update(&angle, M_PI_F, DIR_CW);
motor_angle_e_update(&angle, 2*M_PI_F, DIR_CW); motor_angle_e_update(&angle, 2 * M_PI_F, DIR_CW);
motor_angle_e_update(&angle, 0.2, DIR_CW); motor_angle_e_update(&angle, 0.2, DIR_CW);
angle_m = motor_angle_m_get(&angle); angle_m = motor_angle_m_get(&angle);
@ -381,9 +381,9 @@ static void test_angle_el_update_ccw(void)
* We start from 0.0 and move angle CCW by 0.1. * We start from 0.0 and move angle CCW by 0.1.
*/ */
angle_step = MOTOR_ANGLE_E_MAX-0.1; angle_step = MOTOR_ANGLE_E_MAX - 0.1;
expected_e = angle_step; expected_e = angle_step;
expected_m = (p-1)*MOTOR_ANGLE_M_MAX/p + expected_e/p; expected_m = (p - 1) * MOTOR_ANGLE_M_MAX / p + expected_e / p;
s = sin(expected_e); s = sin(expected_e);
c = cos(expected_e); c = cos(expected_e);
@ -397,22 +397,22 @@ static void test_angle_el_update_ccw(void)
TEST_ASSERT_EQUAL_FLOAT(expected_e, angle_e); TEST_ASSERT_EQUAL_FLOAT(expected_e, angle_e);
TEST_ASSERT_FLOAT_WITHIN(TEST_SINCOS_DELTA, s, angle.angle_el.sin); TEST_ASSERT_FLOAT_WITHIN(TEST_SINCOS_DELTA, s, angle.angle_el.sin);
TEST_ASSERT_FLOAT_WITHIN(TEST_SINCOS_DELTA, c, angle.angle_el.cos); TEST_ASSERT_FLOAT_WITHIN(TEST_SINCOS_DELTA, c, angle.angle_el.cos);
TEST_ASSERT_EQUAL_INT8(p-1, angle.i); TEST_ASSERT_EQUAL_INT8(p - 1, angle.i);
TEST_ASSERT_EQUAL_FLOAT(expected_m, angle_m); TEST_ASSERT_EQUAL_FLOAT(expected_m, angle_m);
/* Update electrical angle with 2PI+0.1 in CCW direction in three steps */ /* Update electrical angle with 2PI+0.1 in CCW direction in three steps */
angle_step = (MOTOR_ANGLE_E_MAX + 0.1); angle_step = (MOTOR_ANGLE_E_MAX + 0.1);
expected_e = MOTOR_ANGLE_E_MAX-0.1; expected_e = MOTOR_ANGLE_E_MAX - 0.1;
expected_m = (p-2)*MOTOR_ANGLE_M_MAX/p + expected_e/p; expected_m = (p - 2) * MOTOR_ANGLE_M_MAX / p + expected_e / p;
s = sin(expected_e); s = sin(expected_e);
c = cos(expected_e); c = cos(expected_e);
/* Move in a few steps */ /* Move in a few steps */
motor_angle_e_update(&angle, MOTOR_ANGLE_E_MAX-M_PI_F, DIR_CCW); motor_angle_e_update(&angle, MOTOR_ANGLE_E_MAX - M_PI_F, DIR_CCW);
motor_angle_e_update(&angle, MOTOR_ANGLE_E_MAX-2*M_PI_F, DIR_CCW); motor_angle_e_update(&angle, MOTOR_ANGLE_E_MAX - 2 * M_PI_F, DIR_CCW);
motor_angle_e_update(&angle, MOTOR_ANGLE_E_MAX-0.1, DIR_CCW); motor_angle_e_update(&angle, MOTOR_ANGLE_E_MAX - 0.1, DIR_CCW);
angle_m = motor_angle_m_get(&angle); angle_m = motor_angle_m_get(&angle);
angle_e = motor_angle_e_get(&angle); angle_e = motor_angle_e_get(&angle);
@ -422,7 +422,7 @@ static void test_angle_el_update_ccw(void)
TEST_ASSERT_EQUAL_FLOAT(expected_e, angle_e); TEST_ASSERT_EQUAL_FLOAT(expected_e, angle_e);
TEST_ASSERT_FLOAT_WITHIN(TEST_SINCOS_DELTA, s, angle.angle_el.sin); TEST_ASSERT_FLOAT_WITHIN(TEST_SINCOS_DELTA, s, angle.angle_el.sin);
TEST_ASSERT_FLOAT_WITHIN(TEST_SINCOS_DELTA, c, angle.angle_el.cos); TEST_ASSERT_FLOAT_WITHIN(TEST_SINCOS_DELTA, c, angle.angle_el.cos);
TEST_ASSERT_EQUAL_INT8(p-2, angle.i); TEST_ASSERT_EQUAL_INT8(p - 2, angle.i);
TEST_ASSERT_EQUAL_FLOAT(expected_m, angle_m); TEST_ASSERT_EQUAL_FLOAT(expected_m, angle_m);
} }
@ -451,7 +451,7 @@ static void test_angle_el_update_cw_overflow(void)
angle_step = 0.1; angle_step = 0.1;
expected_e = angle_step; expected_e = angle_step;
expected_m = angle_step/p; expected_m = angle_step / p;
s = sin(expected_e); s = sin(expected_e);
c = cos(expected_e); c = cos(expected_e);
@ -467,7 +467,7 @@ static void test_angle_el_update_cw_overflow(void)
/* Test poles counter before final step */ /* Test poles counter before final step */
TEST_ASSERT_EQUAL_INT8(p-1, angle.i); TEST_ASSERT_EQUAL_INT8(p - 1, angle.i);
/* One more step after overflow mechanical angle */ /* One more step after overflow mechanical angle */
@ -511,7 +511,7 @@ static void test_angle_el_update_ccw_overflow(void)
angle_step = 0.1; angle_step = 0.1;
expected_e = MOTOR_ANGLE_E_MAX - angle_step; expected_e = MOTOR_ANGLE_E_MAX - angle_step;
expected_m = MOTOR_ANGLE_M_MAX - angle_step/p; expected_m = MOTOR_ANGLE_M_MAX - angle_step / p;
s = sin(expected_e); s = sin(expected_e);
c = cos(expected_e); c = cos(expected_e);
@ -572,7 +572,7 @@ static void test_angle_el_change_dir(void)
*/ */
angle_step = 0.1; angle_step = 0.1;
expected_m = 4*MOTOR_ANGLE_M_MAX/p + angle_step/p; expected_m = 4 * MOTOR_ANGLE_M_MAX / p + angle_step / p;
expected_e = 0.1; expected_e = 0.1;
s = sin(expected_e); s = sin(expected_e);
c = cos(expected_e); c = cos(expected_e);
@ -609,7 +609,7 @@ static void test_angle_el_change_dir(void)
/* Now move angle backward 2*(2PI) + 0.1 */ /* Now move angle backward 2*(2PI) + 0.1 */
angle_step = 0.1; angle_step = 0.1;
expected_m = 2*MOTOR_ANGLE_M_MAX/p - angle_step/p; expected_m = 2 * MOTOR_ANGLE_M_MAX / p - angle_step / p;
expected_e = MOTOR_ANGLE_E_MAX - angle_step; expected_e = MOTOR_ANGLE_E_MAX - angle_step;
s = sin(expected_e); s = sin(expected_e);
c = cos(expected_e); c = cos(expected_e);
@ -630,7 +630,7 @@ static void test_angle_el_change_dir(void)
/* And rest 0.1 */ /* And rest 0.1 */
motor_angle_e_update(&angle, MOTOR_ANGLE_E_MAX-angle_step, DIR_CCW); motor_angle_e_update(&angle, MOTOR_ANGLE_E_MAX - angle_step, DIR_CCW);
angle_m = motor_angle_m_get(&angle); angle_m = motor_angle_m_get(&angle);
angle_e = motor_angle_e_get(&angle); angle_e = motor_angle_e_get(&angle);
@ -646,7 +646,7 @@ static void test_angle_el_change_dir(void)
/* and again in forward direction 4*(2PI) + 0.1 */ /* and again in forward direction 4*(2PI) + 0.1 */
angle_step = 0.1; angle_step = 0.1;
expected_m = 5*MOTOR_ANGLE_M_MAX/p + angle_step/p; expected_m = 5 * MOTOR_ANGLE_M_MAX / p + angle_step / p;
expected_e = 0.1; expected_e = 0.1;
s = sin(expected_e); s = sin(expected_e);
c = cos(expected_e); c = cos(expected_e);
@ -725,7 +725,7 @@ static void test_angle_m_update_cw(void)
angle_step = 0.1; angle_step = 0.1;
expected_m = angle_step; expected_m = angle_step;
expected_e = angle_step*p - 0*MOTOR_ANGLE_E_MAX/p; expected_e = angle_step * p - 0*MOTOR_ANGLE_E_MAX / p;
s = sin(expected_e); s = sin(expected_e);
c = cos(expected_e); c = cos(expected_e);
@ -744,18 +744,18 @@ static void test_angle_m_update_cw(void)
/* Update mechanical angle to get one electrical angle rotation + 0.1 */ /* Update mechanical angle to get one electrical angle rotation + 0.1 */
angle_step = MOTOR_ANGLE_M_MAX/p + 0.1; angle_step = MOTOR_ANGLE_M_MAX / p + 0.1;
expected_m = angle_step; expected_m = angle_step;
expected_e = angle_step*p - 1*MOTOR_ANGLE_E_MAX; expected_e = angle_step * p - 1 * MOTOR_ANGLE_E_MAX;
s = sin(expected_e); s = sin(expected_e);
c = cos(expected_e); c = cos(expected_e);
/* Move in a few steps */ /* Move in a few steps */
motor_angle_m_update(&angle, angle_step/3, DIR_CW); motor_angle_m_update(&angle, angle_step / 3, DIR_CW);
motor_angle_m_update(&angle, 2*angle_step/3, DIR_CW); motor_angle_m_update(&angle, 2 * angle_step / 3, DIR_CW);
motor_angle_m_update(&angle, 3*angle_step/3, DIR_CW); motor_angle_m_update(&angle, 3 * angle_step / 3, DIR_CW);
angle_m = motor_angle_m_get(&angle); angle_m = motor_angle_m_get(&angle);
angle_e = motor_angle_e_get(&angle); angle_e = motor_angle_e_get(&angle);
@ -790,12 +790,13 @@ static void test_angle_m_update_ccw(void)
/* Update mechanical angle with 1.0 /* Update mechanical angle with 1.0
* For 8 poles, one electrical angle rotationa takes ~0.785. * For 8 poles, one electrical angle rotationa takes ~0.785.
* So with angle step = 1.0 we have 1 electical angle rotation plus some rest. * So with angle step = 1.0 we have 1 electical angle rotation plus
* some rest.
*/ */
angle_step = 1.0; angle_step = 1.0;
expected_m = angle_step; expected_m = angle_step;
expected_e = angle_step*p - 1*MOTOR_ANGLE_E_MAX; expected_e = angle_step * p - 1 * MOTOR_ANGLE_E_MAX;
s = sin(expected_e); s = sin(expected_e);
c = cos(expected_e); c = cos(expected_e);
@ -814,17 +815,17 @@ static void test_angle_m_update_ccw(void)
/* Update mechanical angle to get one electrical angle rotation */ /* Update mechanical angle to get one electrical angle rotation */
angle_step = angle_step - MOTOR_ANGLE_E_MAX/p; angle_step = angle_step - MOTOR_ANGLE_E_MAX / p;
expected_m = angle_step; expected_m = angle_step;
expected_e = angle_step*p; expected_e = angle_step * p;
s = sin(expected_e); s = sin(expected_e);
c = cos(expected_e); c = cos(expected_e);
/* Move in a few steps */ /* Move in a few steps */
motor_angle_m_update(&angle, angle_step/3, DIR_CCW); motor_angle_m_update(&angle, angle_step / 3, DIR_CCW);
motor_angle_m_update(&angle, 2*angle_step/3, DIR_CCW); motor_angle_m_update(&angle, 2 * angle_step / 3, DIR_CCW);
motor_angle_m_update(&angle, 3*angle_step/3, DIR_CCW); motor_angle_m_update(&angle, 3 * angle_step / 3, DIR_CCW);
angle_m = motor_angle_m_get(&angle); angle_m = motor_angle_m_get(&angle);
angle_e = motor_angle_e_get(&angle); angle_e = motor_angle_e_get(&angle);
@ -861,18 +862,18 @@ static void test_angle_m_update_cw_overflow(void)
angle_step = 0.1; angle_step = 0.1;
expected_m = angle_step; expected_m = angle_step;
expected_e = 0*MOTOR_ANGLE_E_MAX/p + angle_step*p; expected_e = 0 * MOTOR_ANGLE_E_MAX / p + angle_step * p;
s = sin(expected_e); s = sin(expected_e);
c = cos(expected_e); c = cos(expected_e);
/* Move in a few steps */ /* Move in a few steps */
motor_angle_m_update(&angle, 0.0, DIR_CW); motor_angle_m_update(&angle, 0.0, DIR_CW);
motor_angle_m_update(&angle, MOTOR_ANGLE_M_MAX/4, DIR_CW); motor_angle_m_update(&angle, MOTOR_ANGLE_M_MAX / 4, DIR_CW);
motor_angle_m_update(&angle, 1*MOTOR_ANGLE_M_MAX/4, DIR_CW); motor_angle_m_update(&angle, 1 * MOTOR_ANGLE_M_MAX / 4, DIR_CW);
motor_angle_m_update(&angle, 2*MOTOR_ANGLE_M_MAX/4, DIR_CW); motor_angle_m_update(&angle, 2 * MOTOR_ANGLE_M_MAX / 4, DIR_CW);
motor_angle_m_update(&angle, 3*MOTOR_ANGLE_M_MAX/4, DIR_CW); motor_angle_m_update(&angle, 3 * MOTOR_ANGLE_M_MAX / 4, DIR_CW);
motor_angle_m_update(&angle, 4*MOTOR_ANGLE_M_MAX/4, DIR_CW); motor_angle_m_update(&angle, 4 * MOTOR_ANGLE_M_MAX / 4, DIR_CW);
motor_angle_m_update(&angle, angle_step, DIR_CW); motor_angle_m_update(&angle, angle_step, DIR_CW);
angle_m = motor_angle_m_get(&angle); angle_m = motor_angle_m_get(&angle);
@ -910,17 +911,17 @@ static void test_angle_m_update_ccw_overflow(void)
angle_step = MOTOR_ANGLE_M_MAX - 0.1; angle_step = MOTOR_ANGLE_M_MAX - 0.1;
expected_m = angle_step; expected_m = angle_step;
expected_e = MOTOR_ANGLE_E_MAX - 0.1*p; expected_e = MOTOR_ANGLE_E_MAX - 0.1 * p;
s = sin(expected_e); s = sin(expected_e);
c = cos(expected_e); c = cos(expected_e);
/* Move in a few steps */ /* Move in a few steps */
motor_angle_m_update(&angle, 0.0, DIR_CCW); motor_angle_m_update(&angle, 0.0, DIR_CCW);
motor_angle_m_update(&angle, 4*MOTOR_ANGLE_M_MAX/4, DIR_CCW); motor_angle_m_update(&angle, 4 * MOTOR_ANGLE_M_MAX / 4, DIR_CCW);
motor_angle_m_update(&angle, 3*MOTOR_ANGLE_M_MAX/4, DIR_CCW); motor_angle_m_update(&angle, 3 * MOTOR_ANGLE_M_MAX / 4, DIR_CCW);
motor_angle_m_update(&angle, 2*MOTOR_ANGLE_M_MAX/4, DIR_CCW); motor_angle_m_update(&angle, 2 * MOTOR_ANGLE_M_MAX / 4, DIR_CCW);
motor_angle_m_update(&angle, 1*MOTOR_ANGLE_M_MAX/4, DIR_CCW); motor_angle_m_update(&angle, 1 * MOTOR_ANGLE_M_MAX / 4, DIR_CCW);
motor_angle_m_update(&angle, angle_step, DIR_CCW); motor_angle_m_update(&angle, angle_step, DIR_CCW);
angle_m = motor_angle_m_get(&angle); angle_m = motor_angle_m_get(&angle);
@ -932,7 +933,7 @@ static void test_angle_m_update_ccw_overflow(void)
TEST_ASSERT_EQUAL_FLOAT(expected_e, angle_e); TEST_ASSERT_EQUAL_FLOAT(expected_e, angle_e);
TEST_ASSERT_FLOAT_WITHIN(TEST_SINCOS_DELTA, s, angle.angle_el.sin); TEST_ASSERT_FLOAT_WITHIN(TEST_SINCOS_DELTA, s, angle.angle_el.sin);
TEST_ASSERT_FLOAT_WITHIN(TEST_SINCOS_DELTA, c, angle.angle_el.cos); TEST_ASSERT_FLOAT_WITHIN(TEST_SINCOS_DELTA, c, angle.angle_el.cos);
TEST_ASSERT_EQUAL_INT8(p-1, angle.i); TEST_ASSERT_EQUAL_INT8(p - 1, angle.i);
} }
/* Update mechanical angle and change direction */ /* Update mechanical angle and change direction */
@ -957,19 +958,19 @@ static void test_angle_m_change_dir(void)
/* Move mechanical angle by 3*(2PI)/4 in CW direction */ /* Move mechanical angle by 3*(2PI)/4 in CW direction */
angle_step = 3*MOTOR_ANGLE_M_MAX/4; angle_step = 3 * MOTOR_ANGLE_M_MAX / 4;
expected_m = angle_step; expected_m = angle_step;
expected_i = ((int)(angle_step*p/MOTOR_ANGLE_M_MAX)); expected_i = ((int)(angle_step * p / MOTOR_ANGLE_M_MAX));
expected_e = angle_step*p - expected_i*MOTOR_ANGLE_E_MAX; expected_e = angle_step * p - expected_i * MOTOR_ANGLE_E_MAX;
s = sin(expected_e); s = sin(expected_e);
c = cos(expected_e); c = cos(expected_e);
/* Move in a few steps */ /* Move in a few steps */
motor_angle_m_update(&angle, 0.0, DIR_CW); motor_angle_m_update(&angle, 0.0, DIR_CW);
motor_angle_m_update(&angle, 1*MOTOR_ANGLE_M_MAX/4, DIR_CW); motor_angle_m_update(&angle, 1 * MOTOR_ANGLE_M_MAX / 4, DIR_CW);
motor_angle_m_update(&angle, 2*MOTOR_ANGLE_M_MAX/4, DIR_CW); motor_angle_m_update(&angle, 2 * MOTOR_ANGLE_M_MAX / 4, DIR_CW);
motor_angle_m_update(&angle, 3*MOTOR_ANGLE_M_MAX/4, DIR_CW); motor_angle_m_update(&angle, 3 * MOTOR_ANGLE_M_MAX / 4, DIR_CW);
angle_m = motor_angle_m_get(&angle); angle_m = motor_angle_m_get(&angle);
angle_e = motor_angle_e_get(&angle); angle_e = motor_angle_e_get(&angle);
@ -984,15 +985,15 @@ static void test_angle_m_change_dir(void)
/* Move mechanical angle by 1.0 in CCW direction */ /* Move mechanical angle by 1.0 in CCW direction */
angle_step = 3*MOTOR_ANGLE_M_MAX/4 - 2.0; angle_step = 3 * MOTOR_ANGLE_M_MAX / 4 - 2.0;
expected_m = angle_step; expected_m = angle_step;
expected_i = ((int)(angle_step*p/MOTOR_ANGLE_M_MAX)); expected_i = ((int)(angle_step * p / MOTOR_ANGLE_M_MAX));
expected_e = angle_step*p - expected_i*MOTOR_ANGLE_E_MAX; expected_e = angle_step * p - expected_i * MOTOR_ANGLE_E_MAX;
s = sin(expected_e); s = sin(expected_e);
c = cos(expected_e); c = cos(expected_e);
motor_angle_m_update(&angle, 3*MOTOR_ANGLE_M_MAX/4-1.0, DIR_CCW); motor_angle_m_update(&angle, 3 * MOTOR_ANGLE_M_MAX / 4 - 1.0, DIR_CCW);
motor_angle_m_update(&angle, 3*MOTOR_ANGLE_M_MAX/4-2.0, DIR_CCW); motor_angle_m_update(&angle, 3 * MOTOR_ANGLE_M_MAX / 4 - 2.0, DIR_CCW);
angle_m = motor_angle_m_get(&angle); angle_m = motor_angle_m_get(&angle);
angle_e = motor_angle_e_get(&angle); angle_e = motor_angle_e_get(&angle);
@ -1032,19 +1033,19 @@ static void test_angle_m_el_mixed(void)
* rotations + 0.1 in CW direction * rotations + 0.1 in CW direction
*/ */
angle_step = 4*MOTOR_ANGLE_M_MAX/p + 0.1; angle_step = 4 * MOTOR_ANGLE_M_MAX / p + 0.1;
expected_m = angle_step; expected_m = angle_step;
expected_i = ((int)(angle_step*p/MOTOR_ANGLE_M_MAX)); expected_i = ((int)(angle_step * p / MOTOR_ANGLE_M_MAX));
expected_e = angle_step*p - expected_i*MOTOR_ANGLE_E_MAX; expected_e = angle_step * p - expected_i * MOTOR_ANGLE_E_MAX;
s = sin(expected_e); s = sin(expected_e);
c = cos(expected_e); c = cos(expected_e);
/* Move in a few steps */ /* Move in a few steps */
motor_angle_m_update(&angle, 0.0, DIR_CW); motor_angle_m_update(&angle, 0.0, DIR_CW);
motor_angle_m_update(&angle, MOTOR_ANGLE_M_MAX/p, DIR_CW); motor_angle_m_update(&angle, MOTOR_ANGLE_M_MAX / p, DIR_CW);
motor_angle_m_update(&angle, 4*MOTOR_ANGLE_M_MAX/p, DIR_CW); motor_angle_m_update(&angle, 4 * MOTOR_ANGLE_M_MAX / p, DIR_CW);
motor_angle_m_update(&angle, 4*MOTOR_ANGLE_M_MAX/p + 0.1, DIR_CW); motor_angle_m_update(&angle, 4 * MOTOR_ANGLE_M_MAX / p + 0.1, DIR_CW);
angle_m = motor_angle_m_get(&angle); angle_m = motor_angle_m_get(&angle);
angle_e = motor_angle_e_get(&angle); angle_e = motor_angle_e_get(&angle);
@ -1062,16 +1063,16 @@ static void test_angle_m_el_mixed(void)
* angle reduced by 2 electrical rotations. * angle reduced by 2 electrical rotations.
*/ */
angle_step = 2*MOTOR_ANGLE_E_MAX; angle_step = 2 * MOTOR_ANGLE_E_MAX;
expected_i = expected_i - 2; expected_i = expected_i - 2;
expected_e = expected_e; expected_e = expected_e;
expected_m = expected_m - 2*MOTOR_ANGLE_M_MAX/p; expected_m = expected_m - 2 * MOTOR_ANGLE_M_MAX / p;
s = sin(expected_e); s = sin(expected_e);
c = cos(expected_e); c = cos(expected_e);
/* Move angle in loop */ /* Move angle in loop */
for (i = 0; i < 2; i+=1) for (i = 0; i < 2; i += 1)
{ {
for (a = expected_e ; a >= 0.0; a -= 0.1) for (a = expected_e ; a >= 0.0; a -= 0.1)
{ {

View File

@ -82,7 +82,7 @@ static void test_observer_init(void)
struct motor_observer_s o; struct motor_observer_s o;
float per = 1e-11; float per = 1e-11;
motor_observer_init(&o, (void*)&ao, (void*)&so, per); motor_observer_init(&o, (void *)&ao, (void *)&so, per);
TEST_ASSERT_EQUAL_FLOAT(0.0, o.angle); TEST_ASSERT_EQUAL_FLOAT(0.0, o.angle);
TEST_ASSERT_EQUAL_FLOAT(0.0, o.speed); TEST_ASSERT_EQUAL_FLOAT(0.0, o.speed);
@ -107,8 +107,8 @@ static void test_observer_smo_init(void)
TEST_ASSERT_EQUAL_FLOAT(kslide, ao.k_slide); TEST_ASSERT_EQUAL_FLOAT(kslide, ao.k_slide);
TEST_ASSERT_EQUAL_FLOAT(err_max, ao.err_max); TEST_ASSERT_EQUAL_FLOAT(err_max, ao.err_max);
TEST_ASSERT_EQUAL_FLOAT(0.0, ao.F_gain); TEST_ASSERT_EQUAL_FLOAT(0.0, ao.F);
TEST_ASSERT_EQUAL_FLOAT(0.0, ao.G_gain); TEST_ASSERT_EQUAL_FLOAT(0.0, ao.G);
TEST_ASSERT_EQUAL_FLOAT(0.0, ao.emf_lp_filter1); TEST_ASSERT_EQUAL_FLOAT(0.0, ao.emf_lp_filter1);
TEST_ASSERT_EQUAL_FLOAT(0.0, ao.emf_lp_filter2); TEST_ASSERT_EQUAL_FLOAT(0.0, ao.emf_lp_filter2);
TEST_ASSERT_EQUAL_FLOAT(0.0, ao.emf.a); TEST_ASSERT_EQUAL_FLOAT(0.0, ao.emf.a);
@ -133,14 +133,21 @@ static void test_observer_smo_zeros(void)
struct motor_observer_smo_s ao; struct motor_observer_smo_s ao;
struct motor_observer_s o; struct motor_observer_s o;
struct motor_phy_params_s phy; struct motor_phy_params_s phy;
ab_frame_t i_ab = {0.0, 0.0}; ab_frame_t i_ab;
ab_frame_t v_ab = {0.0, 0.0}; ab_frame_t v_ab;
float k_slide = 1.0; float k_slide = 1.0;
float err_max = 1.0; float err_max = 1.0;
float per = 1e-6; float per = 1e-6;
float angle = 0.0; float angle = 0.0;
int i = 0; int i = 0;
/* Initialize ab frames */
i_ab.a = 0.0f;
i_ab.b = 0.0f;
v_ab.a = 0.0f;
v_ab.b = 0.0f;
/* Initialize motor physical parameters */ /* Initialize motor physical parameters */
phy.p = 8; phy.p = 8;
@ -164,7 +171,7 @@ static void test_observer_smo_zeros(void)
v_ab.a = 0.0; v_ab.a = 0.0;
v_ab.b = 0.0; v_ab.b = 0.0;
for (i = 0; i< 1000000; i+=1) for (i = 0; i < 1000000; i += 1)
{ {
motor_observer_smo(&o, &i_ab, &v_ab, &phy, DIR_CW); motor_observer_smo(&o, &i_ab, &v_ab, &phy, DIR_CW);
} }
@ -175,7 +182,7 @@ static void test_observer_smo_zeros(void)
TEST_ASSERT_EQUAL_FLOAT(M_PI_F, angle); TEST_ASSERT_EQUAL_FLOAT(M_PI_F, angle);
for (i = 0; i< 1000000; i+=1) for (i = 0; i < 1000000; i += 1)
{ {
motor_observer_smo(&o, &i_ab, &v_ab, &phy, DIR_CCW); motor_observer_smo(&o, &i_ab, &v_ab, &phy, DIR_CCW);
} }
@ -237,7 +244,7 @@ static void test_sobserver_div_init(void)
motor_sobserver_div_init(&so, samples, filter, per); motor_sobserver_div_init(&so, samples, filter, per);
TEST_ASSERT_EQUAL_FLOAT(filter, so.filter); TEST_ASSERT_EQUAL_FLOAT(filter, so.filter);
TEST_ASSERT_EQUAL_FLOAT(1.0/(samples*per), so.one_by_dt); TEST_ASSERT_EQUAL_FLOAT(1.0 / (samples * per), so.one_by_dt);
TEST_ASSERT_EQUAL_UINT8(samples, so.samples); TEST_ASSERT_EQUAL_UINT8(samples, so.samples);
} }
@ -267,7 +274,7 @@ static void test_sobserver_div_zeros(void)
expected_s = 0.0; expected_s = 0.0;
for(i = 0; i < 1000; i += 1) for (i = 0; i < 1000; i += 1)
{ {
motor_sobserver_div(&o, 0.0, DIR_CW); motor_sobserver_div(&o, 0.0, DIR_CW);
} }
@ -282,7 +289,7 @@ static void test_sobserver_div_zeros(void)
expected_s = 0.0; expected_s = 0.0;
for(i = 0; i < 1000; i += 1) for (i = 0; i < 1000; i += 1)
{ {
motor_sobserver_div(&o, 0.0, DIR_CCW); motor_sobserver_div(&o, 0.0, DIR_CCW);
} }

View File

@ -116,7 +116,7 @@ static void test_pi_controller_zeros(void)
pid_saturation_set(&pi, min, max); pid_saturation_set(&pi, min, max);
for (i=0; i< 10000; i+=1) for (i = 0; i < 10000; i += 1)
{ {
pi_controller(&pi, 0.0); pi_controller(&pi, 0.0);
} }
@ -233,7 +233,7 @@ static void test_pi_controller_saturation(void)
/* Feed controller */ /* Feed controller */
for (i=0; i< 1000; i+=1) for (i = 0; i < 1000; i += 1)
{ {
pi_controller(&pi, 0.01); pi_controller(&pi, 0.01);
TEST_ASSERT_LESS_OR_EQUAL(max, pi.out); TEST_ASSERT_LESS_OR_EQUAL(max, pi.out);
@ -242,7 +242,7 @@ static void test_pi_controller_saturation(void)
/* Feed controller */ /* Feed controller */
for (i=0; i< 1000; i+=1) for (i = 0; i < 1000; i += 1)
{ {
pi_controller(&pi, -0.01); pi_controller(&pi, -0.01);
TEST_ASSERT_GREATER_OR_EQUAL(min, pi.out); TEST_ASSERT_GREATER_OR_EQUAL(min, pi.out);
@ -271,7 +271,7 @@ static void test_pi_windup_protection(void)
/* Feed controller */ /* Feed controller */
for (i=0; i< 1000; i+=1) for (i = 0; i < 1000; i += 1)
{ {
pi_controller(&pi, 0.01); pi_controller(&pi, 0.01);
TEST_ASSERT_LESS_OR_EQUAL(max, pi.part[1]); TEST_ASSERT_LESS_OR_EQUAL(max, pi.part[1]);
@ -279,7 +279,7 @@ static void test_pi_windup_protection(void)
/* Feed controller */ /* Feed controller */
for (i=0; i< 1000; i+=1) for (i = 0; i < 1000; i += 1)
{ {
pi_controller(&pi, -0.01); pi_controller(&pi, -0.01);
TEST_ASSERT_GREATER_OR_EQUAL(min, pi.part[1]); TEST_ASSERT_GREATER_OR_EQUAL(min, pi.part[1]);
@ -343,7 +343,7 @@ static void test_pid_controller_zeros(void)
pid_saturation_set(&pid, min, max); pid_saturation_set(&pid, min, max);
for (i=0; i< 10000; i+=1) for (i = 0; i < 10000; i += 1)
{ {
pid_controller(&pid, 0.0); pid_controller(&pid, 0.0);
} }
@ -469,7 +469,7 @@ static void test_pid_controller_saturation(void)
/* Feed controller */ /* Feed controller */
for (i=0; i< 1000; i+=1) for (i = 0; i < 1000; i += 1)
{ {
pid_controller(&pid, 0.01); pid_controller(&pid, 0.01);
TEST_ASSERT_LESS_OR_EQUAL(max, pid.out); TEST_ASSERT_LESS_OR_EQUAL(max, pid.out);
@ -478,7 +478,7 @@ static void test_pid_controller_saturation(void)
/* Feed controller */ /* Feed controller */
for (i=0; i< 1000; i+=1) for (i = 0; i < 1000; i += 1)
{ {
pid_controller(&pid, -0.01); pid_controller(&pid, -0.01);
TEST_ASSERT_GREATER_OR_EQUAL(min, pid.out); TEST_ASSERT_GREATER_OR_EQUAL(min, pid.out);

View File

@ -110,7 +110,6 @@ static void test_svm3_saturation(void)
TEST_ASSERT_EQUAL_FLOAT(SVM3_DUTY_MIN, s.d_w); TEST_ASSERT_EQUAL_FLOAT(SVM3_DUTY_MIN, s.d_w);
TEST_ASSERT_EQUAL_INT8(1, s.sector); TEST_ASSERT_EQUAL_INT8(1, s.sector);
/* v_a = -1.0 /* v_a = -1.0
* v_b = -1.0 * v_b = -1.0
* mag(v_ab) > 1.0 which is not valid for SVM * mag(v_ab) > 1.0 which is not valid for SVM

View File

@ -210,7 +210,7 @@ static void test_transform_park(void)
/* angle = -PI/2, alpha = 1.0, beta = 1.0 -> d = -1.0, q = 1.0 */ /* angle = -PI/2, alpha = 1.0, beta = 1.0 -> d = -1.0, q = 1.0 */
phase_angle_update(&angle, -M_PI_F/2); phase_angle_update(&angle, -M_PI_F / 2);
ab.a = 1.0; ab.a = 1.0;
ab.b = 1.0; ab.b = 1.0;
park_transform(&angle, &ab, &dq); park_transform(&angle, &ab, &dq);
@ -269,7 +269,7 @@ static void test_transform_invpark(void)
/* angle = -PI/2, d = 1.0, q = 1.0 -> alpha = 0.0, beta = 0.0 */ /* angle = -PI/2, d = 1.0, q = 1.0 -> alpha = 0.0, beta = 0.0 */
phase_angle_update(&angle, -M_PI_F/2); phase_angle_update(&angle, -M_PI_F / 2);
dq.d = 1.0; dq.d = 1.0;
dq.q = 1.0; dq.q = 1.0;
inv_park_transform(&angle, &dq, &ab); inv_park_transform(&angle, &dq, &ab);