CPU Cycle Counter provides an interface to the COUNT and COMPARE registers.
Data Structures | |
struct | t_cpu_time |
Structure holding private information, automatically initialized by the cpu_set_timeout() function. More... | |
Macros | |
#define | Get_sys_compare() ( Get_system_register(AVR32_COMPARE) ) |
#define | Get_sys_count() ( Get_system_register(AVR32_COUNT) ) |
#define | Set_sys_compare(x) ( Set_system_register(AVR32_COMPARE, (x)) ) |
#define | Set_sys_count(x) ( Set_system_register(AVR32_COUNT, (x)) ) |
Functions | |
static __always_inline uint32_t | cpu_cy_2_ms (unsigned long cy, unsigned long fcpu_hz) |
Convert CPU cycles into milli-seconds. More... | |
static __always_inline uint32_t | cpu_cy_2_us (unsigned long cy, unsigned long fcpu_hz) |
Convert CPU cycles into micro-seconds. More... | |
static __always_inline void | cpu_delay_cy (unsigned long delay) |
Waits during at least the specified delay (in CPU cycles) before returning. More... | |
static __always_inline void | cpu_delay_ms (unsigned long delay, unsigned long fcpu_hz) |
Waits during at least the specified delay (in millisecond) before returning. More... | |
static __always_inline void | cpu_delay_us (unsigned long delay, unsigned long fcpu_hz) |
Waits during at least the specified delay (in microsecond) before returning. More... | |
static __always_inline unsigned long | cpu_is_timeout (t_cpu_time *cpu_time) |
Test if a timer variable reached its timeout. More... | |
static __always_inline unsigned long | cpu_is_timer_stopped (t_cpu_time *cpu_time) |
Test if a timer is stopped. More... | |
static __always_inline uint32_t | cpu_ms_2_cy (unsigned long ms, unsigned long fcpu_hz) |
Convert milli-seconds into CPU cycles. More... | |
static __always_inline void | cpu_set_timeout (unsigned long delay, t_cpu_time *cpu_time) |
Set a timer variable. More... | |
static __always_inline void | cpu_stop_timeout (t_cpu_time *cpu_time) |
Stop a timeout detection. More... | |
static __always_inline uint32_t | cpu_us_2_cy (unsigned long us, unsigned long fcpu_hz) |
Convert micro-seconds into CPU cycles. More... | |
#define Get_sys_compare | ( | ) | ( Get_system_register(AVR32_COMPARE) ) |
#define Get_sys_count | ( | ) | ( Get_system_register(AVR32_COUNT) ) |
#define Set_sys_compare | ( | x | ) | ( Set_system_register(AVR32_COMPARE, (x)) ) |
#define Set_sys_count | ( | x | ) | ( Set_system_register(AVR32_COUNT, (x)) ) |
|
static |
Convert CPU cycles into milli-seconds.
cy,: | Number of CPU cycles. |
fcpu_hz,: | CPU frequency in Hz. |
|
static |
Convert CPU cycles into micro-seconds.
cy,: | Number of CPU cycles. |
fcpu_hz,: | CPU frequency in Hz. |
|
static |
Waits during at least the specified delay (in CPU cycles) before returning.
delay,: | Number of CPU cycles to wait. |
References cpu_is_timeout(), and cpu_set_timeout().
|
static |
Waits during at least the specified delay (in millisecond) before returning.
delay,: | Number of millisecond to wait. |
fcpu_hz,: | CPU frequency in Hz. |
References cpu_is_timeout(), cpu_ms_2_cy(), and cpu_set_timeout().
|
static |
Waits during at least the specified delay (in microsecond) before returning.
delay,: | Number of microsecond to wait. |
fcpu_hz,: | CPU frequency in Hz. |
References cpu_is_timeout(), cpu_set_timeout(), and cpu_us_2_cy().
|
static |
Test if a timer variable reached its timeout.
Once the timeout is reached, the function will always return true, until the cpu_stop_timeout() function is called.
Ex: t_cpu_time timer; cpu_set_timeout( 10, FOSC0, &timer ); // timeout in 10 ms if( cpu_is_timeout(&timer) ) cpu_stop_timeout(&timer); ../..
cpu_time,: | (input) internal information used by the timer API. |
References CPU_TIMER_STATE_REACHED, CPU_TIMER_STATE_STOPPED, t_cpu_time::delay_end_cycle, t_cpu_time::delay_start_cycle, Get_system_register, and t_cpu_time::timer_state.
Referenced by cpu_delay_cy(), cpu_delay_ms(), and cpu_delay_us().
|
static |
Test if a timer is stopped.
cpu_time,: | (input) internal information used by the timer API. |
References CPU_TIMER_STATE_STOPPED, and t_cpu_time::timer_state.
|
static |
Convert milli-seconds into CPU cycles.
ms,: | Number of millisecond. |
fcpu_hz,: | CPU frequency in Hz. |
Referenced by cpu_delay_ms().
|
static |
Set a timer variable.
Ex: t_cpu_time timer; cpu_set_timeout( cpu_ms_2_cy(10, FOSC0), &timer ); // timeout in 10 ms if( cpu_is_timeout(&timer) ) cpu_stop_timeout(&timer); ../..
delay,: | (input) delay in CPU cycles before timeout. |
cpu_time,: | (output) internal information used by the timer API. |
References CPU_TIMER_STATE_STARTED, t_cpu_time::delay_end_cycle, t_cpu_time::delay_start_cycle, Get_system_register, and t_cpu_time::timer_state.
Referenced by cpu_delay_cy(), cpu_delay_ms(), and cpu_delay_us().
|
static |
Stop a timeout detection.
Ex: t_cpu_time timer; cpu_set_timeout( 10, FOSC0, &timer ); // timeout in 10 ms if( cpu_is_timeout(&timer) ) cpu_stop_timeout(&timer); ../..
cpu_time,: | (input) internal information used by the timer API. |
References CPU_TIMER_STATE_STOPPED, and t_cpu_time::timer_state.
|
static |
Convert micro-seconds into CPU cycles.
us,: | Number of microsecond. |
fcpu_hz,: | CPU frequency in Hz. |
Referenced by cpu_delay_us().