#include "datos_filtrado24.h" // contiene constantes del filtro y señal a filtrar
// Definición de pines y variables globales
#define DAC2pin 25
const int PL = 8; // PL -> cambiar por el puesto de laboratorio del estudiante
int dacVal;
float tensionDAC;
// ISR generaDAC - no modificar
void IRAM_ATTR generaDAC() {
static int indice = 0;
dacVal = 4*PL+DACgen[indice]-2*PL;
dacWrite(DAC2pin, dacVal);
indice = indice +1;
if(indice==160) indice =0;
}
hw_timer_t * timerDAC = NULL; // estructura de datos del timer para generar señal DAC
void setup(){
timerDAC = timerBegin(1e6);
timerAttachInterrupt(timerDAC , &generaDAC);
timerAlarm(timerDAC, 2500, true, 0);
Serial.begin(115200);
delay(1000);
Serial.printf("\n\n Ejercicio filtrado - DAC genera señal\n");
}
void loop()
{
delay(1000);
}
//float valor_filtrado = filtrado(valorADC_calibrado);
float buffer[ncoefs];
// Función de filtrado FIR
float filtrado(float input) {
float output = 0.0;
// Desplazar las muestras en el buffer
for (int i = ncoefs - 1; i > 0; i--) {
buffer[i] = buffer[i - 1];
}
// Agregar la nueva entrada al buffer
buffer[0] = input;
// Aplicar el filtro FIR
for (int i = 0; i < ncoefs; i++) {
output += coef[i] * buffer[i];
}
if(output<0) output=0;
if(output>4095) output=4095;
return output;
}