И снова внезапно вопрос. Упоминавшийся ранее AT32F407. Берем в нем
АЦП и по некоему событию запускаем TMR2=>ADC=>DMA
=>ISR DMA (останавливаем TMR2). АЦП настроен на автоматический
перебор трех каналов на каждый клок семплирующего таймера TMR2
(один клок-три преобразования). Первый запуск дает идеальный
результат. В массиве куда нацелен ДМА все каналы строго упорядочены
и первый обозначенный в настройках канал оказывается в нулевом
индексе массива. Однако, все последующие запуски приводят к сдвигу в массиве на один элемент и в нулевом индексе оказывается последний канал в тройке. Есть такое подозрение, что пока в прерывании останавливаешь семплирующий таймер, он успевает еще один раз запустить АЦП на три преобразования и последнее где то зависает результатом, а при следующем запуске оказывается первым. Я в промежутке между запусками читал ADCx->odt, сбрасывал флаги, но результата это не дает. Вопрос: откуда прибегает это лишнее значение в начале массива?