Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Требуется просканировать шину I2C на предмет наличия девайсов. Как лучше сделать?
Отправлено
Dikoy 23 июля 2008 г. 10:35
AT90USB1287, использую аппаратный I2C.
Думаю так:
Послать условие старт, потом очередной адрес (последовательно от 1 до 127), проверить ответ:
#define MTX_ADR_ACK 0x18 //SLA+W has been tramsmitted
//and ACK received
#define MRX_ADR_ACK 0x40 //SLA+R has been tramsmitted
//and ACK received
if(((TWSR&0xF8) != MTX_ADR_ACK)&&((TWSR&0xF8) != MRX_ADR_ACK)) {} //If NACK received..
И независимо от результата условие стоп.
Если ответ был принят, запоминаю текущий адрес.
Как думаете, достаточно этого или надо ещё чего выдумывать?
Составить ответ | Вернуться на конференцию
Ответы