Tengo una pregunta sobre la selección del canal desde el multiplexor. Estoy tratando de recibir una lectura de la temperatura de los dos sensores que compartían la misma dirección y mientras uso un sensor, puede funcionar perfectamente. Sin embargo, cuando intenté fijar el segundo sensor en el circuito y editar el programa, no funciona. ¿Puede alguien ayudarme?
Aquí está el código cuando comienza a leer:
void readSensor(void) {
int ch;
TWI_init_master();
for (ch=0; ch<2; ch++)
{
TWI_start();
TWI_write_address(0xE0); // set multiplixer
TWI_write_data(0); // disable all ch
TWI_write_data(ch+1); // enable ch-ch+1
TWI_stop();
delay100us(1);
TWI_start();
TWI_write_address(0x14);// writing to sensor
TWI_write_data(0x4C);// asking for data
delay100us(1);
TWI_repeated_start();// restart
TWI_read_address(0x15);// read
if (ch==0)
{
for(i = 0; i < 34; i++) {
TWI_read_data();//geting data
readbuff[i] = recv_data;
}
if(!(D6T_checkPEC(readbuff, 34))) {
writeChar(0x50, USB);
writeChar(0x50, USB);
writeChar(0x50, USB);
}
else
{
for(i = 2; i < 34; i++)
{
temp = readbuff[i];
writeChar(temp, USB);
delay100us(1);
}
}
}
else if (ch==1)
{
for(i = 0; i < 34; i++) {
TWI_read_data();//geting data
readbuff2[i] = recv_data;
}
if(!(D6T_checkPEC(readbuff2, 34))) {
writeChar(0x50, USB);
writeChar(0x50, USB);
writeChar(0x50, USB);
}
else
{
for(i = 2; i < 34; i++)
{
temp = readbuff2[i]; //readbuff 2 is defined for sensor 2, its just another array
writeChar(temp, USB); // Send data to the real term
delay100us(1);
// delay10ms(10);
}
}
}
TWI_stop();
delay100us(10);
// delay10ms(10);
//TWI_repeated_start();// restart
//TWI_stop();
}
//TWI_stop(); }
¡Gracias!