Contiki-NG
Macros | Functions
Clock library

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

Macros

#define CLOCK_SECOND
 A second, measured in system clock time.
 

Functions

void clock_init (void)
 Initialize the clock library. More...
 
clock_time_t clock_time (void)
 Get the current clock time. More...
 
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...
 
void clock_wait (clock_time_t t)
 Wait for a given number of ticks. More...
 
void clock_delay_usec (uint16_t dt)
 Delay a given number of microseconds. More...
 
int clock_fine_max (void)
 Deprecated platform-specific routines.
 
void clock_delay (unsigned int delay)
 Obsolete delay function but we implement it here since some code still uses it. More...
 

Detailed Description

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

Function Documentation

void clock_delay ( unsigned int  dt)

Obsolete delay function but we implement it here since some code still uses it.

Obsolete delay function but we implement it here since some code still uses it.

Definition at line 164 of file clock.c.

References clock_delay_usec(), and watchdog_periodic().

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.

Delay a given number of microseconds.

Definition at line 150 of file clock.c.

References GPT_0_BASE, GPTIMER_CTL, GPTIMER_CTL_TAEN, and GPTIMER_TAILR.

Referenced by clock_delay(), i2c_init(), i2c_master_command(), init(), mmc_arch_cd_changed_callback(), mp3_wtv020sd_gpio_next(), mp3_wtv020sd_pause(), mp3_wtv020sd_reset(), pm_get_voltage(), pm_reset_system(), and rtcc_set_autocalibration().

void clock_init ( void  )

Initialize the clock library.

This function initializes the clock library and should be called from the main() function of the system.

Initialize the clock library.

We initialise the SysTick to fire 128 interrupts per second, giving us a value of 128 for CLOCK_SECOND

We also initialise GPT0:Timer A, which is used by clock_delay_usec(). We use 16-bit range (individual), count-down, one-shot, no interrupts. The prescaler is computed according to the system clock in order to get 1 tick per usec.

Definition at line 93 of file clock.c.

References CLOCK_SECOND, GPT_0_BASE, GPTIMER_CFG, GPTIMER_CTL, GPTIMER_TAMR, GPTIMER_TAPR, lfclk_config(), rtc_config(), SYS_CTRL_RCGCGPT, SYS_CTRL_RCGCGPT_GPT0, and SysTick_Config().

Referenced by platform_init_stage_one(), and soc_init().

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.

Definition at line 130 of file clock.c.

References CLOCK_SECOND, clock_time(), etimer_next_expiration_time(), and etimer_pending().

Referenced by extract_lladdr_from_llao_aligned(), newdata(), platform_idle(), platform_main_loop(), resolv_lookup(), resolv_query(), stimer_elapsed(), stimer_expired(), stimer_remaining(), stimer_restart(), stimer_set(), and uip_nameserver_update().

void clock_set_seconds ( unsigned long  sec)

Set the value of the platform seconds.

Parameters
secThe value to set.

Definition at line 124 of file clock.c.

clock_time_t clock_time ( void  )
void clock_wait ( clock_time_t  t)

Wait for a given number of ticks.

Parameters
tHow many ticks.

Wait for a given number of ticks.

Definition at line 136 of file clock.c.

References __WFE(), clock_time(), start(), and watchdog_periodic().