Hej.
Jag har ett problem med en av mina 1-wire busmastrar. Efter en tids drift (vecka, månad, oftast flera månader) tappar owserver (även tidigare owfs) kontakten med själva DS2482 chippet över I2C bussen. Jag kör hemmabyggd version av OWFS (3.1p1).
Ibland återkommer busmastern av sig själv på I2C, ibland inte.
Problemet har funnits sedan starten för ungefär tre år sedan.
Aug 4 11:12:01 rpi1 OWFS[2817]: DEFAULT: ow_reconnect.c:(72) DS2482-100 bus master reconnected
Aug 5 10:20:03 rpi1 OWFS[2817]: DEFAULT: ow_reconnect.c:(70) Failed to reconnect DS2482-100 bus master!
Aug 5 13:14:00 rpi1 OWFS[2817]: DEFAULT: ow_reconnect.c:(70) Failed to reconnect DS2482-100 bus master!
Aug 5 13:14:00 rpi1 OWFS[2817]: DEFAULT: ow_reconnect.c:(72) DS2482-100 bus master reconnected
Aug 5 14:00:00 rpi1 OWFS[2817]: DEFAULT: ow_reconnect.c:(70) Failed to reconnect DS2482-100 bus master!
...
Aug 6 16:44:01 rpi1 OWFS[2817]: DEFAULT: ow_reconnect.c:(72) DS2482-100 bus master reconnected
Aug 7 18:08:03 rpi1 OWFS[2817]: DEFAULT: ow_reconnect.c:(70) Failed to reconnect DS2482-100 bus master!
...
Aug 7 18:16:02 rpi1 OWFS[2817]: DEFAULT: ow_reconnect.c:(72) DS2482-100 bus master reconnected
Aug 7 18:55:00 rpi1 OWFS[2817]: DEFAULT: ow_reconnect.c:(70) Failed to reconnect DS2482-100 bus master!
...
Under normala förhållanden ser I2C bussen ut så här:
pi@rpi1 /var/log $ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- 1b -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- UU 69 6a 6b -- -- -- --
70: -- -- -- -- -- -- -- --
Enheten "1b" (1-wire enheten) försvinner när problemet uppstår - de övriga kvarstår (UPiS, RTC, etc.).
När 1-wire mastern fallit ifrån I2C bussen räcker det ibland, men oftast inte att göra en "shutdown -r" på Raspberryn.
Det jag funnit fungera bäst och ge längst körtid är:
1) Shutdown + power off
2) Demontera 1-wire busmastern från I2C bussen (därunder sitter en UPiS med extra header för min 1-wire innan själva Raspberryn i botten)
3) Koppla loss 1-wire buskabeln
4) Vänta några sekunder
5) Sätt ihop allt och slå på strömmen igen
På den max 40 meter långa bussen sitter fem tempgivare, en pulsräknare och en EDS0068 multigivare. Allt hyffast men inte perfekt draget i "busformation" med RJ12 kontakter, Y-klykor och relativt korta (<0.5m) avstickare samt med 75% EKKX och 25% CAT5e Ethernet-kabel.
Att demontering/återmontering hjälper bäst tycker jag lutar åt någon form av statisk uppladdning/spänningspotential som långsamt ökar tills dess att DS2482 slutar att fungera, eller att DS2482 inte nås över I2C; frågan är om störningen kommer från 1-wire nätet?
Jag har även en andra busmaster på en annan Raspberry där konfigurationen är ungefär lika, men bussen går delvis utomhus (vindgivare, utomhustemp, etc.). Den bussen går helt utan problem.
Tar varmt emot tips för att få bukt med problemet!
1. Terminera 1-wire eller I2C bussarna? Hur?
2. Montera någon konding / resistor mot jord parallellt med någon av för att "avstöra" 1-wire? Men vilka värden och var (i början, mitten eller i slutet på bussen)?
3. Byta busmaster?
4. ???