|
|
  |
Работа TXC в USART, Не могу разобраться с флагом "окончание передачи", помогите |
|
|
|
Aug 21 2007, 02:06
|

Местный
  
Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606

|
Цитата(defunct @ Aug 21 2007, 04:41)  2 TXC на 2 переданных байта - абсолютно нормальное поведение чипа. Вот именно такой прямой ответ я и хотел получить! Огромное спасибо! Ибо "Атмеловский английский" неразумею. Им наверное построчно плотют. Ка-кто смутно и коротко у них там описана работа буферизации USART. Было бы логично если бы флаг TXC устанавливался по ОПУСТОШЕНИЮ буфера. Но похоже он устанавливается по окончанию передачи одного байта из двух что в буфере. Соответственно возникают 2 прерывания вместо ожидаемого 1го. То-есть не получится сделать совсем красиво. Досадно. Спасибо за исходники. Цитата(SasaVitebsk @ Aug 21 2007, 02:56)  Простите пожалуйста, но лично у меня фраза "камень глючит" или "винда не так села" вызывает пену у рта и лёгкое подколбашивание. Кто-то на форуме собирал камни которые "глючат" как редкую реликвию. И, наверное перекупили бы у вас такой камень. К сожалению, скорее всего "глючит" другой прибор не техногенного происхождения. Во всяком случае с очень большой долей вероятности. Впоне возможно что глючу Я. А камень продам по сходящей тк. он уже в 2 раза питался 12 вольтами. Что вы понимаете под словом "отладчик"?
|
|
|
|
|
Aug 21 2007, 04:53
|

Профессионал
    
Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371

|
Почему получается 2 прерывания по TXC при передачи 2-х байт не понял. может я не правильно помню и делаю иначе, но с таким не встречался. На память TXC возникает при пустом буфере и выдачи стопового бита. На я передачу делал так. 2 байта в буфер; включить UDRE по UDRE подкачивать данные если новых двнных нет, то выключить UDRE и включить TXC если TXC, то все переданно, переключиться на прием. и таких вещей Цитата как бонус даже межсимвольный интервал непроизвольно получается. у меня не было
--------------------
OrCAD, Altium,IAR, AVR....
|
|
|
|
|
Aug 21 2007, 10:59
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата(arttab @ Aug 21 2007, 07:53)  Почему получается 2 прерывания по TXC при передачи 2-х байт не понял. может я не правильно помню и делаю иначе, но с таким не встречался. На память TXC возникает при пустом буфере и выдачи стопового бита. Безусловно. Прямо так и написано: Цитата The Transmit Complete (TXC) flag bit is set one when the entire frame in the Transmit Shift Register has been shifted out and there are no new data currently present in the transmit buffer Цитата На я передачу делал так. 2 байта в буфер; включить UDRE по UDRE подкачивать данные если новых двнных нет, то выключить UDRE и включить TXC если TXC, то все переданно, переключиться на прием.
и таких вещей у меня не было Ну в принципе даже разрешение TXC можно не дергать, если вы можете дать гарантию, что время реакции на UDRE не превысит времени передачи символа. Тогда TXC придет ТОЛЬКО ОДИН в конце пакета. Как раз, чтобы выключить передатчик на ADM485  Вообщем-то все культурно и правильно в камне. Работать в принципе по UDRE и надо, чтобы не было дырок между символами (они только уменьшают общую скорость передачи).
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Aug 21 2007, 11:47
|

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

|
Цитата(Rst7 @ Aug 21 2007, 13:59)  Вообщем-то все культурно и правильно в камне. Работать в принципе по UDRE и надо, чтобы не было дырок между символами (они только уменьшают общую скорость передачи). Они (всмысле межсимвольные интервалы) добавляют стабильности передачи. В Modbus - межсимвольный интервал is a MUST. А скорость, кому она нужна в 485? Цитата Почему получается 2 прерывания по TXC при передачи 2-х байт не понял. Потому что отправляется два символа. После отправки каждого генерится TXC, если игнорировать UDRE.
|
|
|
|
|
Aug 21 2007, 11:59
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата(defunct @ Aug 21 2007, 14:47)  Они (всмысле межсимвольные интервалы) добавляют стабильности передачи. Обоснуйте? Цитата В Modbus - межсимвольный интервал is a MUST. Межпакетный да, а вот межсимвольный??? Можно цитату? Цитата А скорость, кому она нужна в 485? Ну не скажите... Разные случаи есть..
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Aug 21 2007, 13:42
|
Местный
  
Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598

|
Цитата(Rst7 @ Aug 21 2007, 13:59)  Работать в принципе по UDRE и надо, чтобы не было дырок между символами (они только уменьшают общую скорость передачи). Оно то может и так, но привычка с 51 осталась. Там аналога UDRE нет. Да и немного неудобно. UDRE устанавливается всегда, когда буфер на передачу пуст (срабатывание по состоянию). А если я не хочу передавать, надо прерывание запрещать. Прерывание ТХС устанавливается по событию, сбросил после передачи последнего байта и свободен до следующей передачи.
|
|
|
|
|
Aug 21 2007, 13:59
|
Местный
  
Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101

|
Цитата(Т.Достоевский @ Aug 21 2007, 13:44)  А разве там есть окно COM порта? У меня 4,12 с обработкой прерываний там туго.  Чойто туго??! Там можешь руками поднять бит прерывания - и вот оно, появилось. Или маску. Или ещё что, всё работает. Наоборот, оч. хорошо там с прерываниями вручную. Приём только так и отлаживал - включаешь RXC - сразу прерываание, побежал обрабатывать байт... По поводу TXC/UDRE. Пользую их оба, для 485, ага. Чтобы отправить строку байтов, переключаю интерфейс на выход и записываю байт в UDR. Всё! дальше прерывания сами. Тут же байт из UDR проваливается в регистр сдвига и возникает прерывание UDRI. Обработчик смотрит: все байты передал? нет: следующий в UDR; да: ничего. Когда последний байт передан, возникает TXCI. Его обработчик переключает RS485 на приём. Всё.
|
|
|
|
|
Aug 21 2007, 15:48
|

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

|
Цитата(Rst7 @ Aug 21 2007, 14:59)  Обоснуйте? Ну например - передатчик работает 8-1-N, а приемник включили 8-2-N. С отправкой "по TXC" с большой долей вероятности ошибок приема не будет. Цитата Межпакетный да, а вот межсимвольный??? Можно цитату? Таки действительно органичение "снизу" только на межпакетный - "Character gap interval". На межсимвольный "silent interval" ограничение "сверху": Цитата The entire message must be transmitted as a continuous stream. If a silent interval of more than 1.5 character times occurs before completion of the frame (not a continuous stream), the receiving device flushes the incomplete message and assumes the next byte will be the address field of a new message. источник: http://www.sena.com/download/tutorial/tech_Modbus_v1r0c0.pdf (150k) cм. секцию 5.2 Цитата Ну не скажите... Разные случаи есть.. Может быть, но мне что-то такие случаи в сетях 485 не подворачивались.
|
|
|
|
|
Aug 22 2007, 05:20
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата(defunct @ Aug 21 2007, 18:48)  Ну например - передатчик работает 8-1-N, а приемник включили 8-2-N. С отправкой "по TXC" с большой долей вероятности ошибок приема не будет. Так включите и в передатчике 9 бит с установленным девятым битом... А ручные задержки для добавления бита - это моветон... А задержки, которые еще и неизвестно какой длительности (ну сколько времени там будет от TXC до записи в UDR) - как говорится, это ваще  Цитата Таки действительно органичение "снизу" только на межпакетный - "Character gap interval". На межсимвольный "silent interval" ограничение "сверху": источник: http://www.sena.com/download/tutorial/tech_Modbus_v1r0c0.pdf (150k) cм. секцию 5.2 Посему оптимально будет посылка именно без интервалов. Цитата Может быть, но мне что-то такие случаи в сетях 485 не подворачивались. Ну надо минимизировать время опроса в сети при ограничении битовой скорости. Вот и весь случай.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|