17#define I2C_FREQ 400000UL
27void printLinea() { Serial.println(F(
"------------------------------------------------------------")); }
29void printDobleLinea() { Serial.println(F(
"============================================================")); }
67 Serial.println(F(
"ERROR: beginI2C() failed."));
70 Serial.println(F(
"ICM-20948 ready."));
74 Serial.println(F(
"ERROR: WHO_AM_I mismatch"));
77 Serial.printf(
"WHO_AM_I = 0x%02X\n", who);
80 Serial.println(F(
"ERROR: Initialization interruption failed"));
84 Serial.println(F(
"ERROR: Initialization interruption failed"));
89 Serial.println(F(
"Interrupt configured. Waiting..."));
96 static uint32_t lastCount = 0;
100 Serial.printf(
">>> ISR disparada! Total: %lu\n",
isrCount);
bool intEnableConfig(const ICM20948_IntEnableConfig &cfg)
bool readWhoAmI(uint8_t &whoAmI)
bool beginI2C(uint8_t address=0x69, TwoWire &i2cPort=Wire, uint32_t i2cSpeed=400000)
bool intInit(const ICM20948_IntPinConfig &cfg)
#define SCL_PIN
I2C SCL pin used by the example board.
ICM20948_IntEnableConfig intEn
Interrupt enable flags used by this example.
void printDobleLinea()
Print a double separator line to Serial.
void setup()
Initialize I2C, verify the IMU, configure interrupts, and attach ISR.
#define SDA_PIN
I2C SDA pin used by the example board.
void printLinea()
Print a separator line to Serial.
#define I2C_FREQ
I2C bus speed in hertz.
#define ICM_ADDR
ICM-20948 I2C address selected by the AD0 pin.
DevLab_ICM20948 imu
Global ICM-20948 driver instance.
#define PIN_INT
MCU pin connected to the IMU interrupt output.
void IRAM_ATTR isrHandler()
Interrupt service routine for the IMU data-ready signal.
volatile uint32_t isrCount
Number of interrupt events observed by the ISR.
ICM20948_IntPinConfig pinCfg
Interrupt pin electrical and latch configuration.
void loop()
Report interrupt events when the ISR count changes.