X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Falgo%2Framp_test.c;h=0e7d58c57bf0ba6a0b1529383764804d5f44f24d;hb=72240301885fcf3156dd0cc82fa904c8d3286f50;hp=cecea430ba1a9e241d26c923d230540d7ee43786;hpb=007211e8705d793c2b4e7d75031d08c4d5fa250d;p=bertos.git diff --git a/bertos/algo/ramp_test.c b/bertos/algo/ramp_test.c index cecea430..0e7d58c5 100644 --- a/bertos/algo/ramp_test.c +++ b/bertos/algo/ramp_test.c @@ -7,7 +7,6 @@ * * \brief Test for compute, save and load ramps for stepper motors (implementation) * - * \version $Id$ * * \author Simone Zinanni * \author Bernie Innocenti @@ -109,55 +108,55 @@ static bool ramp_test_single(uint32_t minFreq, uint32_t maxFreq, uint32_t length) { - struct Ramp r; - uint16_t cur, old; - uint32_t clock; - uint32_t oldclock; + struct Ramp r; + uint16_t cur, old; + uint32_t clock; + uint32_t oldclock; - ramp_setup(&r, length, minFreq, maxFreq); + ramp_setup(&r, length, minFreq, maxFreq); - cur = old = r.clocksMaxWL; - clock = 0; - oldclock = 0; + cur = old = r.clocksMaxWL; + clock = 0; + oldclock = 0; - kprintf("testing ramp: (length=%lu, min=%lu, max=%lu)\n", (unsigned long)length, (unsigned long)minFreq, (unsigned long)maxFreq); - kprintf(" [length=%lu, max=%04x, min=%04x]\n", (unsigned long)r.clocksRamp, r.clocksMaxWL, r.clocksMinWL); + kprintf("testing ramp: (length=%lu, min=%lu, max=%lu)\n", (unsigned long)length, (unsigned long)minFreq, (unsigned long)maxFreq); + kprintf(" [length=%lu, max=%04x, min=%04x]\n", (unsigned long)r.clocksRamp, r.clocksMaxWL, r.clocksMinWL); int i = 0; - int nonbyte = 0; - - while (clock + cur < r.clocksRamp) - { - oldclock = clock; - old = cur; - - clock += cur; - cur = ramp_evaluate(&r, clock); - - if (old < cur) - { - uint16_t t1 = FIX_MULT32(oldclock >> RAMP_CLOCK_SHIFT_PRECISION, r.precalc.inv_total_time); - uint16_t t2 = FIX_MULT32(clock >> RAMP_CLOCK_SHIFT_PRECISION, r.precalc.inv_total_time); - uint16_t denom1 = FIX_MULT32((uint16_t)((~t1) + 1), r.precalc.max_div_min) + t1; - uint16_t denom2 = FIX_MULT32((uint16_t)((~t2) + 1), r.precalc.max_div_min) + t2; - - kprintf(" Failed: %04x @ %lu --> %04x @ %lu\n", old, (unsigned long)oldclock, cur, (unsigned long)clock); - kprintf(" T: %04x -> %04x\n", t1, t2); - kprintf(" DENOM: %04x -> %04x\n", denom1, denom2); - - cur = ramp_evaluate(&r, clock); - return false; - } + int nonbyte = 0; + + while (clock + cur < r.clocksRamp) + { + oldclock = clock; + old = cur; + + clock += cur; + cur = ramp_evaluate(&r, clock); + + if (old < cur) + { + uint16_t t1 = FIX_MULT32(oldclock >> RAMP_CLOCK_SHIFT_PRECISION, r.precalc.inv_total_time); + uint16_t t2 = FIX_MULT32(clock >> RAMP_CLOCK_SHIFT_PRECISION, r.precalc.inv_total_time); + uint16_t denom1 = FIX_MULT32((uint16_t)((~t1) + 1), r.precalc.max_div_min) + t1; + uint16_t denom2 = FIX_MULT32((uint16_t)((~t2) + 1), r.precalc.max_div_min) + t2; + + kprintf(" Failed: %04x @ %lu --> %04x @ %lu\n", old, (unsigned long)oldclock, cur, (unsigned long)clock); + kprintf(" T: %04x -> %04x\n", t1, t2); + kprintf(" DENOM: %04x -> %04x\n", denom1, denom2); + + cur = ramp_evaluate(&r, clock); + return false; + } i++; if ((old-cur) >= 256) nonbyte++; - } + } - kprintf("Test finished: %04x @ %lu [min=%04x, totlen=%lu, numsteps:%d, nonbyte:%d]\n", cur, (unsigned long)clock, r.clocksMinWL, (unsigned long)r.clocksRamp, i, nonbyte); + kprintf("Test finished: %04x @ %lu [min=%04x, totlen=%lu, numsteps:%d, nonbyte:%d]\n", cur, (unsigned long)clock, r.clocksMinWL, (unsigned long)r.clocksRamp, i, nonbyte); - return true; + return true; } int ramp_testSetup(void) @@ -184,12 +183,4 @@ int ramp_testRun(void) return 0; } -#if UNIT_TEST - #include "ramp.c" - #include - #include - #include - - TEST_MAIN(ramp); -#endif - +TEST_MAIN(ramp);