k155la3 27 November 8, 2016 Posted November 8, 2016 (edited) · Report post Для обеспечения асинхронности передачи по USART использую DMA (MSP430F5438A). Операционной системы нет. Какие есть отзывы по этому режиму, если кто использует. - удобстово работы - надежность - отсутствие глюков (в разрезе errata и прочих). - использование DMA0, DMA1 для USART1, USART2 (т.е. одновременная работа на 2 каналах DMA) ps-ps-ps - работа с подключенным отладчиком (MSP430FET-UIF) - есть ли ограничения по конфликтности с DMA Edited November 8, 2016 by k155la3 Quote Share this post Link to post Share on other sites More sharing options...
Obam 46 November 8, 2016 Posted November 8, 2016 · Report post Давно (лет 6 назад) на F47177 DMA с USARTом использовал. Вопросов не было. Quote Share this post Link to post Share on other sites More sharing options...
k155la3 27 November 10, 2016 Posted November 10, 2016 (edited) · Report post Итак, "по одному" в MSP340F5438A все работает так как и ожидалось DMA0 --> USART_1 (только передача, без приема) DMA1 --> USART_2 (только передача, без приема) Прерывания от обоих USART запрещены. Вектор прерывания от DMA - "пустышка" без кода. Когда я (не столько по наивности, сколько "а вдруг") запускаю их оба (разремливаю не использовавшийся код для второго канала) то идут глючки по выдаваемой информации (контроль в HEX на терминалка PC). (?) 1. ----------- Допустимо ли стартовать более 1 канала DMA одновременно ? (в том смысле, не будет ли конфликта по доступу к RAM) (?) 2. ----------- Требуется ли устаналивать режим Round Robin в настройках DMA (в данном случае, когда запускаются 2 канала "в параллель") Когда нужна эта установка ? (?) 3. ----------- Есть ли у Ti, или где-либо, пример работы (настройки) для одновременной работы 2 каналов DMA ? (То, что есть в стандартных примерах - для одного канала) Edited November 10, 2016 by k155la3 Quote Share this post Link to post Share on other sites More sharing options...
Obam 46 November 10, 2016 Posted November 10, 2016 · Report post Допустимо. Но работать будут согласно приоритету. "If two or three triggers happen simultaneously or are pending, the channel with the highest priority completes its transfer (single, block, or burst-block transfer) first, then the second priority channel, then the third priority channel. Transfers in progress are not halted if a higher-priority channel is triggered. The higher-priority channel waits until the transfer in progress completes before starting." "Round Robin" нужен чтобы приоритет каналов "менялся" от высшего к низшему "по кругу" с каждым циклом обмена. Вам нужно? Quote Share this post Link to post Share on other sites More sharing options...
k155la3 27 November 10, 2016 Posted November 10, 2016 (edited) · Report post Допустимо. Но работать будут согласно приоритету. . . . . "Round Robin" нужен чтобы приоритет каналов "менялся" от высшего к низшему "по кругу" с каждым циклом обмена. Вам нужно? Спасибо за инф. Я так понял, что пока не выполнится одна блочная передача, другая не запустится ? Или надо включать Round Robin. Надо с этим заморачиваться или нет - пока не решил. Хотелость бы "по максимуму" перебросить операции на периферию. Пока на эксперименты времени нет. Разрулим на программном уровне, чтобы запуск DMA каналов не перекрывался. ps - у меня запросы на DMA0 DMA1 шли полностью асинхронно, и гарантированно могли наложится. Edited November 10, 2016 by k155la3 Quote Share this post Link to post Share on other sites More sharing options...
Obam 46 November 10, 2016 Posted November 10, 2016 (edited) · Report post "Будет ожидать" и "не запустится", согласитесь, не одно и то же. Последние два предложения из того, что было зацитировано. Edited November 10, 2016 by Obam Quote Share this post Link to post Share on other sites More sharing options...
k155la3 27 November 10, 2016 Posted November 10, 2016 · Report post Ok. Спасибо. Будем попробовать. Quote Share this post Link to post Share on other sites More sharing options...