Страница 1 из 1

UART, Два ведуших

Добавлено: Пт июл 25, 2008 10:24:39
Voodoo-Cat
Подскажите пожалуйста как организовать двухсторонний обмен между МК и ПК, но так что-бы команды возвращали значения.
Что-бы не было накладок с занятым каналом.

Может передавать друг-другу флаги ведущих?
Или какая-то хитрая система буферов, с номерами команды, что бы знать на какое сообщение ответили

Добавлено: Пт июл 25, 2008 10:56:02
WildCat
Может передавать друг-другу флаги ведущих?
это типа менять раба и госпожу туда сюда местами каждый раз? не, ну я вот так делал, тока не с МК, и скажу что так - никакого удовольствия :)))
А серьезно - может можно обойтись и без двух ведущих устройств? какая цель системы вообще? может можно просто возложить на ведомое устройство доп обязанность в виде отправки какого-нибудь агрумента?

Добавлено: Пт июл 25, 2008 11:19:50
Voodoo-Cat
Компьютер должен получать инфу от датчиков и других МК на 1-wire шине.
но и в МК иногда возникают события, на которые должен отреагировать компьютер.
Можно компьютер сделать ведущим, но тогда ему придется проверять постоянно куча переменных в памяти МК.

Добавлено: Пт июл 25, 2008 13:47:37
KT315B
А что за МК? Насколько мне известно - у PIC'ов есть "адресуемый" UART, может стоит копнуть в эту сторону?

Добавлено: Пт июл 25, 2008 13:52:35
Voodoo-Cat
ATmega16

Добавлено: Пт июл 25, 2008 21:17:03
Voodoo-Cat
Ладно, попробую с флагами ( или по свободности канала).
я думал, есть какие-то общие принципы :?

Добавлено: Пт июл 25, 2008 21:43:41
Аксель
...была старинная реализация сети на компортах под ДОС. :))) :))) :)))

Принцип такой, несколько компов объединялись задействуя толко один COM-порт на один компьютер, а именно (прономерованы компьютеры): 1-й TX --> 2-й RX, 2-й TX --> 3-й RX, 3-й TX --> 1-й RX.

...Может 1-Wire устройства оставить этим нескольким МК для датчиков, а обмен с компом организовать таким хитрым способом.

Добавлено: Пт июл 25, 2008 21:50:13
Voodoo-Cat
с 1-wire вопросов(пока) нет, Микроконтроллер - ведущий.

проблема обмена Микроконтроллер и Компьютера, они должны быть по очереди ведущими, но загружать каналы постоянным перебрасываниями флага ведущего не хотелось бы.

Добавлено: Сб июл 26, 2008 01:03:58
Kotische
Voodoo-Cat
В 1-wire есть команда "ALARM SEARCH [ECh]"
компьютер периодически посылает эту команду, а устройство заинтересованное в обслуживаниее на неё отзывается.
В случае появления на шине устройства запрашивающего обслуживание компьютер должен просканировать шину найти это устройство и его опросить.
Это по стандарту.
Абсолютно аналогично работают USB и PCI-E когда устройстру нужно послать контроллеру прерывание.

Добавлено: Вс июл 27, 2008 00:16:17
Mozart
... если уарт то шина двунаправленная... и когда МК что-то посылает, просто обработайте комманду и отреагируйте как надо...
и канал у вас не загржуен... если вы конечно не используете два МК на один ком порт... а вот если юзаете два мк на один порт, то ведущий будет у вас комп, он и будет посылать по очереди запросы МК, о готовности их что-то отправить, если очень срочно ну просто очень срочно, то пускай МК посылает свой адрес, а потом комманду, при чём подумайте о коллизии, вообще почитайте спецификацию юсб, там ведущий только один, он посылает с каким-то интервалом запросы. это очень разумно и достаточно просто организовать.