Low level interface to the low power ticker of a target. More...
Modules | |
Low Power Ticker tests | |
Tests to validate the proper implementation of the low power ticker. | |
Ticker Hal | |
Low level interface to the ticker of a target. | |
Ticker Tests | |
Tests to validate the proper implementation of a ticker. | |
Functions | |
ticker_irq_handler_type | set_lp_ticker_irq_handler (ticker_irq_handler_type ticker_irq_handler) |
Set low power ticker IRQ handler. More... | |
const ticker_data_t * | get_lp_ticker_data (void) |
Get low power ticker's data. More... | |
void | lp_ticker_irq_handler (void) |
The wrapper for ticker_irq_handler, to pass lp ticker's data. More... | |
void | lp_ticker_init (void) |
Initialize the low power ticker. More... | |
void | lp_ticker_free (void) |
Deinitialize the lower power ticker. More... | |
uint32_t | lp_ticker_read (void) |
Read the current tick. More... | |
void | lp_ticker_set_interrupt (timestamp_t timestamp) |
Set interrupt for specified timestamp. More... | |
void | lp_ticker_disable_interrupt (void) |
Disable low power ticker interrupt. More... | |
void | lp_ticker_clear_interrupt (void) |
Clear the low power ticker interrupt. More... | |
void | lp_ticker_fire_interrupt (void) |
Set pending interrupt that should be fired right away. More... | |
const ticker_info_t * | lp_ticker_get_info (void) |
Get frequency and counter bits of this ticker. More... | |
Low level interface to the low power ticker of a target.
To permit compile-time optimization, the following macros can be defined by a target's device.h:
LP_TICKER_PERIOD_NUM, LP_TICKER_PERIOD_DEN: These denote the ratio (numerator, denominator) of the ticker period to a microsecond. For example, a 64kHz ticker would have NUM = 125, DEN = 8; a 4kHz ticker would have NUM = 250, DEN = 1; a 32.768kHz ticker would have NUM = 15625, DEN = 512. Both numerator and denominator must be 32 bits or less. They do not need to be fully simplified, so 32.768kHz could also be NUM = 1000000, DEN = 32768, but more simplification may be a minor speed optimisation, as can matching numerator or denominator with US_TICKER.
LP_TICKER_MASK: The value mask for the ticker - eg 0x07FFFFFF for a 27-bit ticker.
If any are defined, all 3 must be defined, and the macros are checked for consistency with lp_ticker_get_info by test lp_ticker_info_test.
const ticker_data_t* get_lp_ticker_data | ( | void | ) |
Get low power ticker's data.
void lp_ticker_clear_interrupt | ( | void | ) |
void lp_ticker_disable_interrupt | ( | void | ) |
void lp_ticker_fire_interrupt | ( | void | ) |
void lp_ticker_free | ( | void | ) |
Deinitialize the lower power ticker.
Powerdown the lp ticker in preparation for sleep, powerdown, or reset.
After calling this function no other ticker functions should be called except lp_ticker_init(). Calling any function other than init after freeing is undefined.
const ticker_info_t* lp_ticker_get_info | ( | void | ) |
void lp_ticker_init | ( | void | ) |
Initialize the low power ticker.
Initialize or re-initialize the ticker. This resets all the clocking and prescaler registers, along with disabling the compare interrupt.
Pseudo Code:
void lp_ticker_irq_handler | ( | void | ) |
The wrapper for ticker_irq_handler, to pass lp ticker's data.
uint32_t lp_ticker_read | ( | void | ) |
Read the current tick.
If no rollover has occurred, the seconds passed since lp_ticker_init() was called can be found by dividing the ticks returned by this function by the frequency returned by lp_ticker_get_info.
Pseudo Code:
void lp_ticker_set_interrupt | ( | timestamp_t | timestamp | ) |
Set interrupt for specified timestamp.
timestamp | The time in ticks to be set |
Pseudo Code:
ticker_irq_handler_type set_lp_ticker_irq_handler | ( | ticker_irq_handler_type | ticker_irq_handler | ) |
Set low power ticker IRQ handler.
ticker_irq_handler | IRQ handler to be connected |