|
1 / 1 / 0
Регистрация: 22.06.2016
Сообщений: 96
|
||||||
Опрос нескольких регулярных каналов АЦП STM32F10020.11.2018, 09:17. Показов 14558. Ответов 30
Всем привет! Проблема с опросом нескольких регулярных каналов АЦП STM32F100 (Отл плата STM32F100VL Discouvery). На входы PA0 и PA1 повесил потенциометры. При пошаговой отладке в IAR данные из ADC1->DR в a[0] попадают, а вот a[1] по нулям, как потенциометр ни крути.
Читал, что такие вещи лучше делать через DMA, но хотелось бы для начала попробовать без него...
0
|
||||||
| 20.11.2018, 09:17 | |
|
Ответы с готовыми решениями:
30
Порядок оцифровки групп регулярных каналов АЦП в режиме dual mode AVR АЦП использование нескольких каналов Измерение нескольких каналов АЦП один раз за период сигнала запуска |
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
||||||||||||||||
| 20.11.2018, 11:58 | ||||||||||||||||
|
Vozz, оптимизация включена? Если да, то попробуй
0
|
||||||||||||||||
|
1 / 1 / 0
Регистрация: 22.06.2016
Сообщений: 96
|
|
| 20.11.2018, 12:50 [ТС] | |
|
И правда, небольшая ссылочка под описанием бита SCAN в референс мануале
. Да и в самом RM0041 прописано, ибо если используете несколько регулярных каналов, то только через DMA. Второй вариант с ногодрыгом как-то не вызывает доверия ))) Дело в том, что DMA еще не юзал ни разу, а тут сразу АЦП через него... Ну, попробую, благо примеров много
0
|
|
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 20.11.2018, 12:53 | |
|
Vozz, да там не особо есть разница АЦП или не АЦП запускать с DMA. Оно почти везде одинаково. Если что скидывай код поправим
0
|
|
|
19 / 19 / 2
Регистрация: 13.07.2012
Сообщений: 164
|
|
| 20.11.2018, 13:45 | |
|
Vozz, вы меня конечно извините, но вот то что вы делаете это просто фантастика по современным меркам! Никогда в прикладных задачах не оперируют с аппаратной частью на уровне регистров, это чревато катастрофическими ошибками при увеличении объемов кода, а при работе с операционной системой на борту так вообще очень быстро приведет к серьезным гейзенбагам уже при двух-трех потоках. Прошивки пишут с использованием HAL(Hardware Abstraction Layer) - специального набора библиотек, задачей которого является максимальное абстрагирование от такого кода как у вас, сводя десятки строк подобного кода-лапши к функции HAL_ADC_GetValue(&hadc1). Самым мощным hal для stm32 на данный момент является оригинальный набор библиотек от ST Microelectronics идущий комплектом в пресловутом Stm32CubeMx. И изучать вопросы как работает ацп, нужно именно с позиции хала, попутно изучая код самих библиотечных функций, для общего понимания того, что же на самом делает низкоуровневый код.
Вот таких вот примеров кода в интернете масса, но проблема в том, что он не имеет никакой связью с реальностью, stm32 это довольно серьезные мк на которых решают прикладные задачи сильно отличающиеся от мигания светодиодом. У меня в практике есть прошивка состоящая из 22000 строк прикладного кода поверх HAL и FreeRTOS. Больше половины времени разработки были потрачены на отладочные мероприятия, если бы она писалась предлагаемыми методиками, то прошивка в релиз никогда бы и не вышла в принципе. Поэтому мой вам совет, если хотите писать на данных мк что-то более серьезные чем снятие значение с канала ацп, изучайте данные мк со стороны CubeMx.
0
|
|
|
1 / 1 / 0
Регистрация: 22.06.2016
Сообщений: 96
|
|
| 20.11.2018, 14:02 [ТС] | |
|
Ну тут уж на вкус и цвет ... Я видел код для TFT-дисплея, написанный на CMSIS и ничего... Кто-то плюется от SPL и HAL, предпочитая CMSIS, кто-то наоборот.
Для меня понятнее, заглянув в reference manual, видеть регистры и непосредственно биты в них.
0
|
|
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
||||
| 20.11.2018, 14:08 | ||||
|
Serbis, не вводите ТСа и начинающих в заблуждение.
Не по теме: Топящих за CMSIS я уже видел, но ярые фаны HAL, да еще и в разработке - это что-то новенькое.
0
|
||||
|
1 / 1 / 0
Регистрация: 22.06.2016
Сообщений: 96
|
||||||
| 21.11.2018, 11:56 [ТС] | ||||||
|
Первая тренировка с DMA поставила в тупик
.
.Добавлено через 35 секунд
0
|
||||||
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
||||||||||||||||
| 21.11.2018, 12:15 | ||||||||||||||||
Сообщение было отмечено Vozz как решение
Решение
Vozz, пока в регистры DMA не смотрел, а вот в настройке АЦП не увидел выставления бита разрешения DMA
Vozz, едем дальше
1
|
||||||||||||||||
|
1 / 1 / 0
Регистрация: 22.06.2016
Сообщений: 96
|
||||||
| 21.11.2018, 14:11 [ТС] | ||||||
|
Йесс, в CMAR1 появились данные от АЦП и загорелся зеленый светодиод на отладочной плате, что сигнализирует об окончании передачи 16 бит. В переменной Buffer валяются значения АЦП. Еще пару косяков у себя обнаружил, экпериментируем дальше)
Добавлено через 2 минуты Да, спасибо уже увидел косяки, отладчик подсказывал предупреждением Добавлено через 15 минут Все, добил код. Надеюсь, если такой же новичек, как я будет ломать голову, то мой пример ему поможет). На PA0 и PA1 у меня висит по потенциометру. запитал их тут же на отладочной плате от 3,3В оба канала опрашивается нормально, прерывание DMA добавил просто по факту, чтобы его отследить (срабатывает или нет).
Добавлено через 1 час 31 минуту Без DMA тут получилась бы солянка. Удобно тем, что DMA по настройкам сам формирует кольцевой буфер. Его можно зациклить, можно сделать один проход ... и заполнить массив ну и плюс процессор не напрягается
0
|
||||||
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
||
| 21.11.2018, 14:14 | ||
|
Vozz,
0
|
||
|
1 / 1 / 0
Регистрация: 22.06.2016
Сообщений: 96
|
|
| 21.11.2018, 14:25 [ТС] | |
|
Хотел поначалу использовать инжектированные каналы АЦП, но их всего 4... EXTI тоже всего 4 входа можно сделать (для регулирования выходного напряжения приделать инкрементальные энкодеры), а нужно 12 каналов, вот DMA и помог.
0
|
|
|
1 / 1 / 0
Регистрация: 22.06.2016
Сообщений: 96
|
|
| 21.11.2018, 18:19 [ТС] | |
|
Я думаю и через EXTIn можно ...
0
|
|
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 21.11.2018, 20:35 | |
|
Vozz, это как и ацп без дма, можно настраивать один канал и в прерывании перенастраивать. А можно использовать аппаратный ДМА.
Тут точно так же, зачем нагружать ядро, если есть специальный инструмент для работы с энкодерами.
0
|
|
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||
| 27.11.2018, 09:59 | ||
|
Не по теме: что называется, "приехали"... )) Как же удобно было раньше на SPL'е... Добавлено через 40 секунд Vozz, почему вы не используете SPL, HAL и или готовые библиотеки?
0
|
||
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 27.11.2018, 10:07 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 22.06.2016
Сообщений: 96
|
||
| 27.11.2018, 12:32 [ТС] | ||
|
Да, это дольше, чем через библиотеки, но никаких срочных проектов у меня нет. Разбираться в коде легче, если что-то не прет. Вот так получилось, что полюбился мне CMSIS
1
|
||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||
| 27.11.2018, 13:37 | ||
|
PS: просто для новичка (на платформах ST) использование трушных регистров довольно муторное дело.
0
|
||
| 27.11.2018, 13:37 | |
|
Помогаю со студенческими работами здесь
20
Использование нескольких каналов АЦП АЦП несколько каналов Переключение каналов АЦП atmega88 Stm8l и несколько каналов АЦП Большое количество АЦП каналов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла:
Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
|
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
|