Hola!! Estoy teniendo problemas para hacer una interrupción con el Timer del ESP32. Yo creo que el problema esta en la inicialización porque nunca entra a la interrupción. Acá esta el código que estoy intentando implementar (saque todas las funciones del IMU y de la carga de datos para que no sea tan largo el mensaje). Mi ESP32 es versión 3 por lo que cambian las funciones de inicialización.
#include <Adafruit_MPU6050.h> // Librería IMU
#include <Adafruit_Sensor.h> // Librería IMU
#include <Wire.h> // Librería I2C
#include <SD.h> // Librería módulo memoria SD
#include <SPI.h> // Librería comunicación SPI
#include <Arduino.h> // Librería para timer
#define TIMER_FREQUENCY 25
#define TIMER_INTERVAL_US (1000000 / TIMER_FREQUENCY)
#define TIEMPO_MUESTREO 1000 //Defino el tiempod de muestreo en 1S = 1Hz
#define RAD_TO_DEG 180/PI
int n = 0, count = 0;
volatile bool flag25Hz = false;
volatile char receiveData = '\0';
volatile bool dataReady = false;
hw_timer_t * timer = NULL; //variable para timer
void InicializacionTimer(void);
void InicializacionIntPtoSetie(void);
void InicializacionMemoriaSD(void);
void crearArchivoDatos(void);
void CalibrarIMU(void);
void CrearArchivoOffset(void);
void leerIMU (void);
void IRAM_ATTR onTimer(void);
void IRAM_ATTR onUARTReceive(void);
void setup() {
bool ProcesoCalibracion = false;
Serial.begin(115200);
delay(5000); // Espera para asegurar que el monitor serie esté listo
InicializacionTimer();
}
void loop(){
unsigned long currentTime = millis();
Serial.print(count);
if(!dataReady){
if(flag25Hz){
flag25Hz = false;
leerIMU();
CargarData();
}
}else{
archivoDatos.close();
Serial.println("Ya cerre el archivo de datos");
return;
}
delay(10); // Retardo para evitar saturar
}
void InicializacionTimer(void){
timer = timerBegin(TIMER_FREQUENCY); // Single argument for ESP32 core 3.2.0
timerAttachInterrupt(timer, &onTimer); // Attach interrupt function
timerAlarm(timer, TIMER_FREQUENCY, true, 0);
}
void IRAM_ATTR onTimer(void){
flag25Hz = true;
count++;
//Serial.println("entre al timer");
}
Muchas gracias!!!!