.. ich zähle ja in meiner For-Schleife immer wieder von 0 bis 511 ... Oder gibt es Effekte, die auftreten können, wo mein Zähler dann nicht jeden Takt +1 zählt ..
Leider zeigst Du nicht alle Initialisierung(en), nur Dein main-Modul. Was der ADC tut sieht man nicht, da auch die Funktion readADC ein GEheimnis bleibt.

Wie wird der ADC ausgelesen? Vermutlich über ne ISR. Nun kann der Controller zwar auf einer separaten WErkbank analoge Daten wandeln - oder Timer incrementieren, aber ne ISR ist ein separater Maschinencode-Abschnitt - der seine Zeit braucht. Sobald aber ISR mit im Spiel sind, ist es mit der zeitlichen Konstanz von Schleifen vorbei - abgesehen von sonstigen Einflüssen wie z.B. unterschiedlichen Laufzeiten von if-Schleifen . . .