Типовая ошибка. Определитесь работаете ли вы с АЦП по прерываниям, либо используете опрос флагов. Если второе, то не следует разрешать прерывания. Если первое, то будьте любезны корректно описать обработчик прерываний. Вот нафига зачем вы разрешили прерывания от АЦП по переполнению (бит ADC12OVIE) и по таймауту времени преобразования (бит ADC12TOVIE)? Вы же не используете режимы автоматического (конвейерного) преобразования, запуская ЦАП "вручную". Следовательно работа АЦП вам полностью подконтрольна и вы всегда успеете считать результат оцифровки до того, как будет запущен цикл нового преобразования, а указанные события прерываний возникать не должны. Кроме того, прерывания-то разрешены, а обработчика соответствующих состояний нету. Почитайте внимательно раздел 17.2.10 ADC12 Interrupts в User's Manual. У ADC12 есть 18 источников прерываний, которые идентифицируются в регистре ADC12IV, реализующем приоритеты и дополнительные векторы прерываний вдобавок к расшаренному вектору ADC12_VECTOR. Кстати, у вас даже символьное имя вектора неправильно указано.
|