ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
19 мая
1352882 Топик полностью
Nikolay_Po (21.09.2023 08:01, просмотров: 156) ответил ЫЫyкпy на Были как-то глюки в работе ADC и DMA, причем не на всех экземплярах, а где-то 50/50. Вылечилось добавлением барьера DSB сразу после включения тактирования DMA, там где в исходнике "//Dummy read for a pause".
Спасибо. Ну, я научен dsPIC-ами. Там, где периферия медленнее, чем шина, нужно ожидать сработки модуля, прежде чем продолжать настройку. Доходило до смешного - заводил трабл тикет на модуль UART - после записи байта на передачу, тут же выполняемая проверка бита занятия буфера передачи давала результат "буфер свободен". Периферия буквально на такт не успевала за шиной. Микрочип проверил и отписался, что все нормально, просто шина слишком быстрая. Вставляйте один NOP. 

Насчёт барьера DSB, по идее, пустое чтение регистра управления периферией, по сути, выполнит то же самое - дождется готовности медленной части для получения значения. Или я ошибаюсь?