libspicboard-Doku
The timer module provides an event interface to the hardware timers. More...
Files | |
file | timer.h |
Typedefs | |
typedef struct ALARM | ALARM |
ALARM type. More... | |
typedef void(* | ALARMCALLBACK) (void) |
Type for alarm callback functions. More... | |
Functions | |
int8_t | sb_timer_cancelAlarm (ALARM *alrm) |
Cancel an alarm. More... | |
ALARM * | sb_timer_setAlarm (ALARMCALLBACK callback, uint16_t alarmtime, uint16_t cycle) |
Create a new alarm. More... | |
int8_t | sb_timer_delay (uint16_t waittime) |
Waits for a specific number of ms. More... | |
void | sb_timer_abortDelay () |
Aborts an active sb_timer_delay. More... | |
Detailed Description
The timer module provides an event interface to the hardware timers.
The module uses the 16-bit timer 1 of the ATmega32. The timer is dynamically configured as needed by the registered alarms and should always be clocked as slow as possible to keep the interrupt load low. When no alarms are registered, the timer clock is disabled.
- Note
- The timer module uses dynamic memory management (malloc()/free()) for the allocation of the ALARM types. This is also done from within ISRs. Thus care must be taken when calling malloc()/free() with interrupts enabled.
- Interrupts must be enabled for the timer to work.
Typedef Documentation
ALARM type.
This is type of a struct containing information about an alarm.
typedef void(* ALARMCALLBACK) (void) |
Type for alarm callback functions.
Alarm callback functions are invoked on the interrupt level whenever the associated alarm expires. The programming model for callback functions is similar to that of interrupt service routines.
Function Documentation
void sb_timer_abortDelay | ( | ) |
Aborts an active sb_timer_delay.
This function must be invoked on the ISR level.
- See also
- sb_timer_delay
int8_t sb_timer_cancelAlarm | ( | ALARM * | alrm | ) |
Cancel an alarm.
- Parameters
-
alrm identifier of the alarm that should be canceled
- Return values
-
0 success -1 an error occurred
- See also
- sb_timer_setAlarm
- Note
- Alarms must not be canceled twice
int8_t sb_timer_delay | ( | uint16_t | waittime | ) |
Waits for a specific number of ms.
This function must not be invoked with interrupts disabled, i.e. from an interrupt handler (or generally, from the ISR level) or a critical section of the application.
The CPU is set in sleep mode while waiting.
- Parameters
-
waittime wait time in ms
- Return values
-
0 success -1 alarm could not be activated -2 sb_timer_delay invoked while interrupts disabled
- See also
- sb_timer_abortDelay
ALARM* sb_timer_setAlarm | ( | ALARMCALLBACK | callback, |
uint16_t | alarmtime, | ||
uint16_t | cycle | ||
) |
Create a new alarm.
This function can be used to set single shot, as well as repeating timers.
- Single shot: Set cycle to 0. This alarm must not be canceled after being fired.
- Repetitive: The first shot can be adjusted be setting alarmtime > 0. Otherwise cycle is used.
- Note
- The callback function is called from within the ISR-context.
- Parameters
-
callback callback function that will be invoked whenever the alarm expires alarmtime time in ms relative to the current time when the alarm shall expire the first time. If set to 0 cycle time will be used. cycle time in ms for alarms that periodically expire after the first regular expiry. Set to 0 for single shot timers.
- Returns
- the identifier of the alarm, or NULL if creating the alarm failed.
- Warning
- Canceling a timer twice or canceling a single shot timer after its expiry may cause unexpected results.
- See also
- sb_timer_cancelAlarm