k155la3 27 8 ноября, 2016 Опубликовано 8 ноября, 2016 (изменено) · Жалоба Для обеспечения асинхронности передачи по USART использую DMA (MSP430F5438A). Операционной системы нет. Какие есть отзывы по этому режиму, если кто использует. - удобстово работы - надежность - отсутствие глюков (в разрезе errata и прочих). - использование DMA0, DMA1 для USART1, USART2 (т.е. одновременная работа на 2 каналах DMA) ps-ps-ps - работа с подключенным отладчиком (MSP430FET-UIF) - есть ли ограничения по конфликтности с DMA Изменено 8 ноября, 2016 пользователем k155la3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 8 ноября, 2016 Опубликовано 8 ноября, 2016 · Жалоба Давно (лет 6 назад) на F47177 DMA с USARTом использовал. Вопросов не было. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 10 ноября, 2016 Опубликовано 10 ноября, 2016 (изменено) · Жалоба Итак, "по одному" в MSP340F5438A все работает так как и ожидалось DMA0 --> USART_1 (только передача, без приема) DMA1 --> USART_2 (только передача, без приема) Прерывания от обоих USART запрещены. Вектор прерывания от DMA - "пустышка" без кода. Когда я (не столько по наивности, сколько "а вдруг") запускаю их оба (разремливаю не использовавшийся код для второго канала) то идут глючки по выдаваемой информации (контроль в HEX на терминалка PC). (?) 1. ----------- Допустимо ли стартовать более 1 канала DMA одновременно ? (в том смысле, не будет ли конфликта по доступу к RAM) (?) 2. ----------- Требуется ли устаналивать режим Round Robin в настройках DMA (в данном случае, когда запускаются 2 канала "в параллель") Когда нужна эта установка ? (?) 3. ----------- Есть ли у Ti, или где-либо, пример работы (настройки) для одновременной работы 2 каналов DMA ? (То, что есть в стандартных примерах - для одного канала) Изменено 10 ноября, 2016 пользователем k155la3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 10 ноября, 2016 Опубликовано 10 ноября, 2016 · Жалоба Допустимо. Но работать будут согласно приоритету. "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" нужен чтобы приоритет каналов "менялся" от высшего к низшему "по кругу" с каждым циклом обмена. Вам нужно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 10 ноября, 2016 Опубликовано 10 ноября, 2016 (изменено) · Жалоба Допустимо. Но работать будут согласно приоритету. . . . . "Round Robin" нужен чтобы приоритет каналов "менялся" от высшего к низшему "по кругу" с каждым циклом обмена. Вам нужно? Спасибо за инф. Я так понял, что пока не выполнится одна блочная передача, другая не запустится ? Или надо включать Round Robin. Надо с этим заморачиваться или нет - пока не решил. Хотелость бы "по максимуму" перебросить операции на периферию. Пока на эксперименты времени нет. Разрулим на программном уровне, чтобы запуск DMA каналов не перекрывался. ps - у меня запросы на DMA0 DMA1 шли полностью асинхронно, и гарантированно могли наложится. Изменено 10 ноября, 2016 пользователем k155la3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 10 ноября, 2016 Опубликовано 10 ноября, 2016 (изменено) · Жалоба "Будет ожидать" и "не запустится", согласитесь, не одно и то же. Последние два предложения из того, что было зацитировано. Изменено 10 ноября, 2016 пользователем Obam Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 10 ноября, 2016 Опубликовано 10 ноября, 2016 · Жалоба Ok. Спасибо. Будем попробовать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться