Tengo un TCS3200 conectado a un arduino UNO. Yo uso el temporizador para calcular el período de la onda de salida. El problema es que la salida de la función tiene demasiada desviación, por ejemplo, en una situación estable sin cambios en la luz, el color o la posición, la salida varis entre 31 y 181 cuentas de reloj. El código es:
//Sensor output
#define TCS_OUT_DDR DDRB
#define TCS_OUT_PORT PINB
#define TCS_OUT_POS PINB1
uint32_t TCSMeasure(){
if (!(TCS_OUT_PORT & (1<<TCS_OUT_POS))) {
while(!(TCS_OUT_PORT & (1<<TCS_OUT_POS)));
}
while((TCS_OUT_PORT & (1<<TCS_OUT_POS)));
TCNT1 = 0x0000;
TCCR1B = (1<<CS10); //no prescale clk/1
while(!(TCS_OUT_PORT & (1<<TCS_OUT_POS)));
TCCR1B = 0x00; //no clock source
return (TCNT1);
}
¿Es el estado normal de TCS3200 o hay un error en mi código?
la hoja de datos TCS3200: enlace