wmakc 0 12 января, 2011 Опубликовано 12 января, 2011 · Жалоба Кто-нибудь пробовал подключать такой датчик или какой-нибудь аналогичный? Не могу разобраться почему не отзывается по i2c. Может у него и контроллера интерфейсы отличаются? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
etoja 0 13 января, 2011 Опубликовано 13 января, 2011 · Жалоба Обратите внимание, что у APDS-9300 максимальное напряжение питания 3.0v , а у at91sam9 3.0v - это минимальное напряжение питания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wmakc 0 13 января, 2011 Опубликовано 13 января, 2011 · Жалоба Обратите внимание, что у APDS-9300 максимальное напряжение питания 3.0v , а у at91sam9 3.0v - это минимальное напряжение питания. напряжение на датчик подается 2,5v. Непонятно почему он не реагирует на команды записи. а при чтении выдает неправильные данные Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
etoja 0 14 января, 2011 Опубликовано 14 января, 2011 · Жалоба Осциллографом проверьте частоту клока I2C. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wmakc 0 14 января, 2011 Опубликовано 14 января, 2011 · Жалоба частота нормальная. другие устройства по twi работают, а этот датчик никак не хочет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wmakc 0 31 января, 2011 Опубликовано 31 января, 2011 (изменено) · Жалоба Немного разобрался с датчиком и набросал программу, включает ИК - подсветку, при низкой освещенности // Датчик освещенности #define DATCHIK_ADRESS (0x49) // Адрес датчика int Osveshennost(unsigned char ADC0) { int VklIK = 0; unsigned char *Control, *Timing, *ID, *ADC; // Значения регистров датчика TWID_Write(&twid, DATCHIK_ADRESS, 0x80, 1, 0x02, 1, 0); // Включение датчика !!! Почему-то включается не по 0x3, а по 0x2. do { /* // Управляем временем интегрирования TWID_Write(&twid, DATCHIK_ADRESS, 0x81, 1, 0x0B, 1, 0); mdelay(200); TWID_Write(&twid, DATCHIK_ADRESS, 0x81, 1, 0x03, 1, 0); */ TWID_Read(&twid, DATCHIK_ADRESS, 0xAC, 1, ADC, 2, 0); //Считываем значения ADC }while(ADC[0]==0x00); //Пока датчик не начнет присылать значения int i = 0; for(i=0; i<96; i++) //считываем нужное количество значений с датчика { TWID_Read(&twid, DATCHIK_ADRESS, 0xAC, 1, ADC, 2, 0); // USART_Write(AT91C_BASE_US0, ADC[0], 0); // USART_Write(AT91C_BASE_US0, ADC[1], 0); } if(ADC[1]==0x00) { if(ADC[0]<ADC0) { VklIK = 1; //Включаем ИК-прожектор если низкая освещенность } } //Выключаем датчик TWID_Write(&twid, DATCHIK_ADRESS, 0x80, 1, 0x00, 1, 0); //Записываем 0x00 для выключения return VklIK; } Изменено 31 января, 2011 пользователем wmakc Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться