Глупый вопрос про АЦП в меге.

Обсуждаем контроллеры компании Atmel.
Ответить
c2n
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1193
Зарегистрирован: Ср июл 25, 2012 21:40:09
Откуда: Самара

Сообщение c2n »

Добрый день.
не могу понять одну штуку.

(пока без прерываний, я еще чайник)
берем к примеру АТмега16.
регистром ADMUX конфигурируем, так, что входным одиночным каналом будет например PA0
потом крутим порядка 25 тактов ждем появления флага ADIE в регистре ADCSRA. потом вылавливаем получившееся значение в ADCH и ADCL.

Вопрос! я могу в это время пользовать остальные ноги порта А? например на вывод?

цикл ожидания результата например я оформлю через While
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

Вроде все правильно:

Код: Выделить всё

#define ADC_VREF_TYPE 0x40
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
unsigned int ADCW;
    ADMUX=adc_input|ADC_VREF_TYPE;
    delay_us(10);
// Start the AD conversion
    ADCSRA|=0x40;
// Wait for the AD conversion to complete
    while ((ADCSRA & 0x10)==0);
    ADCSRA|=0x10;
    ADCW = ADCL;            // read out ADCL register
    ADCW += (ADCH << 8);    // read out ADCH register
    return ADCW;
}
ноги можно использовать, теоретически шума ацп будет больше
Реклама
c2n
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1193
Зарегистрирован: Ср июл 25, 2012 21:40:09
Откуда: Самара

Сообщение c2n »

За кусок кода - спасибо :) особенно спасибо за сишный кусок :)

второй глЮпый вопрос.
я правильно понимаю, что если у меня навешано к примеру:
PA0 - датчик №1
PA1 - датчик №2
.....
PAN - датчик №N

то одновременно я с них все сразу снять не смогу?
мне поочередно надо будет опрашивать каждый канал АЦП ?
Контактная информация:
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Сообщение SmarTrunk »

Ну да. Переключаемся на очередной вход и заново запускаем АЦП, ждем, считываем значение.
Реклама
Эиком - электронные компоненты и радиодетали
orinoko

Сообщение orinoko »

Да, по очереди. Потому как физически АЦП в этом МК один.
PS: Опередили )))
Реклама
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Сообщение SmarTrunk »

Еще, смутно помню из даташита, что первый опрос АЦП вроде дает неверные данные, так что первый раз олжен быть "холостым". Ждать можно в цикле, но лучше использовать прерывания.
Реклама
c2n
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1193
Зарегистрирован: Ср июл 25, 2012 21:40:09
Откуда: Самара

Сообщение c2n »

вай вай вай... обломился :( как хотел заделать :)
Мастерю контроллер заряда для очень большого LiPol аккумулятора. Готовые контроллеры на старте не обеспечивают достаточного тока(((
Хотел "одновременно" снимать значения тока и напряжения с батарейки, для последующей корректировки.

А 25 тактов при кварце/внутренней частоте 1МГц это сколько по времени?
у меня осцилограф пилу показывает, когда я ногу инвертирую.
лучше использовать прерывания.
у меня пока слабо с практической базой... естественно я в процессе отладки (понятия как это работает) засуну по возможности все на прерывания, но понять надо через тупой код :) Благо JTAG имеется :)

и еще вопрос.
первый раз олжен быть "холостым"
через какой промежуток времени АЦП ставит штамп в паспорт о разводе?
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

может теория пригодится: http://www.gaw.ru/html.cgi/txt/app/micr ... AVR146.htm
orinoko

Сообщение orinoko »

"Одновременность" - это понятие весьма относительно, зависит от задачи. Учитывая, что заряд аккумулятора - мероприятие весьма небыстрое, то для данной задачи можно считать, что замеры по всем каналам происходят одновременно. Если принять наихудший случай, то даже опрос каждого канала с периодом 1 мс не повлияет на ошибку неодновременности измерений.
c2n
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1193
Зарегистрирован: Ср июл 25, 2012 21:40:09
Откуда: Самара

Сообщение c2n »

Отлично :)
тогда я зря заморачиваюсь :)
просто по очереди считывать .
Спасибо за помощь в освоении
Контактная информация:
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

И надо еще иметь в виду что 25 тактов имеется в виду на частоте работы АЦП, а она не должна превышать 100кГц - иначе теряем точность(на 250кГц уже имеем эффективные 7 бит вместо 10). при частоте АЦП менее 50кГц тоже плохие эффекты происходят влияющие на точность. Поэтому надо правильно выбрать коэффициент деления частоты АЦП.
Контактная информация:
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Сообщение SmarTrunk »

А какие эффекты на пониженной частоте АЦП?
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

АЦП работает на разделении напряжения при помощи конденсаторов - они успевают разряжаться настолько что начинается влияние на точность измерения. В даташите есть вся информация по ограничениям в работе АЦП.
Контактная информация:
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Сообщение SmarTrunk »

Спасибо, не знал, посмотрю даташит. Я думал, чем частота ниже - тем луче.
Ответить

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