Доброго времени суток!
Хочу измерить температуру. Инициализирую АЦП (в момент первоначальной настройки периферии):
ADC12CTL0 = 0x0000+REFON+REF2_5V+MSC+SHT01; ADC12CTL1 = 0x0000+ADC12SSEL1+ADC12DIV0+SHP+CONSEQ0;
ADC12MCTL0 = 0x10; // SREF=001 ADC12MCTL1 = 0x11; // SREF=001 ADC12MCTL2 = 0x12; // SREF=001 ADC12MCTL3 = 0x13; // SREF=001 ADC12MCTL4 = 0x9B; // SREF=001 ADC12MCTL5 = 0x1A; ADC12MCTL6 = 0x14; ADC12MCTL7 = 0x95; ADC12IE = 0x00B0;
Потом запускаю преобразование следующим кодом:
ADC12CTL1 = 0x5000+SHP+ADC12SSEL1+ADC12DIV0; ADC12CTL0 = 0x0900+REFON+REF2_5V+ADC12ON+ENC; ADC12CTL0 |= 0x0001;
Прерывание:
#pragma vector=ADC12_VECTOR __interrupt void ADC(void) { if(ADC12IV == 0x000E) { // Обработка } }
Проблема в том, что у меня при входе в прерывание регистры ADC12IV и ADC12IFG - уже в нулях (хотя до этого они устанавливались). Работаю пошагово с кристаллом через JTAG: он даже не дает установить вручную ADC12IFG - сразу сбрасывает. Что я делаю не так? Заранее спасибо.
|