АЦП в Xmega
Добавлено: Пт янв 15, 2016 06:17:36
Всем доброго времени суток.
Возникла проблема с АЦП на контроллере Xmega.
Настраиваю, запускаю автоматическое преобразование и все время получаю одно и то же значение, плавающее в некотором не большом интервале.
Причем это значение постоянно для любого напряжения поданного на вывод, и даже если на него вообще ничего не подавать.
Возможно кто то работал с АЦП на этом контроллере и сможет помочь)
Вот собственно функция настройки.
И да, постоянное значение плавает где то в районе 2500. И почему то при изменении скорости преобразования в регистре ADCA.PRESCALER =ADC_PRESCALER_DIV512_gc;, она изменяется на единиц 200.
Возникла проблема с АЦП на контроллере Xmega.
Настраиваю, запускаю автоматическое преобразование и все время получаю одно и то же значение, плавающее в некотором не большом интервале.
Причем это значение постоянно для любого напряжения поданного на вывод, и даже если на него вообще ничего не подавать.
Возможно кто то работал с АЦП на этом контроллере и сможет помочь)
Вот собственно функция настройки.
Код: Выделить всё
void ADC_init()
{
ADCA.CAL=0xff; // Значение для калибровки АЦП
ADCA.CTRLB = ADC_RESOLUTION_12BIT_gc; // 12 бит дескретизация
ADCA.REFCTRL = 0x00;
ADCA.REFCTRL = ADC_REFSEL_INT1V_gc | 0x02; // Опорное напряжение 1 В.
ADCA.PRESCALER =ADC_PRESCALER_DIV512_gc; // Переферийная частота работы АЦП
ADCA.CH0.CTRL = ADC_CH_INPUTMODE_SINGLEENDED_gc; // CH0 настроен на внешний нессимметричный вход
//ADCA.CH0.CTRL = ADC_CH_INPUTMODE0_bm;
ADCA.CH0.MUXCTRL = ADC_CH_MUXPOS_PIN3_gc; // Настраиваем как положительный вывод порта для АЦП
//ADCA.CH0.MUXCTRL = ADC_CH_MUXINT0_bm;
ADCA.CTRLA = ADC_ENABLE_bm; // Активирую АЦП
ADCA.CTRLB|=(1<<3); //старт автоматического преобразования АЦП
}