Microchip® Advanced Software Framework

Quick Start Guide for FREQM - Basic

In this use case, the Frequency Meter (FREQM) module is configured for:

  • The FREQM peripheral will not be stopped in standby sleep mode.

This use case will read measurement data in polling mode repeatly. After reading a data, the board LED will be toggled.

Setup

Prerequisites

There are no special setup requirements for this use-case.

Code

Copy-paste the following setup code to your user application:

/* FREQM module software instance (must not go out of scope while in use) */
void configure_freqm(void)
{
/* Create a new configuration structure for the FREQM settings
* and fill with the default module settings. */
struct freqm_config config_freqm;
freqm_get_config_defaults(&config_freqm);
/* Alter any FREQM configuration settings here if required */
/* Initialize FREQM with the user settings */
freqm_init(&freqm_instance, FREQM, &config_freqm);
}

Add to user application initialization (typically the start of main()):

Workflow

  1. Create an FREQM device instance struct, which will be associated with a FREQM peripheral hardware instance.
    Note
    Device instance structures shall never go out of scope when in use.
  2. Create a new function configure_freqm(), which will be used to configure the overall FREQM peripheral.
    void configure_freqm(void)
  3. Create an FREQM peripheral configuration structure that will be filled out to set the module configuration.
    struct freqm_config config_freqm;
  4. Fill the FREQM peripheral configuration structure with the default module configuration values.
    freqm_get_config_defaults(&config_freqm);
  5. Initialize the FREQM peripheral and associate it with the software instance structure that was defined previously.
    freqm_init(&freqm_instance, FREQM, &config_freqm);
  6. Enable the now initialized FREQM peripheral.

Implementation

Code

Copy-paste the following code to your user application:

uint32_t measure_result;
enum freqm_status status;
while ((status = freqm_get_result_value(&freqm_instance, &measure_result))
};
switch(status) {
LED_On(LED_0_PIN);
while (true) {
}
while (true) {
LED_Toggle(LED_0_PIN);
volatile uint32_t delay = 50000;
while(delay--) {
}
}
default:
Assert(false);
break;
}

Workflow

  1. Start FREQM measurement and wait until measure done then read result data.
  2. The board LED is on to indicate a measurement data is read.
    LED_On(LED_0_PIN);
    while (true) {
    }
  3. The board LED is toggle to indicate measurement is overflow.
    while (true) {
    LED_Toggle(LED_0_PIN);
    volatile uint32_t delay = 50000;
    while(delay--) {
    }
    }