Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: не работает АЦП в ATmega640
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
SZ0
Есть код, работающий на 2560, при запуске на 640 не работает:

Код
//настройка ADC
ADCSRA = ((1<<ADEN)|(1<<ADPS2)|(1<<ADPS1));
DIDR2 = ((ADC15D)|(ADC14D));

//измерение
ADMUX = 0;
ADMUX |= ((1<<MUX2)|(1<<MUX1)|(1<<MUX0));
ADCSRB |= (1<<MUX5);
ADCSRA |= (1<<ADSC);
while(ADCSRA & (1<<ADSC));

//обработка результата
ADCbuffer = ADC;


Все измерения работают на ATmega2560, от 0 до AREF на нескольких каналах периодически измеряется напряжение. Но как только мы переносим сей код в 640, на выходе ADC всегда максимальное значение. Всё перекрутили, даже не знаем что думать. Может у проца 640 баг какой с работой ADC?
hainiken
Цитата(SZ0 @ Oct 4 2008, 22:13) *
Есть код, работающий на 2560, при запуске на 640 не работает:

Сравнивайте битики и регистры - отличие видно имеется в заголовке, ошибка возможно.
SysRq
Имел дело с таким на ATMega128 в режиме совестимости с ATMega103. Причиной было то, что AREF висел в воздухе (128-й это пофигу, а вот 103-й - нет). Проверьте аналогично...
SZ0
Дело оказалось в разводке платы + на AREF был подан через кондёр. Вместо того чтобы кондёр оказался одним выводом на земле, а другим на AREF, напряжение на AREF пошло через него и от земли он был отключён.
hainiken
Бывает.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.