АЦП в Xmega

Обсуждаем контроллеры компании Atmel.
Ответить
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 27
Зарегистрирован: Сб янв 17, 2015 06:37:10

Сообщение Nosaer »

Всем доброго времени суток.
Возникла проблема с АЦП на контроллере 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);			                                                //старт  автоматического преобразования АЦП						
}
И да, постоянное значение плавает где то в районе 2500. И почему то при изменении скорости преобразования в регистре ADCA.PRESCALER =ADC_PRESCALER_DIV512_gc;, она изменяется на единиц 200.
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1314
Зарегистрирован: Пт ноя 27, 2009 19:47:13
Откуда: Казань

Сообщение НАПАЛМ »

Может у вас вход АЦП на выход ЦАП сконфигурирован? :)
Реклама
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 27
Зарегистрирован: Сб янв 17, 2015 06:37:10

Сообщение Nosaer »

Нет, на внешний сигнал. Хотя с цапом бы тоже работало, так как именно с него я и выдаю напряжение для проверки АЦП.
Проблема решилась заменой контроллера. Видимо убил я как то вывод. А неделю мучался наверно с ним.
Спасибо за ответ)
Ответить

Вернуться в «AVR»