0

我正在尝试使用 PIC16 通过 I2C 读取 TCS34725 颜色传感器的值。目前,我不断地轮询 TCS 上的清除寄存器。但是,每 10 次左右读取清除寄存器中的值,读数就会随机下降。例如,一组连续读数可能是 [17, 17, 17, 17, 17, 17, 17, 17, 14, 15, 16, 17 ...],重复。

我曾尝试在同样的情况下与 Arduino Uno 连接,并获得一致的 17 读数。

我想消除读数的下降。

我在 XC8 中用于读取 TCS 的代码如下

void read_colorsensor(void){
unsigned char color_low[4];
unsigned char color_high[4];
int i;
I2C_Master_Start();
I2C_Master_Write(0b01010010);   //7bit address 0x29 + Write
I2C_Master_Write(0b10110100);   //Write to cmdreg + access&increment clear low reg
I2C_Master_Stop();

I2C_Master_Start();     //Repeated start command for combined I2C
I2C_Master_Write(0b01010011);   //7bit address 0x29 + Read
color_low[0] = I2C_Master_Read(1);
color_high[0] = I2C_Master_Read(0);
I2C_Master_Stop();
color[0] = (color_high[0] << 8)|(color_low[0]);
return;
}
4

0 回答 0