14#include "platform/nrf_802154_hp_timer.h"
15#include "hal/nrf_timer.h"
18#define HP_TIMER NRF_TIMER10
25static uint32_t unexpected_sync;
30 nrf_timer_task_trigger(HP_TIMER, (nrf_timer_task_t)NRF_TIMER_TASK_CAPTURE1);
31 return nrf_timer_cc_get(HP_TIMER, (nrf_timer_cc_channel_t)CAPTURE_CC);
35nrf_802154_hp_timer_init(
void)
37 nrf_timer_bit_width_set(HP_TIMER, NRF_TIMER_BIT_WIDTH_32);
38 nrf_timer_prescaler_set(HP_TIMER, NRF_TIMER_FREQ_1MHz);
39 nrf_timer_mode_set(HP_TIMER, NRF_TIMER_MODE_TIMER);
43nrf_802154_hp_timer_deinit(
void)
45#if NRF_TIMER_HAS_SHUTDOWN
46 nrf_timer_task_trigger(HP_TIMER, NRF_TIMER_TASK_SHUTDOWN);
48 HP_TIMER->TASKS_STOP = 1;
49 HP_TIMER->TASKS_CLEAR = 1;
54nrf_802154_hp_timer_start(
void)
56 nrf_timer_task_trigger(HP_TIMER, NRF_TIMER_TASK_START);
60nrf_802154_hp_timer_stop(
void)
62#if NRF_TIMER_HAS_SHUTDOWN
63 nrf_timer_task_trigger(HP_TIMER, NRF_TIMER_TASK_SHUTDOWN);
65 nrf_timer_task_trigger(HP_TIMER, NRF_TIMER_TASK_STOP);
66 nrf_timer_task_trigger(HP_TIMER, NRF_TIMER_TASK_CLEAR);
71nrf_802154_hp_timer_current_time_get(
void)
73 return timer_time_get();
77nrf_802154_hp_timer_sync_task_get(
void)
79 return nrf_timer_task_address_get(HP_TIMER, (nrf_timer_task_t)NRF_TIMER_TASK_CAPTURE2);
83nrf_802154_hp_timer_sync_prepare(
void)
85 uint32_t past_time = timer_time_get() - 1;
87 unexpected_sync = past_time;
88 nrf_timer_cc_set(HP_TIMER, (nrf_timer_cc_channel_t)SYNC_CC, past_time);
92nrf_802154_hp_timer_sync_time_get(uint32_t *p_timestamp)
94 uint32_t sync_time = nrf_timer_cc_get(HP_TIMER, (nrf_timer_cc_channel_t)SYNC_CC);
96 if(sync_time != unexpected_sync) {
97 *p_timestamp = sync_time;
105nrf_802154_hp_timer_timestamp_task_get(
void)
107 return nrf_timer_task_address_get(HP_TIMER, (nrf_timer_task_t)NRF_TIMER_TASK_CAPTURE3);
111nrf_802154_hp_timer_timestamp_get(
void)
113 return nrf_timer_cc_get(HP_TIMER, (nrf_timer_cc_channel_t)TIMESTAMP_CC);