Страница 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
... если уарт то шина двунаправленная... и когда МК что-то посылает, просто обработайте комманду и отреагируйте как надо...
и канал у вас не загржуен... если вы конечно не используете два МК на один ком порт... а вот если юзаете два мк на один порт, то ведущий будет у вас комп, он и будет посылать по очереди запросы МК, о готовности их что-то отправить, если очень срочно ну просто очень срочно, то пускай МК посылает свой адрес, а потом комманду, при чём подумайте о коллизии, вообще почитайте спецификацию юсб, там ведущий только один, он посылает с каким-то интервалом запросы. это очень разумно и достаточно просто организовать.