Не проникся. Проверку я убрал. Передача первого пакета проходит, в последнем прерывании не передаю, а запрещаю дальнейшие. Второй старт - разрешаю, а их уже нет...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
Vladimir Ljaschko
13 декабря 2004 г. 15:04
В ответ на:
Именно этим. А как сделать правильно отсюда логично и следует - передавать очередной байт без всяких проверок.
отправлено -=Shura=- 13 декабря 2004 г. 14:52
Составить ответ
|||
Конференция
|||
Архив
Ответы
Дык мало разрешить прерывание, нужно еще и UTXIFGx установить программно!
—
rezident
(13.12.2004 15:11,
пустое
)
Не нужно флаг устанавливать, он автоматом выставляется и торчит.
—
Сергей Борщ
(13.12.2004 15:36, 573 байт)
Спасибо, попробую еще и так. Но есть желание использовать принудительную установку (кажется более устойчивым).
—
Vladimir Ljaschko
(13.12.2004 15:55,
пустое
)
В смысле если его принудительно не сбросить, он будет выставлен до следующего разрешения прерывания.
—
Сергей Борщ
(13.12.2004 15:40,
пустое
)
Флаг сбрасывается после обслуживания прерывания. В таком случае нужно прямо в процедуре обслуживающей прерывании запрещать прерывание от передачика.
—
rezident
(13.12.2004 15:48,
пустое
)
Ну да. А где еще доступна информация, ч то в этот момент уже все передано?
—
Сергей Борщ
(13.12.2004 15:58,
пустое
)
В прерывании? Дык у меня транспортный протокол на прерывание посажен. Флаг, счетчик буфера и переменная размера буфера определяют надо или не надо что-либо передавать.
—
rezident
(13.12.2004 16:02,
пустое
)
Дело в том, что инициализация UART, подготовка данных для передачи и управление передачей (DE/RE для RA-485) могут управляться совершенно разными процедурами.
—
rezident
(13.12.2004 16:05,
пустое
)
Сорри. Читать DE/RE для RS-485. А после иницализации флаг все равно установлен. Да и проще транспортный протокол организовать на прерывании ИМХО.
—
rezident
(13.12.2004 16:07,
пустое
)
Да, для 485 получается так.
—
Сергей Борщ
(13.12.2004 19:54, 334 байт)
У меня с помощью Shura родилась такая идея (пока не пробовал) реализации задержки для протоколов RTU на RS-485.
—
rezident
(13.12.2004 21:25, 1135 байт)
Ну да.
—
Сергей Борщ
(13.12.2004 19:42, 325 байт)
А... понял.
—
Сергей Борщ
(13.12.2004 19:47, 543 байт)
В принципе без разницы. Либо прерывание все время разрешено и для инициировании нового устанавливать флаг, либо манипулировать запретом/разрешением прерывания, но прямо в процедуре прерывания (что не всегда удобно).
—
rezident
(13.12.2004 15:50,
пустое
)
С установкой были какие-то кривости. Типа можно его не вовремя установить и все поломалось
—
Сергей Борщ
(13.12.2004 15:55,
пустое
)
Что значит "не вовремя установить"?
—
rezident
(13.12.2004 15:57,
пустое
)
Ну примерно так:
—
Сергей Борщ
(13.12.2004 19:50, 198 байт)
Нет, он взводится только для первого байта. Тут проблема, если не ушло старое сообщение, а программа хочет передать следующее.
—
Vladimir Ljaschko
(13.12.2004 20:33,
пустое
)
если не ушло старое сообщение, а программа хочет передать следующее. --- В этом случае задача ставится в очередь. Дырка-то для передачи одна :)
—
rezident
(13.12.2004 21:27,
пустое
)
Я же говорю, что на прерываниях реализован транспортный протокол, которому пофиг чего и куда передавать или принимать.
—
rezident
(13.12.2004 21:33, 227 байт)
Спасибо. Это меня мутная историческая память о 8251 сбивает :-)
—
Vladimir Ljaschko
(13.12.2004 15:14,
пустое
)
Либо FF пихнуть в пеДеРатчик :-)
—
-=Shura=-
(13.12.2004 15:12,
пустое
)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru