Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
SOSSO
0 / 0 / 0
Регистрация: 05.01.2008
Сообщений: 12
1

ADC Atmega - не обновляются значения

07.07.2015, 21:25. Просмотров 2414. Ответов 3
Метки нет (Все метки)

Подскажите, кто может сталкивался.
Написал проект, в процессе работы программы опрашивается ADC1 у Atmego32. Частота 12МГц
Код для инициализации:
void Internal_ADC_Init (void)
{
// Порт А1 установлен на входв main
ADMUX = (1<<REFS1)|(1<<REFS0)|(0<<ADLAR)/;
ADCSRA = (1<<ADIM)|(0<<ADSC)|(0<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(0<<ADPS0);
}
Код для считывания данных:
unsykned int Get_Internal_ADC_Data (unsykned char channel)
{
channel=channel&0b00000111;
ADMUX|=channel;
ADCSRA |= (1<<ADSC); //Предделитель 64 (187.5 кГц)
while(!(ADCSRA & (1<<ADIF)));
ADCSRA|= (1<<ADIF);
return ((ADCH<<8)|(ADCL))*5;
}
При входе в программу значение ADC1 считывает нормально, но потом в процессе работы не обновляет.
Считывание запускаю в цикле раз в 10 секунд, другие процедуры там выполняется, но значение АЦП всё время одно и то же.
Такое ощущение, будто в регистрах АЦП всё время одно и то же значение хранится.
Уже и ADIF вручную устанавливал, и АЦП битом ADIM выключал, ниче не помогает.

Кто сталкивался, как отыскать баг, весь мозг сломал ))
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2015, 21:25
Ответы с готовыми решениями:

atmega 32 pid and 12 bits adc
подскажите порядок решения задачи нужен один(один датчик пока) 12 битный, минимум ацп(внешний...

Atmega 32 (Atmel Studio 6). При дебаге не меняются значения портов
Доброго времени суток. Начал изучать программирование под микроконтроллеры. Имею стаж...

Макетная плата для Atmega 32?atmega 8
Здравствуйте !Уважаемые мастера нужна помощь (а именно нужна схема макетной платы для меги 32 и...

Не обновляются значения переменной
Добрый день. Пишу программу на c++, в которой есть структура struct Cords { int x1, y1; }; и...

ComboBox не обновляются значения
Значения, добавляемые в таблицу БД, не отображаются в Combobox,значения которого берутся из таблицы...

3
яверт
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
08.07.2015, 03:34 2
При чтении из регистра ADCL срабатывает блокировка обновления, пока не прочитается регистр ADCH. Поэтому надо обязательно соблюдать порядок чтения этих регистров - сначала читать ADCL, а потом ADCH... Ну или оставлять это компилятору, т.е. читать просто из регистра ADC.

ЗЫ Еще заметил косяк в настройке канала. Строка ADMUX|=channel; только выставляет биты, а сбрасывать то их некому...
0
HotD
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
08.07.2015, 06:00 3
в зависимости от версии компилятора виртуальный регистр может называться ADCW.
0
SOSSO
0 / 0 / 0
Регистрация: 05.01.2008
Сообщений: 12
08.07.2015, 14:18 4
Спасибо!
Трюк с чтением всего регистра исправил ситуацию. Так бы я долго ковырялся..
Компилятор GCC, оказывается и ADC, и ADCW - все подходит.
0
08.07.2015, 14:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2015, 14:18

Не обновляются значения в формах
Суть вопроса такая , есть две формы , первая &quot;КУБ 2.5&quot; , вторая вызывается из первой и назыв....

Не обновляются значения пользовательской функции
В моем Excel vba приложении около 60 листов. На каждом из них в ячейках с разными адресами нужно...

Не обновляются значения базы MySQL
Не могу обновить базу данных `news`, значения для обновления - `post` и `theme` отправляются...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru