"АЦП то не знает как ему работать с ДМА - постоянно дёргать или только несколько раз."
вот тогда тут загадка, откуда АЦП знает, сколько именно раз. хорошо, не постоянно. Хотя почему бы и нет, ну взведется флаг ERROR OVERRUN, девелопер сам дурак, нужно было остановить таймер по заполнению буфера :)