[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Я в данном случае имею ввиду аппаратный USART. Программная реализация USART-а – это баловство и тема отдельной дискуссии. Разумеется в случае коллизии данных во время приема по вине третьей стороны флаг framing error будет взведен, но это прерывания не вызовет. Т.е. по любому (для простоты берем 9600) принимающий узнает о том, что ему пришел (или шел, но не дошел) один байт (не целый пакет, а всего байт) не раньше, чем через ~ 1мс. Кто мешает потенциально принимающему решить, что все тики-так и самому вломиться на шину, по которой ему уже что-то идет? Режим ведь используется ассинхронный и аппаратно приемник и передатчик на микроконтроллере независимы. Приемник и передатчик переключаются только на MAX485-м.
К тому же изначально автор темы вопрошал известен ли кому-нибудь 485-й с аппаратным арбитром (никто о таком, похоже не слыхал) или минимальными программными затратами на такой арбитраж. В данном случае программные затраты минимальные. Поэтому я и счел возможным поделиться опытом. Разумеется способов реализации сетевого обмена по RS485 огромное множество. Автор темы, похоже, уже утратил интерес к дискуссии, вероятно либо что-то сам придумал, либо отчаялся получить удовлетворяющий его ответ. Если есть интерес продолжать обсуждение – давайте е-мэл, поговорим!
E-mail: info@telesys.ru