Цитата(0xFF @ Jan 12 2006, 01:03)

Значит вместо while (ADC10CTL1 & ADC10BUSY); (как я понял это только для одноканального режима одиночного преобразования) ставлю while ( ADC10IFG ); - жду когда блок заполнится и затем забираю значнеия?
Нет. Неверно. ADC10IFG это битовый флаг в регистре ADC10CTL0. Поэтому нужно накладывать битовую маску. Правильно будет наверное так.
Код
while (!(ADC10CTL0&ADC10IFG));
После чтения результатов ADC10IFG нужно программно сбросить.
Код
ADC10CTL0&=~ADC10IFG;
Если бы вы воспользовались прерыванием от ADC10, то ADC10IFG сбрасывался бы самостоятельно при обслуживании вектора перывания ADС10. А так вручную.
Цитата(0xFF @ Jan 12 2006, 01:03)

не использовать DTC не могу т.к. опрашиваю ADC где-то раз в 1 ms и необходимо затем по полученным данным расчитывать среднее значение для других вычислений.
Еще раз предлагаю вам подумать о том, что нужно
либо использовать режим однократной последовательности каналов (CONSEQ_1), всего
два переноса и софтверный запуск,
либо режим повторяющейся последовательности (CONSEQ_3), нужное вам количество переносов, но в качестве источника запуска преобразований использовать какой-либо из выходных сигналов (Out0, Out1 или Out2) таймера TimerA.
Все зависит от того, важны ли вам значения каждого конкретного преобразования или можно считывать любые из этих значений (преобразование будет идти непрерывно пока не заполнится весь блок), но в определенные моменты времени?