Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Иногда не стартует АЦП
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
yuragv
У меня на MSP430F2012 и MSP430F2234
иногда не стартует АЦП.
и помогает только ресет.

Кто-нибудь сталкивался с таким явлением?
И как с ним бороться?


rezident
В чем это проявляется? Как вы это выявили? Код инициализации/работы с АЦП, его электрическую входную схему для пояснений приложить к сообщению можете?
yuragv
Заключается в том что не вызывается прерывание.
Помогает только перезагрузка.

void InitADC(void)
{
ADC10CTL0 &= ~(ENC);
ADC10CTL1 = INCH_1+SHS_0+ADC10DIV_7+ADC10SSEL_3+CONSEQ_3;
ADC10CTL0 = REF2_5V+REFON+SREF_1+ADC10SHT_3+ADC10SR+MSC+ADC10IE;

ADC10AE0 = (PIN_RESISTOR+PIN_OVERCURRENT_MEASURE); // analog input enable

ADC10DTC0 = ADC10CT;

ADC10DTC1 = ARRAY_ADC_SIZE; //_number transfers in block
ADC10SA = (word)&BufferADC; // start adress data transfer

ADC10CTL0 |= ADC10ON; // ADC10 On
ADC10CTL0 |= (ADC10SC+ENC); // start conversion

flagADCStart=false;
}


#pragma vector=ADC10_VECTOR
__interrupt void ADC10_VECTOR_ISR(void)
{
ValueADC[0]=(BufferADC[0]+BufferADC[2]+BufferADC[4]+BufferADC[6])>>2;
ValueADC[1]=(BufferADC[1]+BufferADC[3]+BufferADC[5]+BufferADC[7])>>2;
flagADCStart=true;
}
rezident
Вы использовали самый замысловатый режим работы этого АЦП да еще и с использованием модуля переноса данных. К сожалению, все мои немногочисленные попытки использования модуля DTC в этом АЦП окончились без успеха. sad.gif Так что "точного диагноза" я поставить не смогу. Могу лишь порекомендовать вместо использования режима непрерывного преобразования последовательности каналов использовать режим однократного преобразования последовательности каналов, перезапуская каждый раз преобразование АЦП прямо в прерывании.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.