АЦП. Разбор полётов

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

Re: АЦП. Разбор полётов

Сообщение просто КОТ »

Вроде как, версия от Барсика вполне работоспособна, а главное понятна.
ILYAUL писал(а): Вообще-то запустить ADC в этой тиньке можно используя 7 прерываний . При этом не требуется команда запуска ADC в обработчиках прерываний , все произойдёт автоматически. А уж читать результат преобразования или нет - дело третье

А нельзя, что бы он просто запускался при старте?! БЕЗ прерывания. Включили, он посчитал 16 раз, потом МК зажёг нужный светик и всё. Я этого добиваюсь.
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25121
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: АЦП. Разбор полётов

Сообщение КРАМ »

Самый лучший вариант работы с сигналами - использовать аппаратный запуск АЦП от таймера. А уже по прерываниям АЦП писАть результат в массив с инкрементом указателя и маской указателя на длину массива. При таком раскладе можно считать результат фильтра вообще в суперлупе. Правда будет подергиваться полоса пропускания, но для большинства применений это не важно.
Очень удобно. Однократно запускается весь этот механизм и программа имеет всегда корректные данные в массиве, причем невидимо для нее.
А если в МК есть внутрицикловый ДМА (прямой доступ к памяти), то даже выпадений времени на обработку прерываний не будет...
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25121
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: АЦП. Разбор полётов

Сообщение КРАМ »

просто КОТ писал(а):Вроде как, версия от Барсика вполне работоспособна, а главное понятна.

Работоспособна - на значит правильна, а понятность ее не более, чем у правильной.
Главное разобраться... :wink:
Аватара пользователя
Барсик
Друг Кота
Сообщения: 3459
Зарегистрирован: Ср сен 27, 2006 16:18:57

Re: АЦП. Разбор полётов

Сообщение Барсик »

просто КОТ писал(а):ты сказал, что прерывание от таймера, а написал в коде, что от АЦП
Собственно, добрые коты уже всё объяснили и без меня.
Предлагаю сделать так:
1. тактовую частоту микроконтроллера установить 1,2 МГц.
2. Из таймера смастерить что-то вроде часов реального врени. Для этого:
- входную (тактовую) частоту таймера выбрать 150 кГц
- выбрать моду работы таймера CTC top=OCR0A
- включить прерывание Compare Match A Interrupt
- значение регистра OCR0A установить равным 150 (0x96)
тогда таймер будет считать до 150, и прерывания от него будут с частотой 1000 Гц, т.е. каждую миллисекунду. в этом прерывании организовать счёчик(и) времени и забить на функцию delay.
3. Включить прерывания от АЦП. Запуск АЦП настроить от таймера, режим Timer0 Compare Match A. Тогда АЦП будет запускаться каждую миллисекунду. Тактовую частоту АЦП выбрать 18,75 кГц. Поскольку преобразование происходит за 13 тактов, то преобразование закончится через 0,7 мс, и по прерыванию от АЦП можно считать результат.
В качестве опорного напряжения выбрать внутренний источник 1,1 вольта (Bandgup Reference). Можно ещё отключить от входа АЦП цифровую часть (Disable Digital Input Buffer) чтобы повысить входное сопротивление.

Все эти настройки можно сделать в CodeWizardAVR.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: АЦП. Разбор полётов

Сообщение Аlex »

Вообще-то запустить ADC в этой тиньке можно используя 7 прерываний
Я имел ввиду не это, а возможность выбора частоты тактирования модуля. :)
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

Re: АЦП. Разбор полётов

Сообщение просто КОТ »

Я вот думаю, а нельзя всё-таки сделать 1 точный замер?! На низкой частоте и с подавлением шума -- разве это не даст точность: +/-10мВ?!
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
siamds
Встал на лапы
Сообщения: 99
Зарегистрирован: Вт мар 20, 2012 20:50:22
Откуда: Краснодар

Re: АЦП. Разбор полётов

Сообщение siamds »

Уважаемый Барсик! Может быть, Вы объясните мне, зачем такие сложности (это без подначки), Запись мл.байта в один регистр, ст.байта в другой, манипуляции со сдвигом. Может быть, я чего-то недопонимаю, и такой метод измерения АЦП действительно лучше, чем пользуюсь я. Обычно я делаю так: из регистра ADCW я переписываю слово данных в переменную типа int, и уже манипулирую с этой переменной, неизменно получаю точные результаты измерений. На фото, результат работы программы проверенный на тестовой плате, а не в Proteuse (это для Совести).
Вложения
Фото001.jpg
(24.19 КБ) 402 скачивания
Последний раз редактировалось siamds Чт авг 16, 2012 10:59:11, всего редактировалось 1 раз.
На каждого Моцарта есть свой Сальери.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: АЦП. Разбор полётов

Сообщение Аlex »

просто КОТ писал(а):Я вот думаю, а нельзя всё-таки сделать 1 точный замер?! На низкой частоте и с подавлением шума -- разве это не даст точность: +/-10мВ?!
А что сложного в реализации, предложенной Марком, кольцевого буфера ? Вроде бы он понятно объяснил...
Вы бы лучше спрашивали, что не понятно, а не "увиливали" бы от сложных и невыполнимых на ваш взгляд задач :)
Совесть
Встал на лапы
Сообщения: 106
Зарегистрирован: Пн мар 26, 2012 05:25:06

Re: АЦП. Разбор полётов

Сообщение Совесть »

siamds писал(а):результат работы программы проверенный на тестовой плате, а не в Proteuse (это для Совести).
:))) ок, теперь вы меня убедили, 10-и битная точность АЦП AVR это не миф, а реальность! Отошлите эту фотографию в Atmel, пусть в свой даташит вставят вместо непонятных циферок!
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

Re: АЦП. Разбор полётов

Сообщение просто КОТ »

КРАМ писал(а):Для его формирования нужно каждое преобразование писать в буфер нужной длины просто по кольцу (инкрементируя указатель по кругу). И ПОСЛЕ КАЖДОГО ИЗМЕРЕНИЯ, после занесения очередного измерения в буфер, находится сумма всех элементов массива-буфера и делится на длину буфера (сдвигом или делением, зависит от выбранной длины)

Вроде как ЭТО и есть нахождение среднего -- сумму на кол-во!
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
ILYAUL
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Re: АЦП. Разбор полётов

Сообщение ILYAUL »

Собственно да. Только буфер Вам не нужен , лишнее это - писать в него потом считывать . Возьмите младшие регистры и сразу суммируйте, ну а затем - делите или как я уже писал - умножайте.
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

Re: АЦП. Разбор полётов

Сообщение просто КОТ »

А старшие регистры?!
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
ILYAUL
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Re: АЦП. Разбор полётов

Сообщение ILYAUL »

Они для более важных дел пригодятся. Функций у них больше , чем у младших.
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

Re: АЦП. Разбор полётов

Сообщение просто КОТ »

А до скольки младшие могут досчитать?!
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25121
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: АЦП. Разбор полётов

Сообщение КРАМ »

просто КОТ писал(а):
КРАМ писал(а):Для его формирования нужно каждое преобразование писать в буфер нужной длины просто по кольцу (инкрементируя указатель по кругу). И ПОСЛЕ КАЖДОГО ИЗМЕРЕНИЯ, после занесения очередного измерения в буфер, находится сумма всех элементов массива-буфера и делится на длину буфера (сдвигом или делением, зависит от выбранной длины)

Вроде как ЭТО и есть нахождение среднего -- сумму на кол-во!

Федот, да не тот...
Не любое среднее будет правильным результатом. Не любое среднее даст плавное (гладкое) изменение результата при шумовых компонентах во входном сигнале и его изменении.
Еще раз предлагаю разобраться с проблемой. Она достаточно проста и результат Ваших трудов сейчас решит многие проблемы в будущем.
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

Re: АЦП. Разбор полётов

Сообщение просто КОТ »

А не проще ли бороться с шумом схематически -- поставить например кондёр, параллельно входу против ВЧ помех и т.д.
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
ILYAUL
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Re: АЦП. Разбор полётов

Сообщение ILYAUL »

Ну это Вам решать , сколько. Например для пяти регистров 4 294 967 296
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

Re: АЦП. Разбор полётов

Сообщение просто КОТ »

КРАМ писал(а):Не любое среднее даст плавное (гладкое) изменение результата при шумовых компонентах

А оно мне надо?! Мне надо 1 результат точный и всё.
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25121
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: АЦП. Разбор полётов

Сообщение КРАМ »

просто КОТ писал(а):А не проще ли бороться с шумом схематически -- поставить например кондёр, параллельно входу против ВЧ помех и т.д.

Конденсатор на входе сам по себе никаким внятным фильтром не будет. Фильтрация входного сигнала аппаратными способами с даже с качеством простейшего КИХ с прямоугольным окном потребует невменяемого количества ОУ и подбора коденсаторов и резисторов.
Опять же ЗАЧЕМ городить даже единственный конденсатор, когда программная реализация ВООБЩЕ НЕ ТРЕБУЕТ никаких схемотехнических затрат?
В третий раз предлагаю Вам разобраться с ОЧЕНЬ простой в реализации задачей.
Если есть желание, могу привести графическое описание сего действа...
Вы знакомы с косвенной адресацией массивов? Вы знаете что такое указатель на элемент массива?
Ну или может Вы знакомы с АСМом для используемых Вами контроллеров?
Один точный результат принципиально невозможен без фильтрации. Вы получите конечно точный результат на одном измерении, но Вам эта точность не понравится. АЦП тупо преобразует РЕАЛЬНЫЙ сигнал на входе, а не Вашу МОДЕЛЬ, которую Вы домыслили.
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

Re: АЦП. Разбор полётов

Сообщение просто КОТ »

Тогда объясните пожалуйста поподробнее! Мне очень трудно понимать пока!
Изображение
И ты врёшь!!! © Vladisman
Изображение
Ответить

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