1 | // tab = 3
|
2 |
|
3 | uint8_t i = 10;
|
4 |
|
5 | while(1)
|
6 | {
|
7 | buffer[0] = HYT221_ADR; // Adresse für TWI-Write
|
8 | TWI_MA_Start_Transceiver_With_Data(buffer, 1);
|
9 |
|
10 | if (!(TWI_LastTransOK())) // Prüfen, ob Slave ein ACK gesendet hat
|
11 | {
|
12 | puts_p(PSTR("TWI-Write-Error"));
|
13 | put_c(13);
|
14 | return(0);
|
15 | }
|
16 |
|
17 | delay_10ms(10); // Wartezeit 100ms (50ms reicht nicht aus)
|
18 |
|
19 | buffer[0]++; // Adresse für TWI-Read incrementieren
|
20 | TWI_MA_Start_Transceiver_With_Data(buffer, 5); // Daten via TWI einlesen
|
21 | TWI_MA_Get_Data_From_Transceiver(buffer, 5); // Daten abholen
|
22 |
|
23 | if (!(TWI_LastTransOK())) // dieser Test kann auch entfallen
|
24 | {
|
25 | puts_p(PSTR("TWI-Read-Error"));
|
26 | put_c(13);
|
27 | return;
|
28 | }
|
29 |
|
30 | if (buffer[1] & 0b11000000) // Bit.7/6 des ersten Datenbytes testen,
|
31 | { // wenn gesetzt, dann ist der Sensor noch busy
|
32 | i--;
|
33 | put_c('+');
|
34 | put_c(' '); // wenn diese Ausgabe erfolgt, dann war die Wartezeit zu kurz !
|
35 | }
|
36 |
|
37 | else // wenn Bit.7/6 nicht gesetzt sind
|
38 | {
|
39 | break; // die Schleife while(1) beenden
|
40 | }
|
41 |
|
42 | if (!(i)) // wenn i-Versuche erfolglos waren,
|
43 | { // dann beenden
|
44 |
|
45 | puts_p(PSTR("Modul busy"));
|
46 | put_c(13);
|
47 | return(0); // Abbrechen, 0 Byte wurden geschrieben
|
48 | }
|
49 | }
|