Wieso brauchst Du die Daten am Stück? Du brauchst eine Routine, die 32 Daten addiert und die kann doch "process" heißen.
Du verstehst mich nicht ganz. Ich habe in dem Ringbuffer Messwerte von einem ADC, der 10000 mal pro Sekunde einen Wert da rein schreibt. Bei einem Ereignis wird der Prozess des Datensammelns angehalten und ich lasse die gesammelten Daten durch einen FIR-Filter laufen.
Der nimmt immer 32 werte, verrechnet die und generiert daraus den neuen Wert an der aktuellen stelle, geht weiter und macht das mit dem nächsten 32 Werten:
Code: Alles auswählen
for(int i = 0; i < BUFFER_LENGTH - 32; i++)
{
for(int a = 0; a < 32 a++)
{
daten[i] += daten[i+a] * magic();
}
}
Ich muss das so in etwa mit allen Werten in Buffer machen, 32 Werte nehmen, verrechnen, speichern, weitergehen.
Wenn das einfach nur ein Array ist, ist das kein Problem. Aber dadurch, dass der Start irgendwo liegen kann, erscheint mir die Umsortierung sinnvoller.
Und wie gesagt, begrenzte Ressourcen, 32-Bit µC mit 48MHz und 32 kb ram und 256kb flash.
Redundanz macht wiederholen unnötig.
quod erat expectandum