Подскажите пожалуйста как организовать двухсторонний обмен между МК и ПК, но так что-бы команды возвращали значения.
Что-бы не было накладок с занятым каналом.
Может передавать друг-другу флаги ведущих?
Или какая-то хитрая система буферов, с номерами команды, что бы знать на какое сообщение ответили
это типа менять раба и госпожу туда сюда местами каждый раз? не, ну я вот так делал, тока не с МК, и скажу что так - никакого удовольствия
А серьезно - может можно обойтись и без двух ведущих устройств? какая цель системы вообще? может можно просто возложить на ведомое устройство доп обязанность в виде отправки какого-нибудь агрумента?
Компьютер должен получать инфу от датчиков и других МК на 1-wire шине.
но и в МК иногда возникают события, на которые должен отреагировать компьютер.
Можно компьютер сделать ведущим, но тогда ему придется проверять постоянно куча переменных в памяти МК.
...была старинная реализация сети на компортах под ДОС.
Принцип такой, несколько компов объединялись задействуя толко один COM-порт на один компьютер, а именно (прономерованы компьютеры): 1-й TX --> 2-й RX, 2-й TX --> 3-й RX, 3-й TX --> 1-й RX.
...Может 1-Wire устройства оставить этим нескольким МК для датчиков, а обмен с компом организовать таким хитрым способом.
с 1-wire вопросов(пока) нет, Микроконтроллер - ведущий.
проблема обмена Микроконтроллер и Компьютера, они должны быть по очереди ведущими, но загружать каналы постоянным перебрасываниями флага ведущего не хотелось бы.
Voodoo-Cat
В 1-wire есть команда "ALARM SEARCH [ECh]"
компьютер периодически посылает эту команду, а устройство заинтересованное в обслуживаниее на неё отзывается.
В случае появления на шине устройства запрашивающего обслуживание компьютер должен просканировать шину найти это устройство и его опросить.
Это по стандарту.
Абсолютно аналогично работают USB и PCI-E когда устройстру нужно послать контроллеру прерывание.
... если уарт то шина двунаправленная... и когда МК что-то посылает, просто обработайте комманду и отреагируйте как надо...
и канал у вас не загржуен... если вы конечно не используете два МК на один ком порт... а вот если юзаете два мк на один порт, то ведущий будет у вас комп, он и будет посылать по очереди запросы МК, о готовности их что-то отправить, если очень срочно ну просто очень срочно, то пускай МК посылает свой адрес, а потом комманду, при чём подумайте о коллизии, вообще почитайте спецификацию юсб, там ведущий только один, он посылает с каким-то интервалом запросы. это очень разумно и достаточно просто организовать.
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!