Цитата:
У тебя же, как понимаю, как таковой программы из команд в памяти нет (пока нет?), а сами команды будут поступать извне, от стационарного компа?
Это у меня оставлено для центрального контроллера. Там будет и очередь команд, и раскладка заданий от компа на команды нижнего уровня, и трансляция команд нижнего уровня контроллерам напрямую. За неимением центрального, мне приходится использовать пока вместо него ходовой, подавая ему команды нижнего уровня непосредственно с виртуального пульта в компе, который создавался в основном как раз для отладочных целей. Естественно, мне пока нет смысла перегружать ходовой контроллер ненужными в дальнейшем ему функциями, а нужные ему команды он получает пока через USART с радиоканала, потом будет по I2C, SPI, или RS485 получать их же от центрального, практически без переделки. Просто модуль связи в программе изменится. Правда, может, на первое время к нему башню подцеплю, по SPI, пока центральный не появится. Другой вариант - отлаживать контроллер поворотной платформы (башни) автономно, через свой собственный RS232, через шнурок или по тому же радиоканалу (команды разных контроллеров перекрываться не будут, 255 команд на все хватит).
Когда же будет готов центральный контроллер, там будет несколько вариантов:
1. Прямая трансляция команд нижнего уровня подчиненным контроллерам.
2. Получение заданий более высокого уровня для самостоятельного исполнения. Некоторые я уже упоминал выше - сканирование дальномерами, уточнение обьездом, и построение карты помещения, перемещение в заданную точку с использованием построенной карты помещений, взятие помещения под охрану, функции будильника и напоминалки, пылесоса, и т.д.
3. Телеуправляемый вездеход. С более совершенного пульта, с экраном обзора камеры, двумя джойстиками, или рулем с педалями, будет управляться в реальном времени с выдачей полной телеметрии по всем параметрам. Со временем возможно использование навешиваемых манипуляторов.
4. Автономное выполнение фоновых задач (дежурный режим), периодический заезд в док для зарядки аккумуляторов. При этом может убегать, чтобы не наступили, и пищать или материться в случае угрозы для него. А так же вести логи событий (отслеживать посторонние шумы, источники света, движущиеся обьекты, колебания температуры и прочее).
Вот примерно такой расклад. Пока топчусь на нижнем уровне. Думаю над башней, попутно вылизываю то, что есть. Например, сегодня переписал обмен ходового контроллера с бамперами с самопального последовательного протокола на стандартный Паскалевский SPI. Завтра распаяю шнурок для SPI и проверю, если не лень будет. Будет все нормально - возможно, весь межконтроллерный обмен переведу на SPI. Проводов будет больше, зато скорость выше, чем I2C, а устройств у меня не так много будет. Что - то не нравятся мне на I2C заморочки с ведомым. Вроде все аппаратно поддержано, а все равно надо контролировать каждый шаг. Ну его. Проще по SPI отдельной линией выбрать нужное устройство, сбросить ему в буфер что нужно, или считать из него, ведомый же будет отвлекаться только по прерыванию после каждого байта. Это мне больше нравится, да и скорость выше. Думаю между ведущим и ведомым устройствами кинуть по 2 линии (кроме стандартных SDO, SDI, SCK): 1 - аналог /SS, другая - готовность ведомого, она же - запрос от него на обслуживание, если надо. Всего получится по 5 проводов у каждого ведомого, из них 3 - (SDO, SDI, SCK) - общие для всех. Скорость 1 Мбит (максимум 4 при 16мгц, но, думаю, 1 за глаза). Для пересылки 2 байт со всеми дополнительными наворотами, задержками и проверками, думаю микросекунд 30-40 за глаза. Обкатаю завтра такой вариант на бамперах, а там видно будет.