Warum machst du das nicht in einem Interrupt? Also ein Hardware-Timer der die ADC auslöst. Im ADC-IRQ dann das auslesen. Damit hast du dann auch ne ziemlich regelmäßige Ausführung garantiert, auch wenn mehr in dein Programm kommt.