Hallo,
ich habe zwei HYT-271 an einem PIC18F4550. Ein Sensor hat ca. 30cm
Leitungslänge, der Andere ca. 1m Leitung. Als Pullups habe ich jeweils
10K an SDA und SCL.
Den Sensor mit der kurzen Leitung kann ich ansprechen, aber die Werte
sind alles anders als ok. Meistes funktioniert die erste Messung und
liefert Werte zurück. Ab der zweiten Messung gibt der i2c Status einen
Fehler zurück oder die Werte ändern sich nicht mehr.
Den zweiten Sensor bekomme ich gar nicht zum laufen.
Hier ist das Codesnipped, zum Auslesen der Sensordaten.
1 | void GetSensorData(char AddressWrite, char AddressRead)
|
2 | {
|
3 | int status=0;
|
4 | int i=4;
|
5 |
|
6 | i2c_start();
|
7 | status = i2c_write(AddressWrite);
|
8 | if(status != 0)
|
9 | {
|
10 | printf("MR: no sensor found at:%x \n\r", AddressWrite);
|
11 | continue;
|
12 | }
|
13 | else
|
14 | {
|
15 | printf("MR: ok\n\r");
|
16 | }
|
17 | i2c_stop();
|
18 | delay_ms(100);
|
19 | i2c_start();
|
20 | status = i2c_write(AddressRead);
|
21 | if(status != 0)
|
22 | {
|
23 | printf("DF: no sensor found at: %x \n\r", AddressRead);
|
24 | continue;
|
25 | }
|
26 | else
|
27 | {
|
28 | printf("DF: ok\n\r");
|
29 | }
|
30 |
|
31 | for (i=0;i<4;i++)
|
32 | {
|
33 | messageBuf[i] = i2c_read();
|
34 | }
|
35 | i2c_stop();
|
36 | printf("%x # %x # %x # %x \n\r", messageBuf[0], messageBuf[1], messageBuf[2], messageBuf[3]);
|
37 | }
|
als Compiler verwende ich ccs.
Gibt es Erfahrungen mit dem HYT-271?
Was ich bis jetzt gefunden habe, hat mich nicht wirklich weiter
gebracht.