Страница 4 из 13
Re: АЦП. Разбор полётов
Добавлено: Ср авг 15, 2012 18:26:09
просто КОТ
Вроде как, версия от Барсика вполне работоспособна, а главное понятна.
ILYAUL писал(а): Вообще-то запустить ADC в этой тиньке можно используя 7 прерываний . При этом не требуется команда запуска ADC в обработчиках прерываний , все произойдёт автоматически. А уж читать результат преобразования или нет - дело третье
А нельзя, что бы он просто запускался при старте?! БЕЗ прерывания. Включили, он посчитал 16 раз, потом МК зажёг нужный светик и всё. Я этого добиваюсь.
Re: АЦП. Разбор полётов
Добавлено: Ср авг 15, 2012 18:29:05
КРАМ
Самый лучший вариант работы с сигналами - использовать аппаратный запуск АЦП от таймера. А уже по прерываниям АЦП писАть результат в массив с инкрементом указателя и маской указателя на длину массива. При таком раскладе можно считать результат фильтра вообще в суперлупе. Правда будет подергиваться полоса пропускания, но для большинства применений это не важно.
Очень удобно. Однократно запускается весь этот механизм и программа имеет всегда корректные данные в массиве, причем невидимо для нее.
А если в МК есть внутрицикловый ДМА (прямой доступ к памяти), то даже выпадений времени на обработку прерываний не будет...
Re: АЦП. Разбор полётов
Добавлено: Ср авг 15, 2012 18:31:40
КРАМ
просто КОТ писал(а):Вроде как, версия от Барсика вполне работоспособна, а главное понятна.
Работоспособна - на значит правильна, а понятность ее не более, чем у правильной.
Главное разобраться...

Re: АЦП. Разбор полётов
Добавлено: Ср авг 15, 2012 18:42:07
Барсик
просто КОТ писал(а):ты сказал, что прерывание от таймера, а написал в коде, что от АЦП
Собственно, добрые коты уже всё объяснили и без меня.
Предлагаю сделать так:
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.
Re: АЦП. Разбор полётов
Добавлено: Ср авг 15, 2012 19:09:18
Аlex
Вообще-то запустить ADC в этой тиньке можно используя 7 прерываний
Я имел ввиду не это, а возможность выбора частоты тактирования модуля.

Re: АЦП. Разбор полётов
Добавлено: Ср авг 15, 2012 19:11:28
просто КОТ
Я вот думаю, а нельзя всё-таки сделать 1 точный замер?! На низкой частоте и с подавлением шума -- разве это не даст точность: +/-10мВ?!
Re: АЦП. Разбор полётов
Добавлено: Ср авг 15, 2012 22:43:50
siamds
Уважаемый Барсик! Может быть, Вы объясните мне, зачем такие сложности (это без подначки), Запись мл.байта в один регистр, ст.байта в другой, манипуляции со сдвигом. Может быть, я чего-то недопонимаю, и такой метод измерения АЦП действительно лучше, чем пользуюсь я. Обычно я делаю так: из регистра ADCW я переписываю слово данных в переменную типа int, и уже манипулирую с этой переменной, неизменно получаю точные результаты измерений. На фото, результат работы программы проверенный на тестовой плате, а не в Proteuse (это для Совести).
Re: АЦП. Разбор полётов
Добавлено: Чт авг 16, 2012 00:32:38
Аlex
просто КОТ писал(а):Я вот думаю, а нельзя всё-таки сделать 1 точный замер?! На низкой частоте и с подавлением шума -- разве это не даст точность: +/-10мВ?!
А что сложного в реализации, предложенной Марком, кольцевого буфера ? Вроде бы он понятно объяснил...
Вы бы лучше спрашивали, что не понятно, а не "увиливали" бы от сложных и невыполнимых
на ваш взгляд задач

Re: АЦП. Разбор полётов
Добавлено: Чт авг 16, 2012 05:21:09
Совесть
siamds писал(а):результат работы программы проверенный на тестовой плате, а не в Proteuse (это для Совести).

ок, теперь вы меня убедили, 10-и битная точность АЦП AVR это не миф, а реальность! Отошлите эту фотографию в Atmel, пусть в свой даташит вставят вместо непонятных циферок!
Re: АЦП. Разбор полётов
Добавлено: Чт авг 16, 2012 10:24:27
просто КОТ
КРАМ писал(а):Для его формирования нужно каждое преобразование писать в буфер нужной длины просто по кольцу (инкрементируя указатель по кругу). И ПОСЛЕ КАЖДОГО ИЗМЕРЕНИЯ, после занесения очередного измерения в буфер, находится сумма всех элементов массива-буфера и делится на длину буфера (сдвигом или делением, зависит от выбранной длины)
Вроде как ЭТО и есть нахождение среднего -- сумму на кол-во!
Re: АЦП. Разбор полётов
Добавлено: Чт авг 16, 2012 10:36:54
ILYAUL
Собственно да. Только буфер Вам не нужен , лишнее это - писать в него потом считывать . Возьмите младшие регистры и сразу суммируйте, ну а затем - делите или как я уже писал - умножайте.
Re: АЦП. Разбор полётов
Добавлено: Чт авг 16, 2012 10:47:59
просто КОТ
А старшие регистры?!
Re: АЦП. Разбор полётов
Добавлено: Чт авг 16, 2012 10:59:28
ILYAUL
Они для более важных дел пригодятся. Функций у них больше , чем у младших.
Re: АЦП. Разбор полётов
Добавлено: Чт авг 16, 2012 11:02:27
просто КОТ
А до скольки младшие могут досчитать?!
Re: АЦП. Разбор полётов
Добавлено: Чт авг 16, 2012 11:06:09
КРАМ
просто КОТ писал(а):КРАМ писал(а):Для его формирования нужно каждое преобразование писать в буфер нужной длины просто по кольцу (инкрементируя указатель по кругу). И ПОСЛЕ КАЖДОГО ИЗМЕРЕНИЯ, после занесения очередного измерения в буфер, находится сумма всех элементов массива-буфера и делится на длину буфера (сдвигом или делением, зависит от выбранной длины)
Вроде как ЭТО и есть нахождение среднего -- сумму на кол-во!
Федот, да не тот...
Не любое среднее будет правильным результатом. Не любое среднее даст плавное (гладкое) изменение результата при шумовых компонентах во входном сигнале и его изменении.
Еще раз предлагаю разобраться с проблемой. Она достаточно проста и результат Ваших трудов сейчас решит многие проблемы в будущем.
Re: АЦП. Разбор полётов
Добавлено: Чт авг 16, 2012 11:08:39
просто КОТ
А не проще ли бороться с шумом схематически -- поставить например кондёр, параллельно входу против ВЧ помех и т.д.
Re: АЦП. Разбор полётов
Добавлено: Чт авг 16, 2012 11:15:19
ILYAUL
Ну это Вам решать , сколько. Например для пяти регистров 4 294 967 296
Re: АЦП. Разбор полётов
Добавлено: Чт авг 16, 2012 11:19:41
просто КОТ
КРАМ писал(а):Не любое среднее даст плавное (гладкое) изменение результата при шумовых компонентах
А оно мне надо?! Мне надо 1 результат точный и всё.
Re: АЦП. Разбор полётов
Добавлено: Чт авг 16, 2012 11:35:55
КРАМ
просто КОТ писал(а):А не проще ли бороться с шумом схематически -- поставить например кондёр, параллельно входу против ВЧ помех и т.д.
Конденсатор на входе сам по себе никаким внятным фильтром не будет. Фильтрация входного сигнала аппаратными способами с даже с качеством простейшего КИХ с прямоугольным окном потребует невменяемого количества ОУ и подбора коденсаторов и резисторов.
Опять же ЗАЧЕМ городить даже единственный конденсатор, когда программная реализация ВООБЩЕ НЕ ТРЕБУЕТ никаких схемотехнических затрат?
В третий раз предлагаю Вам разобраться с ОЧЕНЬ простой в реализации задачей.
Если есть желание, могу привести графическое описание сего действа...
Вы знакомы с косвенной адресацией массивов? Вы знаете что такое указатель на элемент массива?
Ну или может Вы знакомы с АСМом для используемых Вами контроллеров?
Один точный результат принципиально невозможен без фильтрации. Вы получите конечно точный результат на одном измерении, но Вам эта точность не понравится. АЦП тупо преобразует РЕАЛЬНЫЙ сигнал на входе, а не Вашу МОДЕЛЬ, которую Вы домыслили.
Re: АЦП. Разбор полётов
Добавлено: Чт авг 16, 2012 11:49:15
просто КОТ
Тогда объясните пожалуйста поподробнее! Мне очень трудно понимать пока!