litex: reorganize things, first work working version
[litex.git] / litex / soc / software / libbase / time.c
1 #include <generated/csr.h>
2 #include <time.h>
3
4 void time_init(void)
5 {
6 int t;
7
8 timer0_en_write(0);
9 t = 2*identifier_frequency_read();
10 timer0_reload_write(t);
11 timer0_load_write(t);
12 timer0_en_write(1);
13 }
14
15 int elapsed(int *last_event, int period)
16 {
17 int t, dt;
18
19 timer0_update_value_write(1);
20 t = timer0_reload_read() - timer0_value_read();
21 if(period < 0) {
22 *last_event = t;
23 return 1;
24 }
25 dt = t - *last_event;
26 if(dt < 0)
27 dt += timer0_reload_read();
28 if((dt > period) || (dt < 0)) {
29 *last_event = t;
30 return 1;
31 } else
32 return 0;
33 }