ISSDK  1.7
IoT Sensing Software Development Kit
Macros | Functions | Variables
diff_p_interrupt.c File Reference

The diff_p_interrupt.c file implements the ISSDK DIFF_P sensor driver example demonstration with Interrupt mode. More...

#include "board.h"
#include "pin_mux.h"
#include "clock_config.h"
#include "fsl_debug_console.h"
#include "Driver_I2C.h"
#include "issdk_hal.h"
#include "diff_p_drv.h"
#include "systick_utils.h"
Include dependency graph for diff_p_interrupt.c:

Go to the source code of this file.

Macros

#define DIFF_P_DATA_SIZE   (3) /* 2 byte Pressure and 1 byte Temperature. */
 

Functions

void diff_p_isr (void *pUserData)
 This is the Sensor Data Ready ISR implementation. More...
 
int main (void)
 Main function. More...
 

Variables

volatile bool diff_pInterrupt = false
 
const registerwritelist_t cDiffPConfigNormal []
 Register settings for Normal Mode. More...
 
const registerwritelist_t cDiffPClearStatusBits []
 Register settings for Clearing Pressure and Temperature Data Ready Bits. More...
 
const registerreadlist_t cDiffPStatus [] = {{.readFrom = DIFF_P_INT_STATUS_0, .numBytes = 1}, __END_READ_DATA__}
 Address of Status Register. More...
 
const registerreadlist_t cDiffPOutputNormal []
 Address and size of Raw Pressure+Temperature Data in Normal Mode. More...
 

Detailed Description

The diff_p_interrupt.c file implements the ISSDK DIFF_P sensor driver example demonstration with Interrupt mode.

Definition in file diff_p_interrupt.c.

Macro Definition Documentation

◆ DIFF_P_DATA_SIZE

#define DIFF_P_DATA_SIZE   (3) /* 2 byte Pressure and 1 byte Temperature. */

Definition at line 61 of file diff_p_interrupt.c.

Referenced by main().

Function Documentation

◆ diff_p_isr()

void diff_p_isr ( void *  pUserData)

This is the Sensor Data Ready ISR implementation.


This function sets the flag which indicates if a new sample(s) is available for reading.

Parameters
[in]pUserDataThis is a void pointer to the instance of the user specific data structure for the ISR.
Returns
void There is no return value.
Constraints:
None

Yes

Set flag to indicate Sensor has signalled data ready.

Definition at line 102 of file diff_p_interrupt.c.

References diff_pInterrupt.

Referenced by main().

Here is the caller graph for this function:

◆ main()

int main ( void  )

Main function.

Initialize INT1_DIFF_P pin used by FRDM board

Initialize RGB LED pin used by FRDM board

Initialize the I2C driver.

Set the I2C Power mode.

Set the I2C bus speed.

Initialize DIFF_P sensor driver.

Set the task to be executed while waiting for I2C transactions to complete.

Configure the DIFF_P sensor.

Clear the data ready flag, it will be set again by the ISR.

Check for both data ready bits from the DIFF_P.

Read new raw sensor data from the DIFF_P.

Explicitly clear the Status Bits.

Process the sample and convert the raw sensor data.

Definition at line 110 of file diff_p_interrupt.c.

References ASK_USER_TO_RESUME, BOARD_BootClockRUN, BOARD_InitDebugConsole(), BOARD_InitPins(), BOARD_SystickEnable(), data, diff_p_i2c_sensorhandle_t::deviceInfo, DIFF_P_DATA_SIZE, DIFF_P_I2C_ADDR, DIFF_P_I2C_Configure(), DIFF_P_I2C_Initialize(), DIFF_P_I2C_ReadData(), DIFF_P_I2C_SetIdleTask(), DIFF_P_INT1, DIFF_P_INT_STATUS_0_PDR_DRDY, DIFF_P_INT_STATUS_0_PDR_MASK, DIFF_P_INT_STATUS_0_TDR_DRDY, DIFF_P_INT_STATUS_0_TDR_MASK, diff_p_isr(), DIFF_P_NPS3000VV_WHOAMI_VALUE, DIFF_P_NPS3001DV_WHOAMI_VALUE, DIFF_P_NPS3002VV_WHOAMI_VALUE, DIFF_P_NPS3005DV_WHOAMI_VALUE, diff_pInterrupt, Driver_GPIO_KSDK, GPIO_DIRECTION_IN, GPIO_DIRECTION_OUT, GREEN_LED, I2C_S_DEVICE_INDEX, I2C_S_DRIVER, I2C_S_SIGNAL_EVENT, int32_t(), NPS3000VV_PRESSURE_DIV_FACTOR, NPS3001DV_PRESSURE_DIV_FACTOR, NPS3002VV_PRESSURE_DIV_FACTOR, NPS3005DV_PRESSURE_DIV_FACTOR, diff_p_i2c_sensorhandle_t::pCommDrv, GENERIC_DRIVER_GPIO::pin_init, diff_p_pressuredata_t::pressure, rawData, SENSOR_ERROR_NONE, Sensor_I2C_Write(), diff_p_i2c_sensorhandle_t::slaveAddress, SMC, SMC_SetPowerModeWait(), status, diff_p_pressuredata_t::temperature, and GENERIC_DRIVER_GPIO::toggle_pin.

Here is the call graph for this function:

Variable Documentation

◆ cDiffPClearStatusBits

const registerwritelist_t cDiffPClearStatusBits[]
Initial value:
= {
#define __END_WRITE_DATA__
Definition: sensor_drv.h:71
#define DIFF_P_INT_STATUS_0_PDR_MASK
Definition: diff_p.h:151
#define DIFF_P_INT_STATUS_0_TDR_MASK
Definition: diff_p.h:148

Register settings for Clearing Pressure and Temperature Data Ready Bits.

Definition at line 81 of file diff_p_interrupt.c.

◆ cDiffPConfigNormal

const registerwritelist_t cDiffPConfigNormal[]
Initial value:
= {
#define DIFF_P_INT_MASK0_PDR_INT_EN
Definition: diff_p.h:396
#define DIFF_P_INT_MASK0_TDR_MASK
Definition: diff_p.h:376
#define __END_WRITE_DATA__
Definition: sensor_drv.h:71
#define DIFF_P_CTRL_REG2_ODR_MASK
Definition: diff_p.h:774
#define DIFF_P_CTRL_REG1_OSR_MASK
Definition: diff_p.h:709
#define DIFF_P_CTRL_REG2_ODR_ODR6P25
Definition: diff_p.h:799
#define DIFF_P_CTRL_REG1_OSR_OSR512
Definition: diff_p.h:731
#define DIFF_P_CTRL_REG3_IPOL1_ACTIVE_HIGH
Definition: diff_p.h:862
#define DIFF_P_INT_MASK0_PDR_MASK
Definition: diff_p.h:379
#define DIFF_P_CTRL_REG3_IPOL1_MASK
Definition: diff_p.h:849
#define DIFF_P_INT_MASK0_TDR_INT_EN
Definition: diff_p.h:395

Register settings for Normal Mode.

Definition at line 72 of file diff_p_interrupt.c.

◆ cDiffPOutputNormal

const registerreadlist_t cDiffPOutputNormal[]
Initial value:
= {{.readFrom = DIFF_P_OUT_P_LSB, .numBytes = DIFF_P_DATA_SIZE},
#define DIFF_P_DATA_SIZE
#define __END_READ_DATA__
Definition: sensor_drv.h:77

Address and size of Raw Pressure+Temperature Data in Normal Mode.

Definition at line 88 of file diff_p_interrupt.c.

◆ cDiffPStatus

const registerreadlist_t cDiffPStatus[] = {{.readFrom = DIFF_P_INT_STATUS_0, .numBytes = 1}, __END_READ_DATA__}

Address of Status Register.

Definition at line 85 of file diff_p_interrupt.c.

◆ diff_pInterrupt

volatile bool diff_pInterrupt = false

Definition at line 66 of file diff_p_interrupt.c.

Referenced by diff_p_isr(), and main().