Перейти к содержанию

Переключение Между Каналами Ацп


XXXL

Рекомендуемые сообщения

измеряю два напряжения. 12В через делитель подается на АД3, 24В через делитель подается на АД7.

    ADMUX=0xC7;			    //подкл. АД7, внутр. ИОН
    ADCSRA=0xC6;			   //запуск преобразования
    while((ADCSRA&0x40));	  //ожидание окончания преобразования
    ad_24H=ADCH;			   //запись результата
    ad_24L=ADCL;

    ADMUX=0xC3;			    //переключение канала на АД3
    ADCSRA=0xC6;			   //запуск преобразования
    while((ADCSRA&0x40));	  //ожидание окончания преобразования
    ad_12H=ADCH;			   //запись результата
    ad_12L=ADCL;

но почему то результат в обоих двухбайтных переменных(ad_24 и ad_12 ) оказывается одинаковым и равным первому измеренному напряжению. Само напряжение измеряется правильно. В общем, то ли канал не переключается, то ли второе преобразование не запускается. МК at90can128.

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

...
 ad_24H=ADCH;			 //запись результата
 ad_24L=ADCL;
...

Первым нужно читать младший регистр:

...
 	 ad_24L=ADCL;
	  ad_24H=ADCH;			 //запись результата
...

Любой, заслуживающий внимания, опыт приобретается себе в убыток...

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

какая разница при одиночном преобразовании?

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

У меня тоже прикол вышел с ADC у MEGA8.....

Нужно было регулярно опрашивать 2 канала ADC, причем делать это не в прерывании самого ADC, а в регулярном прерывании по таймеру.

Т.е. - ЗАШЛИ, СЧИТАЛИ ПРОШЛЫЙ ЗАМЕР, ПОМЕНЯЛИ КАНАЛ, ЗАПУСТИЛИ СЛЕДУЮЩИЙ ЗАМЕР, ВЫШЛИ... и так по кругу...

Но как оказалось ADC ни в какую не хотел правильно работать... Выдавал всякую чепуху.....

Потом выяснил, что если после изменения номера канала и перед запуском преобразования - предусмотреть паузу (уже забыл какой длины), то все нормально...

Но т.к. все эти процедуры происходят у меня в прерывании, то паузу вставлять низзя...

В итоге пронюхал такую инфу из даташита:

Действительно, если поменяли номер канала, то тут же нельзя запускать преобразование... нужна выдержка.

С другой стороны говорится - если запустить сначала преобразование а потом сразу поменять номер канала, то запущенное преобразование нормально обработает тот канал на котором было запущено, а уже новый канал будет готов к следующему преобразованию.... Кажется это мне и нужно было :)

В общем сделал так:

ЗАШЛИ, СЧИТАЛИ ПРОШЛЫЙ ЗАМЕР, ЗАПУСТИЛИ ЗАМЕР ТЕКУЩЕГО КАНАЛА, ПОМЕНЯЛИ КАНАЛ (вступит в действие для следующ захода), ВЫШЛИ... и так по кругу

ЫЫыыииии все стало нормально..... (хотя до такого способа сразу трудно допереть, пока не наткнешся в даташите на упоминание такого характера работы ADC)

Так что можно тратя минимум процессорного времени (буквально несколько тактов на один проход\канал) обрабатывать много каналов, без каких бы то ни было задержек и ожиданий...

Можно конечно использовать прерывание ADC по окончанию преобразования, НО... Во первых - мне необходима была синхронизация обработки ADC с моим прерыванием по таймеру... Во вторых - все равно придется применить такой же подход СЧИТАЛИ ПРОШЛЫЙ ЗАМЕР, ЗАПУСТИЛИ ЗАМЕР ТЕКУЩЕГО КАНАЛА, ПОМЕНЯЛИ КАНАЛ.....

Хотя... если все таки скорость преобразования - самое важное, то все таки необходимо использовать прерывание по окончанию преобразования ADC.

Ссылка на комментарий
Поделиться на другие сайты

  • 3 года спустя...
В 08.09.2013 в 12:18, shads сказал:

У меня тоже прикол вышел с ADC у MEGA8.....

Нужно было регулярно опрашивать 2 канала ADC, причем делать это не в прерывании самого ADC, а в регулярном прерывании по таймеру.

Т.е. - ЗАШЛИ, СЧИТАЛИ ПРОШЛЫЙ ЗАМЕР, ПОМЕНЯЛИ КАНАЛ, ЗАПУСТИЛИ СЛЕДУЮЩИЙ ЗАМЕР, ВЫШЛИ... и так по кругу...

Но как оказалось ADC ни в какую не хотел правильно работать... Выдавал всякую чепуху.....

Потом выяснил, что если после изменения номера канала и перед запуском преобразования - предусмотреть паузу (уже забыл какой длины), то все нормально...

Но т.к. все эти процедуры происходят у меня в прерывании, то паузу вставлять низзя...

В итоге... 

В общем сделал так:

ЗАШЛИ, СЧИТАЛИ ПРОШЛЫЙ ЗАМЕР, ЗАПУСТИЛИ ЗАМЕР ТЕКУЩЕГО КАНАЛА, ПОМЕНЯЛИ КАНАЛ (вступит в действие для следующ захода), ВЫШЛИ... и так по кругу

ЫЫыыииии все стало нормально..... (хотя до такого способа сразу трудно допереть... 

Можно конечно использовать прерывание ADC по окончанию преобразования, НО... Во первых - мне необходима была синхронизация обработки ADC с моим прерыванием по таймеру... 

Зачем все это? 

Не знаю как там у Атмела, полагаю, что как у всех можно запускать АЦП по таймеру АППАРАТНО, без прерываний, а результат забирать в прерывании от АЦП. 

Там же менять мультиплексор на другой канал. Интервала времени до следующего запуска (захвата сигнала УВХ) должно хватить на корректное переключение мультиплексора. 

Если частота семплирования АЦП таймером близка к предельной, то проще поменять МК на тот, у которого АЦП быстрее, а не заниматься мазохизмом. 

Изменено пользователем my504

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...