我正在尝试使用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;
}