Files
2026-02-12 21:00:02 -08:00

56 lines
1.2 KiB
C++

/**
* @file base-BufferRTOS.ino
* @author Phil Schatzmann
* @brief Data provider on core 0 with data consumer on core 1
* @version 0.1
* @date 2022-11-25
*
* @copyright Copyright (c) 2022
*
*/
#include "AudioTools.h"
#include "AudioTools/AudioLibs/Concurrency.h" // https://github.com/pschatzmann/arduino-freertos-addons
BufferRTOS<int16_t> buffer(1024);
void doWrite(); // forward declaration
Task writeTask("write",5000,10, 0); // FreeRTOS task from addons
// create data and write it to buffer
void doWrite() {
int16_t data[512];
for (int j=0;j<512;j++){
data[j]=j;
}
buffer.writeArray(data, 512);
}
void setup(){
// Setup logging
Serial.begin(115200);
AudioToolsLogger.begin(Serial, AudioToolsLogLevel::Info);
// start on core 0
writeTask.begin(doWrite);
}
// The loop runs on core 1: We read back the data
void loop(){
int16_t data[512];
uint64_t start = micros();
buffer.readArray(data, 512);
// process (verify) data
int error=0;
for (int j=0;j<512;j++){
if(data[j]!=j){
error++;
}
}
// write result
Serial.print("error: ");
Serial.print(error);
Serial.print(" runtime: ");
Serial.println(micros()-start);
}