Lines Matching full:timer
14 rt_inline rt_uint32_t timeout_calc(rt_hwtimer_t *timer, rt_hwtimerval_t *tv) in timeout_calc() argument
25 overflow = timer->info->maxcnt/(float)timer->freq; in timeout_calc()
28 if (tv_sec < (1/(float)timer->freq)) in timeout_calc()
32 timeout = 1/(float)timer->freq; in timeout_calc()
42 counter = timeout*timer->freq; in timeout_calc()
43 devi = tv_sec - (counter/(float)timer->freq)*i; in timeout_calc()
64 timer->cycles = i; in timeout_calc()
65 timer->reload = i; in timeout_calc()
66 timer->period_sec = timeout; in timeout_calc()
67 counter = timeout*timer->freq; in timeout_calc()
75 rt_hwtimer_t *timer; in rt_hwtimer_init() local
77 timer = (rt_hwtimer_t *)dev; in rt_hwtimer_init()
79 if ((1000000 <= timer->info->maxfreq) && (1000000 >= timer->info->minfreq)) in rt_hwtimer_init()
81 timer->freq = 1000000; in rt_hwtimer_init()
85 timer->freq = timer->info->minfreq; in rt_hwtimer_init()
87 timer->mode = HWTIMER_MODE_ONESHOT; in rt_hwtimer_init()
88 timer->cycles = 0; in rt_hwtimer_init()
89 timer->overflow = 0; in rt_hwtimer_init()
91 if (timer->ops->init) in rt_hwtimer_init()
93 timer->ops->init(timer, 1); in rt_hwtimer_init()
106 rt_hwtimer_t *timer; in rt_hwtimer_open() local
108 timer = (rt_hwtimer_t *)dev; in rt_hwtimer_open()
109 if (timer->ops->control != RT_NULL) in rt_hwtimer_open()
111 timer->ops->control(timer, HWTIMER_CTRL_FREQ_SET, &timer->freq); in rt_hwtimer_open()
124 rt_hwtimer_t *timer; in rt_hwtimer_close() local
126 timer = (rt_hwtimer_t*)dev; in rt_hwtimer_close()
127 if (timer->ops->init != RT_NULL) in rt_hwtimer_close()
129 timer->ops->init(timer, 0); in rt_hwtimer_close()
144 rt_hwtimer_t *timer; in rt_hwtimer_read() local
149 timer = (rt_hwtimer_t *)dev; in rt_hwtimer_read()
150 if (timer->ops->count_get == RT_NULL) in rt_hwtimer_read()
153 cnt = timer->ops->count_get(timer); in rt_hwtimer_read()
154 if (timer->info->cntmode == HWTIMER_CNTMODE_DW) in rt_hwtimer_read()
156 cnt = (timer->freq * timer->period_sec) - cnt; in rt_hwtimer_read()
159 t = timer->overflow * timer->period_sec + cnt/(float)timer->freq; in rt_hwtimer_read()
172 rt_hwtimer_t *timer; in rt_hwtimer_write() local
174 timer = (rt_hwtimer_t *)dev; in rt_hwtimer_write()
175 if ((timer->ops->start == RT_NULL) || (timer->ops->stop == RT_NULL)) in rt_hwtimer_write()
181 timer->ops->stop(timer); in rt_hwtimer_write()
182 timer->overflow = 0; in rt_hwtimer_write()
184 t = timeout_calc(timer, (rt_hwtimerval_t*)buffer); in rt_hwtimer_write()
185 if ((timer->cycles <= 1) && (timer->mode == HWTIMER_MODE_ONESHOT)) in rt_hwtimer_write()
190 if (timer->ops->start(timer, t, opm) != RT_EOK) in rt_hwtimer_write()
199 rt_hwtimer_t *timer; in rt_hwtimer_control() local
201 timer = (rt_hwtimer_t *)dev; in rt_hwtimer_control()
207 if (timer->ops->stop != RT_NULL) in rt_hwtimer_control()
209 timer->ops->stop(timer); in rt_hwtimer_control()
228 if ((*f > timer->info->maxfreq) || (*f < timer->info->minfreq)) in rt_hwtimer_control()
234 if (timer->ops->control != RT_NULL) in rt_hwtimer_control()
236 result = timer->ops->control(timer, cmd, args); in rt_hwtimer_control()
239 timer->freq = *f; in rt_hwtimer_control()
256 *((struct rt_hwtimer_info*)args) = *timer->info; in rt_hwtimer_control()
276 timer->mode = *m; in rt_hwtimer_control()
289 void rt_device_hwtimer_isr(rt_hwtimer_t *timer) in rt_device_hwtimer_isr() argument
291 RT_ASSERT(timer != RT_NULL); in rt_device_hwtimer_isr()
293 timer->overflow ++; in rt_device_hwtimer_isr()
295 if (timer->cycles != 0) in rt_device_hwtimer_isr()
297 timer->cycles --; in rt_device_hwtimer_isr()
300 if (timer->cycles == 0) in rt_device_hwtimer_isr()
302 timer->cycles = timer->reload; in rt_device_hwtimer_isr()
304 if (timer->mode == HWTIMER_MODE_ONESHOT) in rt_device_hwtimer_isr()
306 if (timer->ops->stop != RT_NULL) in rt_device_hwtimer_isr()
308 timer->ops->stop(timer); in rt_device_hwtimer_isr()
312 if (timer->parent.rx_indicate != RT_NULL) in rt_device_hwtimer_isr()
314 timer->parent.rx_indicate(&timer->parent, sizeof(struct rt_hwtimerval)); in rt_device_hwtimer_isr()
331 rt_err_t rt_device_hwtimer_register(rt_hwtimer_t *timer, const char *name, void *user_data) in rt_device_hwtimer_register() argument
335 RT_ASSERT(timer != RT_NULL); in rt_device_hwtimer_register()
336 RT_ASSERT(timer->ops != RT_NULL); in rt_device_hwtimer_register()
337 RT_ASSERT(timer->info != RT_NULL); in rt_device_hwtimer_register()
339 device = &(timer->parent); in rt_device_hwtimer_register()