romas2010 1 31 марта, 2023 Опубликовано 31 марта, 2023 · Жалоба Коллеги, приветствую. Столкнулся с таким явлением. Читаю АЦП при помощи DMA. Всё функции от HAL. Так вот, если выключаю прерывания и использую опрос, то по адресам 0х20000000..0х20000010 иногда появляются копии считанных байтов, причём хаотически в разных местах, но в пределах этих 16 байт. При включеном прерывании (имеется ввиду прерывание по данному каналу DMA) этот эффект уходит. Собственно говоря, вопрос-ответ что надо сделать, чтоб этого эффекта не было? P. S. В проекте получается более 10 источников прерываний, поэтому хочу некоторые источники опрашивать P. S. 2. Приём UART через DMA путём опроса работает корректно. Непонятно, в общем, что за петрушка Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 31 марта, 2023 Опубликовано 31 марта, 2023 · Жалоба В 31.03.2023 в 22:10, romas2010 сказал: Читаю АЦП при помощи DMA. Один канал или несколько? Сколько? В 31.03.2023 в 22:10, romas2010 сказал: то по адресам 0х20000000..0х20000010 А что линкер разместил по этим адресам? В 31.03.2023 в 22:10, romas2010 сказал: копии считанных байтов АЦП 12-битный. Вы в 8 битном режиме от него данные получаете? В 31.03.2023 в 22:10, romas2010 сказал: чтоб этого эффекта не было? Без исходника ничего не понятно. В 31.03.2023 в 22:10, romas2010 сказал: P. S. В проекте получается более 10 источников прерываний, поэтому хочу некоторые источники опрашивать Сомнительное решение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 236 31 марта, 2023 Опубликовано 31 марта, 2023 · Жалоба 2 часа назад, romas2010 сказал: P. S. 2. Приём UART через DMA путём опроса работает корректно. "Путём опроса" - что это означает? Что за путь такой? путь джедая - знаем, путь опроса - нет. PS: С прерываниями - это у Вас что-то личное, да? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 1 апреля, 2023 Опубликовано 1 апреля, 2023 · Жалоба Достаём хрустальный шар. Приём UART через DMA путём опроса могу нафантазировать разными способами: 1. Опрашиваем в главном цикле флаг RXNE. Если он вскочил, то запускаем DMA на передачу данных из DR в память. Ждём окончания передачи опять же опросом флагов DMA. Выключаем DMA. 2. Запускаем DMA на приём байта из DR. В основном цикле опрашиваем флаги DMA на предмет окончания приёма. Выключаем DMA. 3. Можно ещё извращённых методов придумать с опросом флагов UART через DMA... В сочетании с HAL на 2400-9600, пожалуй, взлетит. 🙂 Убираем хрустальный шар. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 58 1 апреля, 2023 Опубликовано 1 апреля, 2023 · Жалоба 2 hours ago, VladislavS said: Убираем хрустальный шар. Не убирайте далеко ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 86 1 апреля, 2023 Опубликовано 1 апреля, 2023 (изменено) · Жалоба 16 часов назад, romas2010 сказал: что надо сделать, чтоб этого эффекта не было? Не делать того, что к этому приводит 🙂 Если на адресах в начале SRAM, то значит где-то создан массив глобальной (или статической локальной) переменной, в которую кто-то/что-то помещает результаты измерений. В большинстве случаев именно так. Вообще, надо всегда следить за тем, что/как ты пишешь и что/как/куда кладёшь... Много задействованных источников прерываний - это не смертельно. Тут зависит от частоты их возникновения. Если сыплются все сразу и микроконтроллер не успевает их разруливать, тогда конечно много. В остальных случаях - не криминально. Изменено 1 апреля, 2023 пользователем EdgeAligned Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
engel65536 12 1 апреля, 2023 Опубликовано 1 апреля, 2023 · Жалоба 20 hours ago, romas2010 said: Читаю АЦП при помощи DMA. 20 hours ago, romas2010 said: если выключаю прерывания и использую опрос А DMA-то вы отключаете при этом? Выключение прерываний никакого отношения к DMA не имеет. И опрос вручную регистра данных АЦП также не отключит DMA. 20 hours ago, romas2010 said: по адресам 0х20000000..0х20000010 DMA ваш случайно не на эти ли адреса нацелен? 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться