Перейти к содержанию
    

Организация сетевого обмена на AT90S8515

Огласите пжалста, весь список!

То есть, задание поподробней.

Что за сеть, кому, куда, между чем.

Может, достаточно режима master-slave?

тогда Modbus с одним ведущим. Все проблемы коллизий и им подобные отпадают на раз, т.к. без спросу никто ничего не пискнет.

Если произвольный доступ - тогда нужно прослушивать линию и анализировать коллизии. Ваши BUSY - это изврат. Плюсов никаких, минус - как минимум лишняя линия.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 Dog Pawlowa - с его проводом занятости просто надо чтоб дЫвайсы рандомное кол-во времени ждали(на таймер чтоли какой нить повесить или чтото такого), но это дополнительные провода , своя логика, есчё какие либо качели непредвиденные...

Так то-то и оно. Если по коллизии запускать случайный таймер, то на зачем тогда специальный сигнал?

Уж проще тогда маркером делить время.

Короче, не изучено все, что накопило человечество. Даже книжки не прочитаны.

Но как 1/4 доцента думаю - а может и лучше предложить что-то ошибочное, чем скачать стандартное :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Упс - два раза вставилось..

Изменено пользователем Qwertty

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Просто мысль - для курсовика экономика не важна, можно тупо применить CAN. Полностью "ложится" под задание и избавляет от всех проблем разом. Арбитраж, горячее подключение и т.д получатся автоматом. Хотя MCP2515 не такая уж и дорогая. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Послушайте.

Тысячи людей, поумнее чем Вы и я, во всем мире, лет сорок уже, работали над созданием локальных сетей. И кое-что придумали.

Например CAN, где проблеммы мультимастерности решены способом очень похожим на то, что предложил 'nelord'.

 

2 'nelord'. Если вам эта тема действительно интересна. В смысле не как курсач сдать, а как хобби что-ли, то рекомендую сделать следующее: использовать вместо приёмопередатчиков RS485 приёмопередатчики CAN (или LIN). У них есть рецессивный и доминантный уровень, и если 100 передатчиков передают рецессивный (1), а один доминантный уровень (0) на линии будет доминантный уровень (0). И если передатчик будет слушать свою передачу, то он сможет распознать коллизию (в отличие от использования приёмопередатчиков RS485). В это случае линия BUSY не будет нужна.

А вообще почитайте и про CAN и про LIN. Я сделал мультимастерную сеть на базе USART с приёмопередатчиками CAN - всё замечательно работало. По крайней мере гораздо эффективнее MODBAS. Единственный недостаток - нестандартность.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 nelord - зачем вам заново изобретать велосипед ?

 

Хотел как проще, а получилось ли... не знаю.

Да, при возникновении коллизий аля Ethernet - думал, что их CRC16 отловит.

 

2 nelord - зачем вам заново изобретать велосипед ?

 

Хотел как проще, а получилось ли... не знаю.

Да, при возникновении коллизий аля Ethernet - думал, что их CRC16 отловит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Например CAN, где проблеммы мультимастерности решены способом очень похожим на то, что предложил 'nelord'.

Нисколько непохожи. В CAN нет никаких доп линий "занятности" канала. Конфликт разрешается "отвалом" группы мастеров-лузеров с рецессивным уровнем сигнала. Т.о. возможна ситуация когда опеределенный мастер вообще никогда не получит шанса "пообщаться".

Идея CAN'a - это I2C с PHY пригодным для подключения на большие расстояния.

 

nelord предлагает некое подобие CSMA-CD, за тем исключением, что CSMA-CD обходится без доп линий, а использует прослушку и преамбулу для выявления конфликта, плюс случайный таймаут. Его доп. линия - это потеря надежности ровно на 50%. Заглюч какое-то из устройств или оборвись эта линия - и вся система сдохла.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 nelord - зачем вам заново изобретать велосипед ?

 

Хотел как проще, а получилось ли... не знаю.

Да, при возникновении коллизий аля Ethernet - думал, что их CRC16 отловит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хотел как проще, а получилось ли... не знаю.

Да, при возникновении коллизий аля Ethernet - думал, что их CRC16 отловит.

Отловит, но уже поздно - несколько фреймов может быть потеряно и нескольким девайсам надо делать перепосылку, тобиш "разрулить" ситуацию по CRC16 - сложно и накладно для линии.

 

В Ethernet'е используется преамбула фрейма скважностью 2.

В момент посылки преамбулы прослушивается линия, и если скважность импульсов в линии будет отличаться от 2 - посылка фрейма откладывается, т.е. конфликт обнаруживается до отправки фрейма, а не после как в случае с CRC.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо большое за помощь. С этим я разобрался, но на досуге надо будет почитать про Can и подобное ему.

PS: Описанное ранее я попытался сконструировать основываясь на методах борьбы с перегрузкой буферов портов в коммутаторах и технологией CSMA/CA.

 

PPS: был бы крайне признателен, если бы кто-нибудь поделился материалом по подключению цифро-алфавитного LCD индикатора, а именно программой на ассемблере. Понимаю, что это не пишут на ассемблере, на С уже есть все готовое, однако в задании именно АССЕМБЛЕР.

 

2 defunct, спасибо, это я полагал тоже учесть, если посмотреть ранний пост.

 

Полагаю использовать преамбулу в 2 байта + 2 байта, определяющие тип передачи, +данные+ 2 байта CRC16.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо большое за помощь. С этим я разобрался, но на досуге надо будет почитать про Can и подобное ему.

Кстати, использование драйверов CAN, предложенное galjoen (конечно же :a14: ), действительно имеет смысл и при построении сети на USART - получается правильнее по уровням физических сигналов в линии. Драйверы RS485 действительно могут неоднозначно отрабатывать коллизии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нисколько непохожи. В CAN нет никаких доп линий "занятности" канала. Конфликт разрешается "отвалом" группы мастеров-лузеров с рецессивным уровнем сигнала. Т.о. возможна ситуация когда опеределенный мастер вообще никогда не получит шанса "пообщаться".

Идея CAN'a - это I2C с PHY пригодным для подключения на большие расстояния.

Я имел ввиду, что похоже не по физической реализации, а по методологии. Конечно в CAN нет никакой доп. линии, но имеется РАВНОПРАВНАЯ мультимастерность (в отличие от I2C с его адресами устройств). А ситуация, когда мастер не сможет пообщатся в CAN невозможна (при физической исправности). Возможна только ситуация, когда определённый мастер не сможет никогда отправить сообщение с НИЗКИМ приоритетом. Но никто не мешает ему в случае таймаута этот приоритет поднять - сеть-то совершенно равноправная.

 

2 'Dog Pawlowa'. Вообще то это я предложил 'nelord' использовать драйвера CAN. Примерно год назад это обсуждали. Это первая моя тема на этом форуме была.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 'Dog Pawlowa'. Вообще то это я предложил 'nelord' использовать драйвера CAN. Примерно год назад это обсуждали. Это первая моя тема на этом форуме была.

Да-да, простите. :05:

Идея хорошая и скрашивающая натянутость использования USART в данном случае. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вообще почитайте и про CAN и про LIN. Я сделал мультимастерную сеть на базе USART с приёмопередатчиками CAN - всё замечательно работало. По крайней мере гораздо эффективнее MODBAS. Единственный недостаток - нестандартность.

То-же задумывался. А какая дальность прогнозировалась и какая получилась?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...