On Mon, 5 Oct 2015 02:54:55 +0200, Jan Kandziora <j...@gmx.de> wrote:
---
That may be the culprit.

These errata initially only applied to the B7 die. But the C2 die has
another bug, it sometimes doesn't load the factory calibration values
from EEPROM on POR, resulting in wrong temperature readout.
---

I found your link and the Maxim note. Looks like my Trim values match the 
proper pattern:

"28.D64788000000/errata": 
> 48077
ans = 0b1011101111001101
TRIM2 0b10111011
TRIM1         0bXXXXX101
           or 0bXXXXX011

"28.884D88000000/errata": 
> 48117
ans = 0b1011101111110101
TRIM2 0b10111011
TRIM1         0bXXXXX101
           or 0bXXXXX011

Apparently only the "XXXXX" part is variable? But they say "A failure can be 
expected to effectively randomize the TH and TL values and can induce 
temperature measurement errors of up to &plusmn;60 Degrees Celsius." They can't 
be coding 120C into five binary bits...  Maybe they respond to all 32 bits even 
though they know only five should ever change? And the five bits only govern 
the &plusmn;2&deg;C range of the "blanket trim"? 

My errata display showed the same Trim value the time it said "invalid" as it 
did all the times it said "valid". And it sounds like if the POR read had 
failed, the pattern outside the "XXXXX" area probably would have been wrong. 


---
So if your bus setup is brittle and you get more PORs, it's more likely
you trigger the bug and the chip doesn't load the calibration values.
---

I'm not clear when this POR might be triggered. My current Linux session says 
it has been up since February, and I don't believe the board was power cycled 
even then. When I added the resistor to make 1K, I just clipped it onto the 
existing resistor with the system "live" and operating. Does OWFS issue POR 
commands while it is running? Is there some log or parameter I could check to 
find out when a POR occurs? 

But I really don't think I'm seeing a random POR read bug. As I said, my 
temperature readings were constantly offset by the same amounts through all the 
power cycles while I was setting up the hardware, and for all the months of 
constant operation since then. I clipped in the resistor and suddenly got good 
readings, without a (known) reset. 


---
> But bus.0 -> Statistics -> Errors shows: CRC8_errors     11 
> CRC8_tries      409

Never looked into these counters too deeply, sorry. If it really
matters, I will.
---

I have no idea if it matters. I'm just out of other ideas...  
 
 
Here is a bit of early morning minimum temperature: 
---
2015-10-05 08:35:07.963821      66.875  68.0
2015-10-05 08:40:08.040912      66.875  68.0
2015-10-05 08:45:08.117072      66.875  68.0
2015-10-05 08:50:08.195994      66.875  68.0
2015-10-05 08:55:08.291690      66.875  68.0
2015-10-05 09:00:08.384716      66.875  68.0
2015-10-05 09:05:08.465214      66.875  31.8884
2015-10-05 09:10:08.544804      66.875  68.0
2015-10-05 09:15:08.623682      66.9866 68.0
2015-10-05 09:20:08.691407      67.1    68.0
2015-10-05 09:25:08.767480      67.1    68.1116
2015-10-05 09:30:08.843657      67.1    68.1116
2015-10-05 09:35:08.902269      185.0   68.225
2015-10-05 09:40:08.981250      67.1    68.225
2015-10-05 09:45:09.072202      67.2116 68.225
---
Still seeing occasional 185 (85C) and 32 (0C) failures, about as often as 
before. Not sure why it shows "31.8884" instead of 32, when 85 converts 
exactly...  Something in my Python code? 

Thanks again,

Loren

| Loren Amelang | lo...@pacific.net |




------------------------------------------------------------------------------
_______________________________________________
Owfs-developers mailing list
Owfs-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers

Reply via email to