Select one of the symbols to view example projects that use it.
 
Outline
#define _PICO_TIME_ADAPTER_H
#include "hardware/irq.h"
#include "hardware/timer.h"
#include "pico/assert.h"
#define TA_NUM_TIMERS
#define TA_NUM_TIMER_ALARMS
#define timer_hw_from_timer
ta_force_irq(alarm_pool_timer_t *, uint)
ta_clear_force_irq(alarm_pool_timer_t *, uint)
ta_clear_irq(alarm_pool_timer_t *, uint)
ta_from_current_irq(uint *)
ta_set_timeout(alarm_pool_timer_t *, uint, int64_t)
ta_time_us_64(alarm_pool_timer_t *)
ta_enable_irq_handler(alarm_pool_timer_t *, uint, irq_handler_t)
ta_disable_irq_handler(alarm_pool_timer_t *, uint, irq_handler_t)
ta_hardware_alarm_claim(alarm_pool_timer_t *, uint)
ta_hardware_alarm_claim_unused(alarm_pool_timer_t *, bool)
ta_timer_instance(uint)
ta_timer_num(alarm_pool_timer_t *)
ta_default_timer_instance()
Files
loading...
SourceVuRaspberry Pi Pico SDK and ExamplesPicoSDKsrc/rp2_common/pico_time_adapter/include/pico/time_adapter.h
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/* * Copyright (c) 2024 Raspberry Pi (Trading) Ltd. * * SPDX-License-Identifier: BSD-3-Clause *//* ... */ #ifndef _PICO_TIME_ADAPTER_H #define _PICO_TIME_ADAPTER_H #include "hardware/irq.h" #include "hardware/timer.h" #include "pico/assert.h" #define TA_NUM_TIMERS NUM_GENERIC_TIMERS #define TA_NUM_TIMER_ALARMS NUM_ALARMS #define timer_hw_from_timer(t) ((timer_hw_t *)(t)) static inline void ta_force_irq(alarm_pool_timer_t *timer, uint alarm_num) { hw_set_bits(&timer_hw_from_timer(timer)->intf, 1u << alarm_num); }{ ... } static inline void ta_clear_force_irq(alarm_pool_timer_t *timer, uint alarm_num) { hw_clear_bits(&timer_hw_from_timer(timer)->intf, 1u << alarm_num); }{ ... } static inline void ta_clear_irq(alarm_pool_timer_t *timer, uint alarm_num) { timer_hw_from_timer(timer)->intr = 1u << alarm_num; }{ ... } static inline alarm_pool_timer_t *ta_from_current_irq(uint *alarm_num) { uint irq_num = __get_current_exception() - VTABLE_FIRST_IRQ; alarm_pool_timer_t *timer = timer_get_instance(TIMER_NUM_FROM_IRQ(irq_num)); *alarm_num = TIMER_ALARM_NUM_FROM_IRQ(irq_num); return timer; }{ ... } static inline void ta_set_timeout(alarm_pool_timer_t *timer, uint alarm_num, int64_t target) { timer_hw_from_timer(timer)->alarm[alarm_num] = (uint32_t) target; }{ ... } static inline uint64_t ta_time_us_64(alarm_pool_timer_t *timer) { return timer_time_us_64(timer_hw_from_timer(timer)); }{ ... } static inline void ta_enable_irq_handler(alarm_pool_timer_t *timer, uint alarm_num, irq_handler_t irq_handler) { // disarm the timer uint irq_num = timer_hardware_alarm_get_irq_num(timer, alarm_num); timer_hw_from_timer(timer)->armed = 1u << alarm_num; irq_set_exclusive_handler(irq_num, irq_handler); irq_set_enabled(irq_num, true); hw_set_bits(&timer_hw_from_timer(timer)->inte, 1u << alarm_num); }{ ... } static inline void ta_disable_irq_handler(alarm_pool_timer_t *timer, uint alarm_num, irq_handler_t irq_handler) { uint irq_num = timer_hardware_alarm_get_irq_num(timer, alarm_num); hw_clear_bits(&timer_hw_from_timer(timer)->inte, 1u << alarm_num); irq_set_enabled(irq_num, true); irq_remove_handler(irq_num, irq_handler); hardware_alarm_unclaim(alarm_num); }{ ... } static inline void ta_hardware_alarm_claim(alarm_pool_timer_t *timer, uint hardware_alaram_num) { timer_hardware_alarm_claim(timer_hw_from_timer(timer), hardware_alaram_num); }{ ... } static inline int ta_hardware_alarm_claim_unused(alarm_pool_timer_t *timer, bool required) { return timer_hardware_alarm_claim_unused(timer, required); }{ ... } static inline alarm_pool_timer_t *ta_timer_instance(uint timer_num) { return timer_get_instance(timer_num); }{ ... } static inline uint ta_timer_num(alarm_pool_timer_t *timer) { return timer_get_index(timer_hw_from_timer(timer)); }{ ... } static inline alarm_pool_timer_t *ta_default_timer_instance(void) { return PICO_DEFAULT_TIMER_INSTANCE(); }{ ... } #endif/* ... */
Details
Show:
from
Types: Columns:
This file uses the notable symbols shown below. Click anywhere in the file to view more details.