Gast
#4743357
Hallo,
Ich spiele grade an einem einfachen Ringbuffer auf einem STM32F7 rum.
Hierbei habe ich festgestellt das der Mikrocontroller ein enorm hohen
Teil (ca 50%) meiner "Rechenzeit" mit dem auslesen aus dem Buffer
beschäftigt ist.
Die aufzurufende Funktion gibt einen wert aus mit einem delay zurück und
sieht folgendermaßen aus:
#define BUFFER_SIZE 11499
float RingBufferDelay(int delay)
{
int offset = 0;
if (delay< 0)
offset = buffer.write + delay- 1;
else
offset = buffer.write - delay- 1;
while (offset < 0) offset += BUFFER_SIZE;
return data[channel][offset];
}
buffer ist ein Struct mit "read" und "write" für die entsprechenden
Counter.
Die Funktion wird pro Rechenzyklus 3 mal (direkt hintereinander) mit
unterschiedlichen delay angaben aufgerufen.
Den Daten cache vom chip habe ich bereits aktiviert.
Beste Grüße
Paul