Estoy tratando de generar una señal de chirrido de 35000 Hz a 45000 Hz. Primero, genero muestras de señales de chirp de matlab y las almaceno en const uint16_t chirpData [NUM_SAMPLES]. La frecuencia de muestreo que utilicé es de 96000 Hz y obtuve 96001 muestras. Luego, puse el temporizador en el microcontrolador enviando muestras a través del pin DAC una por una (1/96000) segundos. Cuando lo mido con el osciloscopio, la frecuencia más alta que obtuve es de entre 3200 y 4300 Hz. ¿Es porque el temporizador no es lo suficientemente rápido?
enter code here
#define NUM_SAMPLES 96001
const uint16_t chirpData[NUM_SAMPLES] = { //96001 samples };
#include "mbed.h"
#include "chirp.h"
Serial pc(USBTX, USBRX);
Timer t;
AnalogOut aout(P0_12);
int main()
{
int i = 0;
while(true) {
// Write the sample to the analog
t.start();
if(t.read() >= 0.00001){ // 1/samplef = 0.00001
aout.write_u16(chirpData[i]);
i++;
t.reset();
if(i > 96000) {
i = 0;
}
}
}
}