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

|
У MSP нет прерывания по опустошению сдвигового регистра, как у AVR. Каким образом мне поймать момент опустошения сдвигового регистра, чтобы переключить направление передачи? Сделал по таймеру, но в этом случае отправляется лишний байт и как-то не нравится такое решение. Кто может что-то предложить?
|
|
|
|
|
 |
Ответов
|
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, означает отсутствие этой задержки  По закону тов. Мерфи, если есть настройка, то обязательно найдётся пользователь, который настроит неправильно
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Aug 9 2008, 00:46
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(AHTOXA @ Aug 8 2008, 21:44)  Во-первых, эта задержка нужна для протокола, а не для собственно передачи по RS-485. А во-вторых, если эта задержка задаётся протоколом, то зачем её дополнительно настраивать?  Чтобы реализовать протокольную часть связи, нужно иметь возможность реализации на физическом уровне, не так ли? Цитата(AHTOXA @ Aug 8 2008, 21:44)  По закону тов. Мерфи, если есть настройка, то обязательно найдётся пользователь, который настроит неправильно  Закон Мерфи гласит, что если вероятность неприятного события отлична от нуля, то оно обязательно произойдет, причем в самый неподходящий момент  Заложить дополнительную возможность это как соломки себе подстелить. Неоднократно встречались ситуации, когда производитель оборудования был вынужден модифицировать аппартно-программную часть, для реализации возможности подключения его оборудования в уже существующую сеть приборов. Причем доработки были связаны именно с введением дополнительных задержек, реализации поддержки протокола и, например, введения гальванической развязки RS485. Но если вам нравится ходить по чужим и уже известным граблям, то ради Бога!  Шагайте!
|
|
|
|
|
Aug 9 2008, 11:03
|

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

|
Цитата(rezident @ Aug 9 2008, 06:46)  Чтобы реализовать протокольную часть связи, нужно иметь возможность реализации на физическом уровне, не так ли? Ерунда. Протокольные задержки реализуются протоколом, задержки физического уровня - на физическом. Если заложить "настраиваемые задержки" на физическом уровне, то протоколу придётся учитывать ещё и их. Цитата Закон Мерфи гласит, что если вероятность неприятного события отлична от нуля, то оно обязательно произойдет, причем в самый неподходящий момент  Вот именно. Потому каждая лишняя настройка потенциально ведёт к неприятному событию. Цитата Неоднократно встречались ситуации, когда производитель оборудования был вынужден модифицировать аппартно-программную часть, для реализации возможности подключения его оборудования в уже существующую сеть приборов. Причем доработки были связаны именно с введением дополнительных задержек, реализации поддержки протокола и, например, введения гальванической развязки RS485. Предлагаете и гальваноразвязку делать в качестве настраиваемого параметра?  Ещё раз: это — протокольные дела. Подстройка протокола - это нормально. Но вопрос стоял о работе физического уровня. Я так понял, что для него удержание линии по окончании передачи таки не нужно. Цитата Но если вам нравится ходить по чужим и уже известным граблям, то ради Бога!  Шагайте!  Когда кончаются аргументы, начинают пугать граблями и рассказывать о своём богатом опыте, ага. А я-то надеялся, что Вы что-то умное мне поведаете...
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Aug 9 2008, 17:10
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(AHTOXA @ Aug 9 2008, 17:03)  Ерунда. Протокольные задержки реализуются протоколом, задержки физического уровня - на физическом. Если заложить "настраиваемые задержки" на физическом уровне, то протоколу придётся учитывать ещё и их. Конечно, А как же без этого если реализованы поддержки различных протоколов на одном физическом уровне? Кроме того, задержки в любом случае нужно учитывать, т.к. линия связи RS485 может быть удлинена репитерами. А каждый репитер вносит задержку. Цитата(AHTOXA @ Aug 9 2008, 17:03)  Вот именно. Потому каждая лишняя настройка потенциально ведёт к неприятному событию. В руках дурака и рогатка - самострел Цитата(AHTOXA @ Aug 9 2008, 17:03)  Предлагаете и гальваноразвязку делать в качестве настраиваемого параметра?  Не передергивайте! Я писал про доработку устройств, которые должны были быть подключены к уже имеющейся сети из различных приборов. Цитата(AHTOXA @ Aug 9 2008, 17:03)  Ещё раз: это — протокольные дела. Подстройка протокола - это нормально. Но вопрос стоял о работе физического уровня. Я так понял, что для него удержание линии по окончании передачи таки не нужно. Исходя из вероятности возникновения коллизий, чем меньше время удержания, тем меньше вероятность коллизии. С этой точки зрения нет, не нужно. Но для поддержания протокольной части и увеличения надежности связи - весьма полезно. "Растяжку" линии тоже ведь широко используют для этой же цели (увеличение надежности связи), а ее ведь в стандарте EIA/TIA-475-A нет и в обязательном порядке для функционирования RS485 она не нужна. Цитата(AHTOXA @ Aug 9 2008, 17:03)  Когда кончаются аргументы, начинают пугать граблями и рассказывать о своём богатом опыте, ага. Пугать?  Да ни в коем разе.  Всего лишь обмен опытом. Как говорится Sapenti sat.
|
|
|
|
|
Aug 9 2008, 18:31
|

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

|
Цитата(rezident @ Aug 9 2008, 23:10)  Конечно, А как же без этого если реализованы поддержки различных протоколов на одном физическом уровне? Кроме того, задержки в любом случае нужно учитывать, т.к. линия связи RS485 может быть удлинена репитерами. А каждый репитер вносит задержку. Тут скорее всё же нужно подстраивать задержку перед началом передачи, нежели задержку по окончании приёма. Цитата Не передергивайте! Я писал про доработку устройств, которые должны были быть подключены к уже имеющейся сети из различных приборов. Не обижайтесь, я пошутил Цитата Исходя из вероятности возникновения коллизий, чем меньше время удержания, тем меньше вероятность коллизии. С этой точки зрения нет, не нужно. Здесь полный консенсус Цитата Но для поддержания протокольной части и увеличения надежности связи - весьма полезно. "Растяжку" линии тоже ведь широко используют для этой же цели (увеличение надежности связи), а ее ведь в стандарте EIA/TIA-475-A нет и в обязательном порядке для функционирования RS485 она не нужна. А вот здесь я всё же пока не понимаю. Растяжка - понятно. Она держит незанятую линию в определённом состоянии. А какая польза от удержания линии занятой после окончания передачи? Или Вы имеете в виду, что, зная задержку ответа устройства и удерживая линию занятой после запроса почти всё это время, мы уменьшаем таким образом время незанятого (восприимчивого к помехам) состояния линии?
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Aug 9 2008, 19:40
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(AHTOXA @ Aug 10 2008, 00:31)  Тут скорее всё же нужно подстраивать задержку перед началом передачи, нежели задержку по окончании приёма. Дык выше она у меня под №1 шла. А против которой вы возражаете - №2. Цитата(AHTOXA @ Aug 10 2008, 00:31)  А вот здесь я всё же пока не понимаю. Растяжка - понятно. Она держит незанятую линию в определённом состоянии. А какая польза от удержания линии занятой после окончания передачи? Или Вы имеете в виду, что, зная задержку ответа устройства и удерживая линию занятой после запроса почти всё это время, мы уменьшаем таким образом время незанятого (восприимчивого к помехам) состояния линии? А вы рассмотрите линию как со стороны передатчика, так и со стороны приемника. Начальные условия. Растяжки нет, есть только терминальные резисторы. - линия свободна и нагружена только на терминальные резисторы. При наличии помех приемники возможно ловят их как ошибочные символы. - включился драйвер RS485 мастера. Произошел перезаряд линии. Приемники возможно опять словили ошибочный символ. Поэтому здесь для реализации RTUного протокола нужно сделать паузу перед началом передачи, иначе пакет уйдет в никуда. Слейв обязан начать прием только после временнОй паузы определенной величины. - сделали паузу в течение которой линию связи в определенном состоянии удерживает драйвер RS485 мастера. - идет передача пакета. - передача пакета завершена. Если тут же отпустить линию (выключить передатчик мастера), то приемники слейвов имеют шанс словить ошибочный символ. И весь пакет уйдет в помойку.  Но мастер у нас не дурак и держит линию (своим включенным на передачу драйвером) в течение времени, определяемым требованиями RTU-ной протокольной "паузы". - пауза закончилась. Мастер отключил трансмиттер. Все свободны. - ждем ответа от слейва, отбиваясь от помех в линии. Вот примерно такой расклад. Кстати, исходя из этой же концепции слейв тоже должен делать паузу после приема пакета запроса перед отправкой ответа. Для уменьшения вероятности коллизии из-за разбежки формирования временнЫх пауз у него и у мастера. Хотя, эта пауза и необязательна. Коллизия в линии RS485 не так уж и страшна. А для протокольной совместимости слейв тоже сделает задержку перед передачей после включения трансмиттера. Главное чтобы мастер успел отключиться к тому времени.
|
|
|
|
Сообщений в этой теме
AVN MSP & RS485 Aug 7 2008, 05:24 MrYuran Цитата(AVN @ Aug 7 2008, 09:24) Сделал по... Aug 7 2008, 06:00 AVN Решение, похоже, единственное за неимением других ... Aug 7 2008, 06:31  MrYuran Цитата(AVN @ Aug 7 2008, 10:31) трудно си... Aug 7 2008, 06:48 shasik Цитата(MrYuran @ Aug 7 2008, 09:00) Не по... Aug 7 2008, 10:35           AHTOXA Цитата(rezident @ Aug 10 2008, 01:40) Дык... Aug 9 2008, 20:46            rezident Цитата(AHTOXA @ Aug 10 2008, 02:46) Это п... Aug 9 2008, 21:55             AHTOXA Цитата(rezident @ Aug 10 2008, 03:55) Дык... Aug 10 2008, 08:20              rezident Цитата(AHTOXA @ Aug 10 2008, 14:20) Понят... Aug 10 2008, 11:48               AHTOXA Цитата(rezident @ Aug 10 2008, 17:48) Не ... Aug 10 2008, 14:55                shasik 2 AHTOXA & rezident
Помните как все начина... Aug 10 2008, 16:48                rezident Цитата(AHTOXA @ Aug 10 2008, 20:55) То ес... Aug 10 2008, 17:12 vesago В UxTCTL вродеж есть TXEPT. По крайней мере я его ... Aug 7 2008, 11:06 rezident Цитата(vesago @ Aug 7 2008, 17:06) В UxTC... Aug 7 2008, 13:44  shasik Цитата(rezident @ Aug 7 2008, 16:44) TXEP... Aug 7 2008, 16:21   rezident Цитата(shasik @ Aug 7 2008, 22:21) Ну, от... Aug 8 2008, 01:38 landrey Можно сделать следующий финт ушами:
На время пере... Aug 10 2008, 17:55 shreck Цитата(landrey @ Aug 11 2008, 01:55) Можн... Sep 23 2008, 12:11  Dog Pawlowa Цитата(shreck @ Sep 23 2008, 15:11) Кто-н... Sep 23 2008, 12:42 AHTOXA Цитата(shasik @ Aug 10 2008, 22:48) 2 AHT... Aug 10 2008, 18:26
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|