А нельзя, что бы он просто запускался при старте?! БЕЗ прерывания. Включили, он посчитал 16 раз, потом МК зажёг нужный светик и всё. Я этого добиваюсь.ILYAUL писал(а): Вообще-то запустить ADC в этой тиньке можно используя 7 прерываний . При этом не требуется команда запуска ADC в обработчиках прерываний , все произойдёт автоматически. А уж читать результат преобразования или нет - дело третье
АЦП. Разбор полётов
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
Re: АЦП. Разбор полётов
Вроде как, версия от Барсика вполне работоспособна, а главное понятна.
- Реклама
- КРАМ
- Друг Кота
- Сообщения: 25261
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: АЦП. Разбор полётов
Самый лучший вариант работы с сигналами - использовать аппаратный запуск АЦП от таймера. А уже по прерываниям АЦП писАть результат в массив с инкрементом указателя и маской указателя на длину массива. При таком раскладе можно считать результат фильтра вообще в суперлупе. Правда будет подергиваться полоса пропускания, но для большинства применений это не важно.
Очень удобно. Однократно запускается весь этот механизм и программа имеет всегда корректные данные в массиве, причем невидимо для нее.
А если в МК есть внутрицикловый ДМА (прямой доступ к памяти), то даже выпадений времени на обработку прерываний не будет...
Очень удобно. Однократно запускается весь этот механизм и программа имеет всегда корректные данные в массиве, причем невидимо для нее.
А если в МК есть внутрицикловый ДМА (прямой доступ к памяти), то даже выпадений времени на обработку прерываний не будет...
- КРАМ
- Друг Кота
- Сообщения: 25261
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: АЦП. Разбор полётов
Работоспособна - на значит правильна, а понятность ее не более, чем у правильной.просто КОТ писал(а):Вроде как, версия от Барсика вполне работоспособна, а главное понятна.
Главное разобраться...
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: АЦП. Разбор полётов
Я имел ввиду не это, а возможность выбора частоты тактирования модуля.Вообще-то запустить ADC в этой тиньке можно используя 7 прерываний
- Реклама
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
Re: АЦП. Разбор полётов
Я вот думаю, а нельзя всё-таки сделать 1 точный замер?! На низкой частоте и с подавлением шума -- разве это не даст точность: +/-10мВ?!
Re: АЦП. Разбор полётов
Уважаемый Барсик! Может быть, Вы объясните мне, зачем такие сложности (это без подначки), Запись мл.байта в один регистр, ст.байта в другой, манипуляции со сдвигом. Может быть, я чего-то недопонимаю, и такой метод измерения АЦП действительно лучше, чем пользуюсь я. Обычно я делаю так: из регистра ADCW я переписываю слово данных в переменную типа int, и уже манипулирую с этой переменной, неизменно получаю точные результаты измерений. На фото, результат работы программы проверенный на тестовой плате, а не в Proteuse (это для Совести).
- Вложения
-
- Фото001.jpg
- (24.19 КБ) 404 скачивания
Последний раз редактировалось siamds Чт авг 16, 2012 10:59:11, всего редактировалось 1 раз.
На каждого Моцарта есть свой Сальери.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: АЦП. Разбор полётов
А что сложного в реализации, предложенной Марком, кольцевого буфера ? Вроде бы он понятно объяснил...просто КОТ писал(а):Я вот думаю, а нельзя всё-таки сделать 1 точный замер?! На низкой частоте и с подавлением шума -- разве это не даст точность: +/-10мВ?!
Вы бы лучше спрашивали, что не понятно, а не "увиливали" бы от сложных и невыполнимых на ваш взгляд задач
Re: АЦП. Разбор полётов
siamds писал(а):результат работы программы проверенный на тестовой плате, а не в Proteuse (это для Совести).
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
Re: АЦП. Разбор полётов
Вроде как ЭТО и есть нахождение среднего -- сумму на кол-во!КРАМ писал(а):Для его формирования нужно каждое преобразование писать в буфер нужной длины просто по кольцу (инкрементируя указатель по кругу). И ПОСЛЕ КАЖДОГО ИЗМЕРЕНИЯ, после занесения очередного измерения в буфер, находится сумма всех элементов массива-буфера и делится на длину буфера (сдвигом или делением, зависит от выбранной длины)
Re: АЦП. Разбор полётов
Собственно да. Только буфер Вам не нужен , лишнее это - писать в него потом считывать . Возьмите младшие регистры и сразу суммируйте, ну а затем - делите или как я уже писал - умножайте.
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
Re: АЦП. Разбор полётов
Они для более важных дел пригодятся. Функций у них больше , чем у младших.
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
- КРАМ
- Друг Кота
- Сообщения: 25261
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: АЦП. Разбор полётов
Федот, да не тот...просто КОТ писал(а):Вроде как ЭТО и есть нахождение среднего -- сумму на кол-во!КРАМ писал(а):Для его формирования нужно каждое преобразование писать в буфер нужной длины просто по кольцу (инкрементируя указатель по кругу). И ПОСЛЕ КАЖДОГО ИЗМЕРЕНИЯ, после занесения очередного измерения в буфер, находится сумма всех элементов массива-буфера и делится на длину буфера (сдвигом или делением, зависит от выбранной длины)
Не любое среднее будет правильным результатом. Не любое среднее даст плавное (гладкое) изменение результата при шумовых компонентах во входном сигнале и его изменении.
Еще раз предлагаю разобраться с проблемой. Она достаточно проста и результат Ваших трудов сейчас решит многие проблемы в будущем.
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
Re: АЦП. Разбор полётов
А не проще ли бороться с шумом схематически -- поставить например кондёр, параллельно входу против ВЧ помех и т.д.
Re: АЦП. Разбор полётов
Ну это Вам решать , сколько. Например для пяти регистров 4 294 967 296
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
Re: АЦП. Разбор полётов
А оно мне надо?! Мне надо 1 результат точный и всё.КРАМ писал(а):Не любое среднее даст плавное (гладкое) изменение результата при шумовых компонентах
- КРАМ
- Друг Кота
- Сообщения: 25261
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: АЦП. Разбор полётов
Конденсатор на входе сам по себе никаким внятным фильтром не будет. Фильтрация входного сигнала аппаратными способами с даже с качеством простейшего КИХ с прямоугольным окном потребует невменяемого количества ОУ и подбора коденсаторов и резисторов.просто КОТ писал(а):А не проще ли бороться с шумом схематически -- поставить например кондёр, параллельно входу против ВЧ помех и т.д.
Опять же ЗАЧЕМ городить даже единственный конденсатор, когда программная реализация ВООБЩЕ НЕ ТРЕБУЕТ никаких схемотехнических затрат?
В третий раз предлагаю Вам разобраться с ОЧЕНЬ простой в реализации задачей.
Если есть желание, могу привести графическое описание сего действа...
Вы знакомы с косвенной адресацией массивов? Вы знаете что такое указатель на элемент массива?
Ну или может Вы знакомы с АСМом для используемых Вами контроллеров?
Один точный результат принципиально невозможен без фильтрации. Вы получите конечно точный результат на одном измерении, но Вам эта точность не понравится. АЦП тупо преобразует РЕАЛЬНЫЙ сигнал на входе, а не Вашу МОДЕЛЬ, которую Вы домыслили.
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
Re: АЦП. Разбор полётов
Тогда объясните пожалуйста поподробнее! Мне очень трудно понимать пока!




