Microchip® Advanced Software Framework

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Clock library

The clock library is the interface between Contiki and the platform specific clock functionality.

The clock library defines a macro, CLOCK_SECOND, to convert seconds into the tick resolution of the platform. Typically this is 1-10 milliseconds, e.g. 4*CLOCK_SECOND could be 512. A 16 bit counter would thus overflow every 1-10 minutes. Platforms use the tick interrupt to maintain a long term count of seconds since startup.

Platforms may also implement rtimers for greater time resolution and for real-time interrupts, These use a corresponding RTIMER_SECOND.

Note
These timers do not necessarily have a common divisor or are phase locked. One may be crystal controlled and the other may not. Low power operation or sleep will often use one for wake and disable the other, then give it a tick correction after wakeup.
The clock library need in many cases not be used directly. Rather, the timer library, event timers, or rtimer library should be used.
See Also
Timer library
Event timers
Realtime library

Macros

#define CLOCK_SECOND
 A second, measured in GCLK generator 5 clock source. More...
 

Functions

void clock_delay (unsigned int delay)
 
void clock_delay_usec (uint16_t dt)
 Delay a given number of microseconds. More...
 
unsigned short clock_fine (void)
 
int clock_fine_max (void)
 Deprecated platform-specific routines. More...
 
void clock_init (void)
 Initialize the clock library. More...
 
CCIF unsigned long clock_seconds (void)
 Get the current value of the platform seconds. More...
 
void clock_set_seconds (unsigned long sec)
 Set the value of the platform seconds. More...
 
CCIF clock_time_t clock_time (void)
 Get the current clock time. More...
 
void clock_wait (clock_time_t t)
 Wait for a given number of ticks. More...
 

void clock_delay ( unsigned int  delay)

Referenced by leds_blink().

void clock_delay_usec ( uint16_t  dt)

Delay a given number of microseconds.

Parameters
dtHow many microseconds to delay.
Note
Interrupts could increase the delay by a variable amount.
unsigned short clock_fine ( void  )
int clock_fine_max ( void  )

Deprecated platform-specific routines.

CCIF unsigned long clock_seconds ( void  )

Get the current value of the platform seconds.

This could be the number of seconds since startup, or since a standard epoch.

Returns
The value.

References seconds.

Referenced by print_stats(), stimer_elapsed(), stimer_expired(), stimer_remaining(), stimer_restart(), and stimer_set().

void clock_set_seconds ( unsigned long  sec)

Set the value of the platform seconds.

Parameters
secThe value to set.
CCIF clock_time_t clock_time ( void  )

Get the current clock time.

This function returns the current system clock time.

Returns
The current clock time, measured in system ticks.

References system_interrupt_enter_critical_section(), system_interrupt_leave_critical_section(), and ticks.

Referenced by double_interval(), echo_reply_callback(), fire(), if(), make_addrmap(), new_interval(), PROCESS_THREAD(), schedule_for_end(), timer_expired(), timer_remaining(), timer_restart(), timer_set(), and update_time().

void clock_wait ( clock_time_t  t)

Wait for a given number of ticks.

Parameters
tHow many ticks.