Вот есть система: главный относительно шустрый контроллер и много интелектуальных модулей на основе контроллеров попроще, это как бы в принципе. На практике в роли главного выступает dsPIC30F6014A у которого из аппаратных модулей два UART, два SPI и один I2C. На юарты повешены, как наиболее важные, радиоканал и драйвер двигателей. И вот дальше начинается главная проблема - связь с остальными датчиками. На практике есть например модуль сонара со своим контроллером, который рулит сервой и измеряет растояния и желательно должен отсылать их на главный мозг(с юартом просто - измерил, отослал, мастер за пару команд сложил в буфер и все щасливы), но юарты то закончились(((
Напрашивается решение в лоб, вешать его слейвом и производить измерения по команде с мастера. Но пока повернёшь серву, пока этот ультразвук назад вернётся - это уйма времени. Значит на мастере надо брать таймер, подбирать время ожидания на вторичный запрос для получения данных. Т.е. коекак работать будет но это с одним модулем, а хочется красивого решения для подключения реалистично большого количества модулей и чтоб система при этом работала.
Может я туплю и есть какой-то более рациональный алгоритм общения мастера со слейвами?