On Mon, 5 Oct 2015 02:54:55 +0200, Jan Kandziora <[email protected]> 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 ±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 ±2°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 | [email protected] |
------------------------------------------------------------------------------
_______________________________________________
Owfs-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/owfs-developers