Två tempgivare men bara en temperatur
Postat: 18 jun 2013, 16:08
Har ett lite lustigt problem. Använder mig av Compact.NET (DalSemi) och experimenterar med ett nyligen inköpt temperaturnät med två sensorer https://www.m.nu/2-sensorer-temperaturl ... -p-35.html med seriell anslutning till min PC (skall senare anslutas till en WinCE burk).
Om man kopplar in en sensor (spelar ingen roll före eller efter splittern) så fungerar allt lysande. Om man kopplar in båda givarna så hittas båda sensorerna men jag får bara värden från den ena sensorn trots att jag använder mig av SelectDevice (med korrekta adresser). Jag kollar också CRC8 så att det inte skall vara något fel i anropet och en test med helt felaktig adress ger också felaktig CRC8. Om jag under drift kopplar bort sensorn som ändå inte verkar ge några värden så ser allt ut precis som vanligt, men om jag istället kopplar bort den som verkar ge värden så får jag kommunikationsfel mot båda adresserna. Det känns som att det bara är en sensor som svarar på MATCH ROM trots att jag definitivt adresserar den andra sensorn.
Hur kan detta komma sig? Vad är fel?
Utdrag ur koden:
if (adapter.SelectDevice(device.DeviceId, 0)) // Select device does reset and 0x55
{
adapter.PutByte(0xBE);
byte[] data = adapter.GetBlock(9);
if (data[8] == (byte)CRC8.Compute(data, 0,
)
{
short t = (short)(data[0] | data[1] <<
;
temp = (float)(t / 16.0);
device.DeviceTemperature = temp;
Debug.WriteLine(device.ToString());
}
else
{
Debug.WriteLine(device.DeviceString + " Wrong checksum");
}
}
Om man kopplar in en sensor (spelar ingen roll före eller efter splittern) så fungerar allt lysande. Om man kopplar in båda givarna så hittas båda sensorerna men jag får bara värden från den ena sensorn trots att jag använder mig av SelectDevice (med korrekta adresser). Jag kollar också CRC8 så att det inte skall vara något fel i anropet och en test med helt felaktig adress ger också felaktig CRC8. Om jag under drift kopplar bort sensorn som ändå inte verkar ge några värden så ser allt ut precis som vanligt, men om jag istället kopplar bort den som verkar ge värden så får jag kommunikationsfel mot båda adresserna. Det känns som att det bara är en sensor som svarar på MATCH ROM trots att jag definitivt adresserar den andra sensorn.
Hur kan detta komma sig? Vad är fel?

Utdrag ur koden:
if (adapter.SelectDevice(device.DeviceId, 0)) // Select device does reset and 0x55
{
adapter.PutByte(0xBE);
byte[] data = adapter.GetBlock(9);
if (data[8] == (byte)CRC8.Compute(data, 0,

{
short t = (short)(data[0] | data[1] <<

temp = (float)(t / 16.0);
device.DeviceTemperature = temp;
Debug.WriteLine(device.ToString());
}
else
{
Debug.WriteLine(device.DeviceString + " Wrong checksum");
}
}