На счет делителя слыхал и знаюМастер Ломастер писал(а):а про делитель напряжения слыхали? можно с его помощью с опорным 2.56 вольт измерять даже до 100 вольтVolgol_555 писал(а):НО...если я включу АЦП от внутр. источника, то я не смогу делать замер напряжения выше 2.56 В, верно? Если да - мне это не подходит, т.к. мне нужны некоторые выводы АЦП для замера до 5В.
АЦП в AVR (Atmega8)
Самое гениальное - всегда самое простое
- Реклама
вы на счет BANDGAP? так это была первая идея, которую я ТРИЖДЫ пытался донести.Volgol_555 писал(а):А вообще за последнюю идею спасибо. Она хороша)
битва с дураками проиграна, победители торжествуют. слава победителям!
Прошу прощения за невнимательность - я загружен сильно (устаю)...сразу не понялМастер Ломастер писал(а):вы на счет BANDGAP? так это была первая идея, которую я ТРИЖДЫ пытался донести.Volgol_555 писал(а):А вообще за последнюю идею спасибо. Она хороша)
Тут возник в разговоре с одним человеком вопрос. Существуют несколько вариантов запуска преобразования. Несколько вот они:
По дефолту ADTS2..0 = 000 и это значит, что преобразование идет в непрерывном режиме. Ну или по ручному запуску.
ADTS2..0 = 001 — запуск АЦП от аналогового компаратора. Удобно блин. Например, чтобы не замерять постоянно входную величину, а запрограммировать компаратор на то, что как только у него вылезет что-либо выше порога, так тут же захватывать это дело на АЦП.
ADTS2..0 = 010 — запуск от внешнего прерывания INT0
ADTS2..0 = 011 — по совпадению таймера T0
ADTS2..0 = 100 — по переполнению таймера Т0
ADTS2..0 = 101 — по совпадению с таймера Т1
ADTS2..0 = 110 — По переполнению таймера Т1
ADTS2..0 = 111 — По событию «захват» таймера Т1
Когда после созданной проги в CVAVR я пишу read_adc(0) - это запуск ручной?
а когда пишу
interrupt [TIM1_COMPA] void timer1_compa_isr(void) // Timer1 output compare A interrupt service routine
{read_adc(0)}
Это запуск по переполнению таймера Т1! Я правильно все понимаю?
Самое гениальное - всегда самое простое
нет - все перечисленные способы запуска АЦП, кроме ручного, полностью автоматические и не требующие никаких действий программиста для ЗАПУСКА АЦП. вы же написали ручной запуск по прерыванию таймера.Volgol_555 писал(а):Я правильно все понимаю?
битва с дураками проиграна, победители торжествуют. слава победителям!
Просто последний вопрос вытек вот из этих слов:Мастер Ломастер писал(а):нет - все перечисленные способы запуска АЦП, кроме ручного, полностью автоматические и не требующие никаких действий программиста для ЗАПУСКА АЦП. вы же написали ручной запуск по прерыванию таймера.Volgol_555 писал(а):Я правильно все понимаю?
"Для уменьшения потребляемого тока АЦП, модуль АЦП можно активировать на время измерения передав настройки в соответствующие регистры, а после измерения выключить АЦП записав 0x00 в регистры (это нужно уточнить по datasheet-у верно ли отключать АЦП записью "0" в соответствующие регистры).
Если же преобразование АЦП необходимо выполнять постоянно, то советую задействовать прерывание от АЦП, хочу напомнить что архитектура AVR очень богата всевозможными прерываниями, и неиспользовать их, мягко говоря грех. Если замер АЦП делается стандартной функцией CVAVR то в этой функции 98% ядро МК "тупит" ожидая флага готовности результата, а могло бы позаниматься полезной работой, или уйти в режим ADC reduce noise (вроде так пишется). Тем самым сэкономив драгоценные мВт батареи или аккумулятора."
Так вот. Есть ли какой-то способ уменьшить потребление АЦП, скажем "режим ADC reduce noise". Я для замера АЦП использую стандартную функцию: read_adc(0). Замеряю каждую минуту.
Если я замер не делаю АЦП кушает энергию???
Самое гениальное - всегда самое простое
- Реклама
вы процитировали кусок текста и тут же задали вопрос... может, надо повнимательнее прочитать цитируемое? АЦП не кушает энергию, если ВЫКЛЮЧЕН. делаете вы замеры или не делаете - все равно: если АЦП включен, то он кушает.Volgol_555 писал(а):Я для замера АЦП использую стандартную функцию: read_adc(0). Замеряю каждую минуту.
Если я замер не делаю АЦП кушает энергию???
битва с дураками проиграна, победители торжествуют. слава победителям!
Я наверное не точно поставил вопрос: АЦП я настраиваю CV, АЦП будет всегда включен? Если да, то как его периодически выключать/включать? обычной инициализацией типаМастер Ломастер писал(а):вы процитировали кусок текста и тут же задали вопрос... может, надо повнимательнее прочитать цитируемое? АЦП не кушает энергию, если ВЫКЛЮЧЕН. делаете вы замеры или не делаете - все равно: если АЦП включен, то он кушает.Volgol_555 писал(а):Я для замера АЦП использую стандартную функцию: read_adc(0). Замеряю каждую минуту.
Если я замер не делаю АЦП кушает энергию???
ADMUX=ADC_VREF_TYPE & 0xff; // ADC Voltage Reference: AVCC pin
ADCSRA=0x86; // ADC Clock frequency: 125,000 kHz -
это АЦП включен
ADCSRA=0x00; это АЦП выключен, наверное))
Самое гениальное - всегда самое простое


