У меня с помощью Shura родилась такая идея (пока не пробовал) реализации задержки для протоколов RTU на RS-485.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено rezident 13 декабря 2004 г. 21:25
В ответ на: Да, для 485 получается так. отправлено Сергей Борщ 13 декабря 2004 г. 19:54

Начальное условие: прием. UART сконфирурирован как и положено. Возникла необходимость передачи.
1. Конфигурируем выходной пин URTXDx как на дискретный выход и устанавливаем в 1, что соответствует неактивному состоянию линии RS-485.
2. Устанавливаем сигнал DE.
3. Включаем режим UART Listen и передаем один (два) байт по сути в никуда. Это типа выдерживаем таймаут для установления линии RS-485.
4. Выключаем режим UART Listen. Конфигурируем выходной пин URTXDx как и положено для функционирования UART и начинаем передачу буфера.

Передача завершена. Нужна пауза >3.5 символа.
1. DE по прежнему установлен. Конфигурируем выходной пин URTXDx как дискретный выход и устанавливаем в 1.
2. Включаем режим UART Listen и передаем 4 байта.
3. Прием/передача, а следовательно и пауза завершена. Сбрасываем сигнал DE.

Возможный недостаток такого способа в том, что для выдерживания паузы используются оба прерывания UART и приемника и передатчика. Поскольку приемник и передатчик одновременно для разных потоков данных не используются, то это и не страшно. Зато не требуется использование таймера. Как вам такой способ?

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru