|
Гарантия того, что по USART все данные ушли |
|
|
|
Jan 14 2010, 10:27
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 14-12-07
Из: Беларусь, Гомель
Пользователь №: 33 305

|
Здравствуйте, не могли бы вы разъяснить такую ситуацию? Перед входом в спящий режим мне нужно убедиться, что все данные ушли в линию. Для этого есть флаг ТХС. В даташите сказано: Флаг устанавливается в 1 после передачи всех битов посылки из сдвигового регистра передатчика при условии, что в регистр данных UDR не было загружено новое значение. Флаг сбрасывается аппаратно при выполнении подпрограммы обработки прерывания или программно, записью в него лог. 1
Прерываний я не активировал, т.е. получается что после первой передачи, когда данные ушли, и в буфер я данных для отсылки не заносил, этот флаг установится в 1 и больше никогда не сбросится? Если да, то получается, что после каждой передачи мне нужно программно сбрасывать этот бит?
|
|
|
|
|
 |
Ответов
|
Jan 14 2010, 12:33
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Палыч @ Jan 14 2010, 14:07)  Кстати, всегда интересовало: как другие разработчики определяют окончание передачи (это актуально при использовании RS-485: включение/отключение приёмника) при использовании прерываний и записи байта по освобождению UDR. Не знаю как другие, но я - исключительно по прерыванию TXC от USART. Потому что: Цитата Флаг сбрасывается аппаратно при выполнении подпрограммы обработки прерывания На кой ляд анализировать какой-то флаг, когда есть TXC event, который аппаратно управляет флагом.
|
|
|
|
|
Jan 14 2010, 13:04
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(defunct @ Jan 14 2010, 15:33)  Не знаю как другие, но я - исключительно по прерыванию TXC от USART. Это-то - понятно. Интересует: как у Вас устроена программа, что по этому прерыванию Вы гарантировано знаете, что все байты переданы? Поясню свой вопрос на примере "неправильного" софта (который такой гарантии не даёт, ну, или не во всех случаях): 1. Данные загружаются в UDR по прерыванию USART Data Register Empty 2. Перед загругкой последнего байта сбрасывается флаг TXC; последний байт загружается в UDR; разрешаются прерывания от USART Tx Complete 3. Наступает прерывание по TXC - считаем, что все байты переданы, что не всегда верно (см. выше - сообщение #5). Цитата(admiral @ Jan 14 2010, 15:57)  И вот вопрос: контроллеру нужно заснуть, как убедится, что все данные отосланы? Будет ли нормально, если я перед каждой посылкой байта (неважно последний он или нет) буду сбрасывать этот флаг? Это - не повредит... Цитата(admiral @ Jan 14 2010, 15:57)  Не пойму почему они не сделали, что бы, к примеру, при записи данных в UDR флаг TXC сбрасывался аппаратно? И я тоже этому в своё время был очень удивлён
|
|
|
|
Сообщений в этой теме
admiral Гарантия того, что по USART все данные ушли Jan 14 2010, 10:27 Rst7 ЦитатаЕсли да, то получается, что после каждой пер... Jan 14 2010, 10:45 admiral Цитата(Rst7 @ Jan 14 2010, 14:45) По наук... Jan 14 2010, 11:29 Rst7 ЦитатаСпасибо, а если неизвестно последний это бай... Jan 14 2010, 11:32 Палыч Цитата(Rst7 @ Jan 14 2010, 13:45) По наук... Jan 14 2010, 11:38    Qwertty Цитата(Палыч @ Jan 14 2010, 16:04) Поясню... Jan 14 2010, 13:42    _Pasha Цитата(Палыч @ Jan 14 2010, 17:04) 1. Дан... Jan 14 2010, 13:59    defunct Цитата(Палыч @ Jan 14 2010, 15:04) Это-то... Jan 14 2010, 18:08     _Pasha Цитата(defunct @ Jan 14 2010, 22:08) Флаг... Jan 14 2010, 18:53      defunct Цитата(_Pasha @ Jan 14 2010, 20:53) 1) от... Jan 14 2010, 19:37       Qwertty Цитата(defunct @ Jan 14 2010, 22:37) А за... Jan 14 2010, 20:58     Палыч Цитата(defunct @ Jan 14 2010, 21:08) В си... Jan 15 2010, 08:12      defunct Цитата(Палыч @ Jan 15 2010, 10:12) Да и ... Jan 15 2010, 11:54       demiurg_spb Цитата(defunct @ Jan 15 2010, 14:54) В Mo... Jan 21 2010, 11:10        _Pasha Цитата(demiurg_spb @ Jan 21 2010, 15:10) ... Jan 21 2010, 11:32         demiurg_spb А я вот всё больше и больше склоняюсь к тому что э... Jan 21 2010, 12:03         demiurg_spb Цитата(_Pasha @ Jan 21 2010, 14:32) Никак... Jan 22 2010, 18:26        defunct Цитата(demiurg_spb @ Jan 21 2010, 13:10) ... Jan 21 2010, 17:28 V_G На мой взгляд, как раз широкое использование преры... Jan 14 2010, 12:43 Rst7 ЦитатаНа мой взгляд, как раз широкое использование... Jan 14 2010, 12:48 admiral Объясню ситуацию:
делаю устройство, т.к. питаться ... Jan 14 2010, 12:57 ILYAUL Цитата(admiral @ Jan 14 2010, 15:57) И во... Jan 14 2010, 15:16 defunct Цитата(admiral @ Jan 14 2010, 14:57) Прер... Jan 14 2010, 17:30 V_G Посмотрел на симуляторе - у меня флаг TXC сброшен ... Jan 14 2010, 13:31 Палыч Цитата(Rst7 @ Jan 14 2010, 15:48) Тут нем... Jan 14 2010, 13:48  Qwertty Цитата(Палыч @ Jan 14 2010, 16:48) Значит... Jan 14 2010, 13:57 SysRq Цитата(admiral @ Jan 14 2010, 15:57) Объя... Jan 14 2010, 17:44 Maik-vs RS485, скорости до 115200. Делаю так же: формирую ... Jan 14 2010, 19:03 HALFer admiral,
если "правильность" софта не пу... Jan 14 2010, 20:35 admiral Цитата(HALFer @ Jan 15 2010, 00:35) admir... Jan 18 2010, 07:31  Maik-vs Цитата(admiral @ Jan 18 2010, 10:31) Я та... Jan 20 2010, 12:35 SysRq Цитата(_Pasha @ Jan 14 2010, 21:53) 1) от... Jan 15 2010, 06:45 _Pasha Цитата(SysRq @ Jan 15 2010, 10:45) Если в... Jan 15 2010, 07:48 SysRq Цитата(_Pasha @ Jan 15 2010, 10:48) Объяс... Jan 15 2010, 08:02 _Pasha А кто как борется с коллизиями?
RXE всегда включен... Jan 15 2010, 09:23 Палыч Цитата(_Pasha @ Jan 15 2010, 12:23) А кто... Jan 15 2010, 09:43 V_G Цитата(_Pasha @ Jan 15 2010, 19:23) А кто... Jan 15 2010, 10:59 Александр Куличок ЦитатаЕсли же флаг сбрасывать при загрузке UDR, то... Jan 20 2010, 22:47 Maik-vs Цитата(Александр Куличок @ Jan 21 2010, 01... Jan 31 2010, 14:54 Александр Куличок Что ж тут непонятного. Время на передачу байта фик... Jan 22 2010, 20:18 _Pasha Цитата(Александр Куличок @ Jan 23 2010, 00... Jan 23 2010, 05:02  demiurg_spb Цитата(_Pasha @ Jan 23 2010, 08:02) Проще... Jan 29 2010, 18:26   _Pasha Цитата(demiurg_spb @ Jan 29 2010, 21:26) ... Jan 30 2010, 03:05    demiurg_spb Цитата(_Pasha @ Jan 30 2010, 06:05) 1. На... Jan 30 2010, 10:46     _Pasha Цитата(demiurg_spb @ Jan 30 2010, 13:46) ... Jan 31 2010, 05:24      demiurg_spb Цитата(_Pasha @ Jan 31 2010, 08:24) Поток... Jan 31 2010, 11:13 Александр Куличок Речь шла о флаге TXC. И о возможности отслеживания... Jan 31 2010, 21:31 sitafern Пользуюсь простым алгоритмом при реализации Modbus... Jan 31 2010, 22:26
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|