Миландр
https://forum.milandr.ru/

DMA ADC 1986ВЕ3
https://forum.milandr.ru/viewtopic.php?f=38&t=4005
Страница 1 из 1

Автор:  erik [ 2019-мар-01 14:22 ]
Заголовок сообщения:  DMA ADC 1986ВЕ3

Сделал по примеру для ВЕ94 описаного в книжке:
несколько каналов опрашиваются и пересылаются в буфер по DMA
Пытаюсь этот же пример перетащить на 1986ВЕ3 -
прерывание называется только по другому - DMA_Channel_SREQ_ADCDMA
прерывания от DMA работают и забивают все другие
такие ощущение что вообще запрос не сбрасывается
в регистре АЦП - нули.
в эррате прочитал что нужно отключать немаскированный запрос
такой командой: MDR_DMA-> CHNL_USEBURST_SET = 1 << 30;
но это не помогает.
можно конечно сделать это просто в прерывании от АЦП
но хотелось бы это получит с DMA, так как много чего обслуживать нужно

Автор:  Vasiliy [ 2019-мар-18 10:12 ]
Заголовок сообщения:  Re: DMA ADC 1986ВЕ3

Скиньте пример на support@milandr.ru c указанием маркировки на крышке микросхемы, посмотрим что можно сделать.
В примере необходимо убрать все что к DMA и ADC не относится.

Автор:  Vasiliy [ 2019-апр-15 14:00 ]
Заголовок сообщения:  Re: DMA ADC 1986ВЕ3

В 1986ВЕ3 2-й ревизии не формируются запросы к DMA от АЦП, поэтому принять данные от АЦП по DMA не получится. Еррата - ошибка 003.
В 3-й ревизии запросы формируются и такая связка работает.

Пример есть тут, но под собственный пак:
https://github.com/StartMilandr/MDR_Pac ... C_PingPong

Особенность для работы с DMA - отключить обработку аппаратных запросов Reg и SReq к DMA можно через регистр CHNL_REQ_MASK_SET установив 1 в необходимый разряд. Тогда если запрос от аппаратуры (SSP, ADC, аудиокодеки и т.д.) к DMA активен, DMA реагировать на него не будет и не будет зависать в прерывании. НО для этого необходимо чтобы канал был включен, т.е. установлен бит канала в регистре CHNL_ENABLE_SET!

Страница 1 из 1 Часовой пояс: UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/