ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
618666
Yurasvs (09.09.2015 23:31 - 23:33, просмотров: 1657)
Кстати, а как решается вопрос с атомарностью доступа к памяти при работе ДМА? Запустил опрос 5каналов АЦП в регулярном режиме, результаты забираю из единственного регистра АЦП с помощью ДМА и складываю в буфер(массив). http://i.piccy.info/a3/2015-09-09-20-30/i9-8717424/730x585-r/i.gif[/IMG]
Все крутится непрерывно. Одновременно с этим через второй канал ДМА некоторые из принятых данных (с обработкой и без) отправляются через УАРТ на комп, где из них строится график. Тоже непрерывно. На графике иногда возникают выбросы, предположительно из-за того, что при несинхронной записи и чтении одного и того же участка памяти разными ДМА возникают проблемы с атомарностью и данные иногда искажаются. Можно конечно каждый раз останавливать ДМА при каждом чтении буфера, но нет ли более красивого решения? На картинке скриншот программы-логгера принимаемых данных, верхняя кривая - данные первого канала АЦП, на вход которого подается сигнал просто с потенциометра для проверки. Видны выбросы. Помехи такой величины на аналоговую часть исключены, им неоткуда взяться.