also von mir noch ein paar tipps um rechenzeit zu sparen, nachteil es geht auflösung flöten 10bit -> 8bit (mit ADLAR flag)

nurnoch das high byte auslesen, spart schonmal satt speicher aus 2 byte mach 1, das verrechnen der werte für die mittelwertbildung muss dann aber geändert werden(!!!)

ADC ruhig etwas übertakten, die auflösung haben wir ja schon auf 8bit reduziert sollte also keinen großen unterschied machen

vermeide arrayzugriffe ala array[index] versuch dir nen pointer anzulegen den du inkrementierst, meine persönliche erfahrung war, bei zeitkritischen abläufen geht der pointer erheblich schneller

vermeide interruptgesteuertes auslesen nach kräften, das kostet noch mehr rechenleistung .... im freerun solltest du die ersten 2 werte nach einem schannelwechsel wegwerfen, weil nciht sicher ist ob der erste wert noch zum alten channel gehört oder schon vom neuen ist und der erste wert nciht unbedingt der stabilste ist, mit single conversion solltest du auch eventuell das erste ergebnis wegwerfen

wenn du mit pointern und einer geschickten schleife arbeitest kannst du rechenzeit im vergleich zum prozeduralen ablauf sparen UND das programm sieht ordentlich aus