реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Работа TXC в USART, Не могу разобраться с флагом "окончание передачи", помогите
fmdost
сообщение Aug 21 2007, 02:06
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 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 вольтами.

Что вы понимаете под словом "отладчик"?
Go to the top of the page
 
+Quote Post
arttab
сообщение Aug 21 2007, 04:53
Сообщение #17


Профессионал
*****

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



Почему получается 2 прерывания по TXC при передачи 2-х байт не понял. может я не правильно помню и делаю иначе, но с таким не встречался.
На память TXC возникает при пустом буфере и выдачи стопового бита.
На я передачу делал так.
2 байта в буфер;
включить UDRE
по UDRE подкачивать данные
если новых двнных нет, то выключить UDRE и включить TXC
если TXC, то все переданно, переключиться на прием.

и таких вещей
Цитата
как бонус даже межсимвольный интервал непроизвольно получается.
у меня не было


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
Igor26
сообщение Aug 21 2007, 05:19
Сообщение #18


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Цитата
Что вы понимаете под словом "отладчик"?


JTAGICE
Go to the top of the page
 
+Quote Post
WHALE
сообщение Aug 21 2007, 06:10
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



А AVRSTUDIO че не пользуете?Такие вещи там нормально симулируются.


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
fmdost
сообщение Aug 21 2007, 09:44
Сообщение #20


Местный
***

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



Цитата(WHALE @ Aug 21 2007, 10:10) *
А AVRSTUDIO че не пользуете?Такие вещи там нормально симулируются.

А разве там есть окно COM порта? У меня 4,12 с обработкой прерываний там туго.
Go to the top of the page
 
+Quote Post
vesago
сообщение Aug 21 2007, 09:47
Сообщение #21


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Цитата(Т.Достоевский @ Aug 20 2007, 13:47) *
Не совсем понял Ваш код в прерывании. Зачем нужна проверка флага?

Я выложил свои дровишки. Там у меня передача и прем идет через кольцевые буфера. По прерыванию передатчика при загрузке последнего байта в уарт, выставляется флаг окончания передачи. Далее по прерыванию TXC, которое свидетельствует о опустошении сдвигового регистра, при выставленном упомянутом флаге снова разрешается прием данных и переключение драйвера 485. То есть прием будет включен только после полной передачи пакета.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Aug 21 2007, 10:59
Сообщение #22


Йа моск ;)
******

Группа: Модераторы
Сообщений: 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 smile.gif

Вообщем-то все культурно и правильно в камне. Работать в принципе по UDRE и надо, чтобы не было дырок между символами (они только уменьшают общую скорость передачи).


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 21 2007, 11:47
Сообщение #23


кекс
******

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



Цитата(Rst7 @ Aug 21 2007, 13:59) *
Вообщем-то все культурно и правильно в камне. Работать в принципе по UDRE и надо, чтобы не было дырок между символами (они только уменьшают общую скорость передачи).

Они (всмысле межсимвольные интервалы) добавляют стабильности передачи. В Modbus - межсимвольный интервал is a MUST.
А скорость, кому она нужна в 485?

Цитата
Почему получается 2 прерывания по TXC при передачи 2-х байт не понял.

Потому что отправляется два символа. После отправки каждого генерится TXC, если игнорировать UDRE.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Aug 21 2007, 11:59
Сообщение #24


Йа моск ;)
******

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



Цитата(defunct @ Aug 21 2007, 14:47) *
Они (всмысле межсимвольные интервалы) добавляют стабильности передачи.


Обоснуйте?

Цитата
В Modbus - межсимвольный интервал is a MUST.


Межпакетный да, а вот межсимвольный??? Можно цитату?

Цитата
А скорость, кому она нужна в 485?


Ну не скажите... Разные случаи есть..


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
IEC
сообщение Aug 21 2007, 13:42
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



Цитата(Rst7 @ Aug 21 2007, 13:59) *
Работать в принципе по UDRE и надо, чтобы не было дырок между символами (они только уменьшают общую скорость передачи).

Оно то может и так, но привычка с 51 осталась. Там аналога UDRE нет.
Да и немного неудобно. UDRE устанавливается всегда, когда буфер на передачу пуст (срабатывание по состоянию). А если я не хочу передавать, надо прерывание запрещать.
Прерывание ТХС устанавливается по событию, сбросил после передачи последнего байта и свободен до следующей передачи.
Go to the top of the page
 
+Quote Post
Maik-vs
сообщение Aug 21 2007, 13:59
Сообщение #26


Местный
***

Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101



Цитата(Т.Достоевский @ Aug 21 2007, 13:44) *
А разве там есть окно COM порта? У меня 4,12 с обработкой прерываний там туго.

07.gif Чойто туго??! Там можешь руками поднять бит прерывания - и вот оно, появилось. Или маску. Или ещё что, всё работает. Наоборот, оч. хорошо там с прерываниями вручную. Приём только так и отлаживал - включаешь RXC - сразу прерываание, побежал обрабатывать байт... smile.gif
По поводу TXC/UDRE. Пользую их оба, для 485, ага. Чтобы отправить строку байтов, переключаю интерфейс на выход и записываю байт в UDR. Всё! дальше прерывания сами. Тут же байт из UDR проваливается в регистр сдвига и возникает прерывание UDRI. Обработчик смотрит: все байты передал? нет: следующий в UDR; да: ничего. Когда последний байт передан, возникает TXCI. Его обработчик переключает RS485 на приём. Всё.
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 21 2007, 15:48
Сообщение #27


кекс
******

Группа: Свой
Сообщений: 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 не подворачивались.
Go to the top of the page
 
+Quote Post
WHALE
сообщение Aug 21 2007, 17:45
Сообщение #28


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



Цитата(Maik-vs @ Aug 21 2007, 17:59) *
07.gif Чойто туго??! Там можешь руками поднять бит прерывания - и вот оно, появилось. Или маску. Или ещё что, всё работает. Наоборот, оч. хорошо там с прерываниями вручную. Приём только так и отлаживал - включаешь RXC - сразу прерываание, побежал обрабатывать байт... smile.gif

Дык у аффтара проблемы с передачей,значит руками флаги дергать ваще не надо.байт в UDR -и смотри
чего-там с прерываниями.И скачайте версию 4.13,там атымельцы здорово над переферией поработали.


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Aug 21 2007, 20:29
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



А я был очень рад увидеть два флага. Наверное после х51. Да и в 4414 только один байт буферизовался. Иногда для RS232 при высокой скорости и плотности передачи Именно чтобы избежать межбайтовых интервалов очень необходимы оба флага. В идеале конечно можно было бы и байт 16 впихнуть в аппаратный буфер. Но два лучше чем один. Короче использовать или нет - это программисту решать, а вот наличие - это замечательно. Использую 2 флага и в 485 и в 232.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Aug 22 2007, 05:20
Сообщение #30


Йа моск ;)
******

Группа: Модераторы
Сообщений: 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) - как говорится, это ваще wink.gif

Цитата
Таки действительно органичение "снизу" только на межпакетный - "Character gap interval".

На межсимвольный "silent interval" ограничение "сверху":

источник:
http://www.sena.com/download/tutorial/tech_Modbus_v1r0c0.pdf (150k)
cм. секцию 5.2


Посему оптимально будет посылка именно без интервалов.

Цитата
Может быть, но мне что-то такие случаи в сетях 485 не подворачивались.


Ну надо минимизировать время опроса в сети при ограничении битовой скорости. Вот и весь случай.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 16:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01493 секунд с 7
ELECTRONIX ©2004-2016