|
MSP & RS485 |
|
|
|
Aug 7 2008, 05:24
|
Группа: Участник
Сообщений: 12
Регистрация: 21-03-05
Пользователь №: 3 556

|
У MSP нет прерывания по опустошению сдвигового регистра, как у AVR. Каким образом мне поймать момент опустошения сдвигового регистра, чтобы переключить направление передачи? Сделал по таймеру, но в этом случае отправляется лишний байт и как-то не нравится такое решение. Кто может что-то предложить?
|
|
|
|
|
Aug 7 2008, 06:31
|
Группа: Участник
Сообщений: 12
Регистрация: 21-03-05
Пользователь №: 3 556

|
Решение, похоже, единственное за неимением других способов, а лишний байт появляется из-за того. что трудно синхронизовать интервал таймера с длиной байта. Почему-то проскакивает стартовый бит. Или теряется предыдущий байт. Парился долго, но без этих накладок не удалось сделать. Правда, это несущественно для моей задачи. Наверное, так и оставлю.
|
|
|
|
|
Aug 7 2008, 06:48
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(AVN @ Aug 7 2008, 10:31)  трудно синхронизовать интервал таймера с длиной байта. Непонятно. Даже на скорости 115200 длительность битового интервала около 10мкс, (несколько десятков тактов). Задержку можно взять с запасом. Цитата Почему-то проскакивает стартовый бит. Или теряется предыдущий байт. Значит, слишком рано переключаетесь. Или лишнего в буфер кидаете. Если буфер пустой, никакой передачи (и соответственно стартовых битов) быть не должно.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Aug 7 2008, 10:35
|

Местный
  
Группа: Свой
Сообщений: 319
Регистрация: 3-09-05
Из: Беларусь, Новополоцк
Пользователь №: 8 188

|
Цитата(MrYuran @ Aug 7 2008, 09:00)  Не понял: откуда берётся лишний байт? Прерывание есть по опустошению передающего буфера, от него можно отсчитать таймером длину байта и переключать. Вполне нормальное решение. TXBUF пустой, срабатывает прерывание, что готов к передаче следующего, а сдвигающий регистр еще молотит и UART еще продолжает передавать (TXEMP еще не выставлен). Поэтому если отсчитать интервал в длину байта с момента опустошения TXBUF, то можно потерять "кусочек" байта. Может в этом затык? Если не угадал, то приведите свой код, а то не все умеють гадать по звездам.
|
|
|
|
|
Aug 7 2008, 16:21
|

Местный
  
Группа: Свой
Сообщений: 319
Регистрация: 3-09-05
Из: Беларусь, Новополоцк
Пользователь №: 8 188

|
Цитата(rezident @ Aug 7 2008, 16:44)  TXEPT тоже не подходит. Ну, отчего же?.. Я просто предположил, что аффтор путает момент возникновения прерывания передатчика с реальным моментом окончания передачи, отсюда и нестыковки во времени. А TXEPT может помочь в расчете момента, когда можно переключать направление. Прерывание передатчика тоже может помочь, главное не путать их местами. Другое дело в ту ли сторону мы копаем. Пусть аффтор, уточнит.
|
|
|
|
|
Aug 8 2008, 14:12
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(AHTOXA @ Aug 8 2008, 15:05)  Для их подавления служит задержка перед началом передачи. А смысла в задержке по окончании передачи я не вижу никакого. Для RTU-ных протоколов связи, в которых конец пакета отслеживается по паузе тишины, смысл в формировании этой паузы удержанием драйвера в режиме передачи имеется. К тому же я написал - настраиваемая задержка. Параметр, имеющий величину - 0, означает отсутствие этой задержки
|
|
|
|
|
Aug 8 2008, 15:44
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(rezident @ Aug 8 2008, 20:12)  Для RTU-ных протоколов связи, в которых конец пакета отслеживается по паузе тишины, смысл в формировании этой паузы удержанием драйвера в режиме передачи имеется. Во-первых, эта задержка нужна для протокола, а не для собственно передачи по RS-485. А во-вторых, если эта задержка задаётся протоколом, то зачем её дополнительно настраивать?  Цитата К тому же я написал - настраиваемая задержка. Параметр, имеющий величину - 0, означает отсутствие этой задержки  По закону тов. Мерфи, если есть настройка, то обязательно найдётся пользователь, который настроит неправильно
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|