Microchip® Advanced Software Framework

 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Frequency Meter (FREQM)

This is a driver for configuration, enabling, disabling and use of the on-chip UC3 Frequency Meter (FREQM) controller.

Modules

 

Macros

#define FREQM_NUM_OF_ATTEMPTS   10000
 Time out value (number of attempts). More...
 

Functions

static void freqm_clear_measurement_done_int (void)
 Measurement done interrupt clear. More...
 
static void freqm_clear_refclk_ready_int (void)
 Reference clock ready interrupt clear. More...
 
static void freqm_disable (void)
 FREQM disable disable clock for the FREQM bus interface,depended on Power Manager. More...
 
static void freqm_disable_measurement_done_int (void)
 Measurement done interrupt disable. More...
 
static void freqm_disable_refclk_ready_int (void)
 Reference clock ready interrupt disable. More...
 
static void freqm_enable (void)
 FREQM Enable Enable clock for the FREQM bus interface,depended on Power Manager. More...
 
static void freqm_enable_measurement_done_int (void)
 Measurement done interrupt enable. More...
 
static void freqm_enable_refclk_ready_int (void)
 Reference clock ready interrupt enable. More...
 
status_code_t freqm_get_result (uint32_t *result, uint32_t ref_clk_hz)
 Get result from measurement. More...
 
static bool freqm_is_busy (void)
 Check if freqm measuring is ongoing. More...
 
static bool freqm_is_measurement_done_int (void)
 check if measurement done interrupt happened More...
 
static bool freqm_is_refclk_busy (void)
 Check if reference clock is busy. More...
 
static bool freqm_is_refclk_ready_int (void)
 check if refclk ready interrupt happened More...
 
static void freqm_set_clock_source (uint32_t msr_clk)
 Set clock source to be measured. More...
 
static void freqm_start (void)
 Start a measurement. More...
 
status_code_t freqm_write_config (uint32_t ref_clk, uint32_t msr_clk, uint8_t duration)
 FREQM Configuration. More...
 

#define FREQM_NUM_OF_ATTEMPTS   10000

Time out value (number of attempts).

Referenced by freqm_disable(), freqm_get_result(), and freqm_write_config().

static void freqm_clear_measurement_done_int ( void  )
inlinestatic

Measurement done interrupt clear.

static void freqm_clear_refclk_ready_int ( void  )
inlinestatic

Reference clock ready interrupt clear.

static void freqm_disable ( void  )
inlinestatic

FREQM disable disable clock for the FREQM bus interface,depended on Power Manager.

Note
Check if freqm is busy when disable it to avoid freezing

References freqm_is_busy(), FREQM_NUM_OF_ATTEMPTS, and sysclk_disable_peripheral_clock().

static void freqm_disable_measurement_done_int ( void  )
inlinestatic

Measurement done interrupt disable.

static void freqm_disable_refclk_ready_int ( void  )
inlinestatic

Reference clock ready interrupt disable.

static void freqm_enable ( void  )
inlinestatic

FREQM Enable Enable clock for the FREQM bus interface,depended on Power Manager.

References sysclk_enable_peripheral_clock().

Referenced by main().

static void freqm_enable_measurement_done_int ( void  )
inlinestatic

Measurement done interrupt enable.

References cpu_irq_restore(), and cpu_irq_save().

Referenced by main().

static void freqm_enable_refclk_ready_int ( void  )
inlinestatic

Reference clock ready interrupt enable.

References cpu_irq_restore(), and cpu_irq_save().

status_code_t freqm_get_result ( uint32_t *  result,
uint32_t  ref_clk_hz 
)

Get result from measurement.

Parameters
resultMeasurement result
ref_clk_hzreference clock frequency (Hz)
Return values
ERR_TIMEOUTTime out error
STATUS_OKSuccessful operation

References ERR_TIMEOUT, FREQM_NUM_OF_ATTEMPTS, and STATUS_OK.

Referenced by clock_measure().

static bool freqm_is_busy ( void  )
inlinestatic

Check if freqm measuring is ongoing.

Referenced by freqm_disable().

static bool freqm_is_measurement_done_int ( void  )
inlinestatic

check if measurement done interrupt happened

Return values
trueFreqm is done interrupt
falseFreqm is not done interrupt
static bool freqm_is_refclk_busy ( void  )
inlinestatic

Check if reference clock is busy.

static bool freqm_is_refclk_ready_int ( void  )
inlinestatic

check if refclk ready interrupt happened

Return values
trueFreqm is reference ready interrupt
falseFreqm is not reference ready interrupt
static void freqm_set_clock_source ( uint32_t  msr_clk)
inlinestatic

Set clock source to be measured.

Parameters
msr_clkClock source number

Referenced by main().

static void freqm_start ( void  )
inlinestatic

Start a measurement.

Referenced by clock_measure(), and main().

status_code_t freqm_write_config ( uint32_t  ref_clk,
uint32_t  msr_clk,
uint8_t  duration 
)

FREQM Configuration.

Parameters
ref_clkSelect the reference clock
msr_clkSelect the clock to be measured
durationSet the duration of a measurement
Return values
ERR_TIMEOUTTime out error
STATUS_OKSuccessful operation

References Assert, ERR_TIMEOUT, FREQM_NUM_OF_ATTEMPTS, and STATUS_OK.

Referenced by main().