68,14 → 68,20 |
struct timespec actual_timer; |
|
long nsec,sec,min,hrs,day; |
long mean_delay,tot_delay,num_delay; |
long total_percent; |
|
signed long long start,end,res; |
struct timespec s_test; |
struct timespec s_test,startts,endts; |
|
task_nopreempt(); |
|
num_delay = tot_delay = mean_delay = 0; |
|
while (1) { |
|
if (clk_per_msec != 0) { |
|
rdtscll(start); |
sys_gettime(&actual_timer); |
rdtscll(end); |
85,6 → 91,26 |
res -= (end - start); |
s_test.tv_nsec = res * 1000000 / clk_per_msec; |
|
|
} else { |
|
sys_gettime(&startts); |
sys_gettime(&actual_timer); |
sys_gettime(&endts); |
SUBTIMESPEC(&endts,&startts,&s_test); |
sys_gettime(&startts); |
sys_gettime(&endts); |
SUBTIMESPEC(&endts,&startts,&endts); |
SUBTIMESPEC(&s_test,&endts,&s_test); |
|
} |
|
if (tot_delay < 1000000000) { |
tot_delay += s_test.tv_nsec; |
num_delay ++; |
mean_delay = tot_delay / num_delay; |
} |
|
nsec = actual_timer.tv_nsec; |
sec = actual_timer.tv_sec; |
min = sec / 60; |
107,10 → 133,16 |
|
printf_xy(0,8,WHITE,"CMOS Adjustement setting"); |
printf_xy(0,9,WHITE,"CMOS last delta Clk/msec: %12ld",(long)last_delta_clk_per_msec); |
printf_xy(0,10,WHITE,"CMOS total delta Clk/msec: %12ld",(long)total_delta_clk_per_msec); |
|
printf_xy(0,12,WHITE,"Timer Access Delay: %12ld ns",s_test.tv_nsec); |
if (total_delta_clk_per_msec != 0) |
total_percent = clk_per_msec / abs(total_delta_clk_per_msec); |
else |
total_percent = 0; |
|
printf_xy(0,10,WHITE,"CMOS total delta Clk/msec: %12ld (1/%ld)",(long)total_delta_clk_per_msec,total_percent); |
|
printf_xy(0,12,WHITE,"Timer Access Delay: %12ld ns",mean_delay); |
|
task_endcycle(); |
|
} |