mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #7035 from mprse/ticker_fix
tests-mbed_hal-common_tickers: Fix increment test case implementationpull/6752/merge
commit
19fb80442d
|
@ -344,20 +344,34 @@ void ticker_increment_test(void)
|
||||||
} else { // high frequency tickers
|
} else { // high frequency tickers
|
||||||
|
|
||||||
uint32_t num_of_cycles = NUM_OF_CYCLES;
|
uint32_t num_of_cycles = NUM_OF_CYCLES;
|
||||||
|
const uint32_t repeat_count = 20;
|
||||||
|
const uint32_t max_inc_val = 100;
|
||||||
|
|
||||||
uint32_t base_tick_count = count_ticks(num_of_cycles, 1);
|
uint32_t base_tick_count = count_ticks(num_of_cycles, 1);
|
||||||
uint32_t next_tick_count = base_tick_count;
|
uint32_t next_tick_count = base_tick_count;
|
||||||
uint32_t inc_val = 0;
|
uint32_t inc_val = 0;
|
||||||
|
uint32_t repeat_cnt = 0;
|
||||||
|
|
||||||
while (inc_val < 100) {
|
while (inc_val < max_inc_val) {
|
||||||
|
|
||||||
next_tick_count = count_ticks(num_of_cycles + inc_val, 1);
|
next_tick_count = count_ticks(num_of_cycles + inc_val, 1);
|
||||||
|
|
||||||
if (next_tick_count == base_tick_count) {
|
if (next_tick_count == base_tick_count) {
|
||||||
|
|
||||||
/* Same tick count, so increase num of cycles. */
|
/* Same tick count, so repeat 20 times and than
|
||||||
inc_val++;
|
* increase num of cycles by 1.
|
||||||
|
*/
|
||||||
|
if (repeat_cnt == repeat_count) {
|
||||||
|
inc_val++;
|
||||||
|
repeat_cnt = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
repeat_cnt++;
|
||||||
} else {
|
} else {
|
||||||
|
/* Check if we got 1 tick diff. */
|
||||||
|
if (next_tick_count - base_tick_count == 1 ||
|
||||||
|
base_tick_count - next_tick_count == 1) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
/* It is possible that the difference between base and next
|
/* It is possible that the difference between base and next
|
||||||
* tick count on some platforms is greater that 1, in this case we need
|
* tick count on some platforms is greater that 1, in this case we need
|
||||||
|
@ -366,12 +380,8 @@ void ticker_increment_test(void)
|
||||||
*/
|
*/
|
||||||
num_of_cycles /= 2;
|
num_of_cycles /= 2;
|
||||||
inc_val = 0;
|
inc_val = 0;
|
||||||
|
repeat_cnt = 0;
|
||||||
base_tick_count = count_ticks(num_of_cycles, 1);
|
base_tick_count = count_ticks(num_of_cycles, 1);
|
||||||
|
|
||||||
if (next_tick_count - base_tick_count == 1 ||
|
|
||||||
base_tick_count - next_tick_count == 1) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue