=DeaD= » 25 сен 2006, 00:37
Далее собственно сам интерфейс общения с модулем через i2c:
Типовой формат команды:
NjjTFFLP{nl}, - запросить тип и версию устройства с адресом jj (4 байта - первые два = производитель, затем тип устройства, затем версия);
пример - N01TLP{nl} - Запросить тип устройства с адресом 01;
пример ответа - N01TFFL00P{nl}
NjjTxxyyP{nl}, где xx=20..38 (32+0..24 в 16-чном виде) - установить тип вывода xx в yy (00 - цифровой вход, 01 - цифровой выход, 02 - ШИМ-выход для сервы) для устройства с адресом jj;
пример - N01T2501{nl} - 5-й вывод устройства 01 сделать цифровым выходом (тип=01);
пример ответа - N01T2501{nl}
NjjTxxyyP{nl}, где xx=00..18 (0..24 в 16-чном виде) - установить значение вывода xx в yy для устройства с адресом jj;
пример: N01T0501{nl} - установить 5-й вывод устройства 01 в 1;
пример ответа - N01T0501{nl}
NjjTxxLP{nl}, где xx=80..98 (128+0..24 в 16-чном виде) - считать значение входа xx для устройства с адресом jj;
пример: N01T85LP{nl} - считать 5-й вывод устройства с адресом 01;
пример ответа - N01T85L01P{nl}
NjjTxxLP{nl}, где xx=A0..B8 (160+0..24 в 16-чном виде) - считать тип вывода xx для устройства с адресом jj;
пример: N01T85LP{nl} - считать тип 5-го вывода устройства с адресом 01;
пример ответа - N01T85L01P{nl}
Соответственно базовое устройство должно перехватывать все запросы к себе и не выкидывать их в шину i2c, а просто выполнять "на себе". Для этого считаем, что базовое устройство имеет адрес FF, благо нормальные устройства на шине i2c имеют адреса 00..7F.
Последний раз редактировалось
=DeaD= 25 сен 2006, 19:22, всего редактировалось 2 раз(а).