ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
24 апреля
179353
Алехин Александр (25.01.2010 14:13, просмотров: 2848)
Опять у меня проблемы с этми 4217 - теперь АЦП не хочет работать. Не завершает измерение - нет готовности. Вот код:
  ADC12CTL0 = 0;        // Сбросим ENC.
  // Синхронизация преобразования - MCLK / 8, однократный одноканальный режим,
  // запуск по ADC12SC биту, сохранение в ADC12MEM0.
  ADC12CTL1 = ADC12DIV_7 | ADC12SSEL_2;
  // Время выборки - 8 циклов, АЦП включено, прерывания запрещены, опора 1.5 Вольта включена.
  ADC12CTL0 = SHT0_1 | REFON | ADC12ON;
  for(register BYTE i = 0; i < 0xff; i++);
  // Измеряем половину питания.
  ADC12MCTL0 = EOS | SREF1 | INCH_11;
  ADC12CTL0 |= ENC;
  ADC12CTL0 |= (ENC | ADC12SC);
  BYTE i = 255; while(((ADC12CTL1 & ADC12BUSY) != 0) && (--i != 0));
  // Выключаем опору и АЦП.
  ADC12CTL0 = 0;        // Сбросим ENC.
  ADC12CTL0 = 0;        // Выключим все.
  // Возвращаем откорректированное измеренное значение.
  return (ADC12MEM0 + Coeff.Power_Level_Adj);
В общем не хочет флаг ADC12BUSY сбрасываться. При этом разрешал прерывания - их так-же нет. Такое ощущение, что частоты синхронизции на АЦП нет. Пробовал и от внутреннего генератора не помогает. Да - код скопирован с 2274 (ADC10), подправлен под ADC12.