Am Dienstag, 18. Oktober 2011, 12:43:08 schrieb ekgnkb3d:
> Hello again,
>
> > Ok. I²C is CPU-hungry, as it involves busy-loops on kernel level for most
> > I²C
> > hosts. Bitbanging hosts are most annoying as they need the kernel to stop
> > for
> > 10µs after each bit. Nothing useful to do in such a short time.
>
> I'm using an iMX.257 CPU. According the Feature list there is hardware
> supporting the I²C bus. I hope it is not so CPU-hungry
>
Ok, that usually means there is a least a 9 bit shift register for the bus,
sometimes an ACK/NACK logic, too. Maybe even an interrupt after a byte has
been sent/received (after ~100µs).
> Nevertheless, I've tested the USB adapter DS9490R which even took more CPU
> load as the DS2482
>
Possible, if the USB host is taking a lot of the load. On a normal PC, the USB
is adapter less resource hungry and faster.
>
> Hmm, I never looked into the OWFS details, but I use the CAPI with one
> OW_init() and an OW_get() per loop & device. So I hope it never uses
> "Search ROM" and only uses "Match ROM"
>
"Search ROM" is done when you are scanning for new chips. In OWFS this is done
by reading the /uncached directory (the directory, not any of the chip nodes).
Costly operation, especially for I²C and RS232, because each chip on the
onewire requires 192 Bits to be sent on the bus. That gives ~1000 bits/chip on
I²C/RS232 side. The USB host adapter handles this operation internally.
"Match ROM" is done when you are addressing a single known chip. Triggered
when accessing any of the chip nodes.
There are three other onewire commands.
"Read ROM" to read the address of a single connected chip. Triggered by
reading /simultaneous/present and /simultaneous/single (and _ds2400 nodes)
"Skip ROM" is there to address all chips on a bus synchronously. Only useable
with subcommands which give no reply. E.g. simultaneous conversion start.
Triggered by /simultaneous/temperature and /simultaneous/voltage
"Conditional Search ROM" is same as "Search ROM", but only chips in alarmed
state will reply. Costly as "Search ROM", but only alarmed chips count.
Triggered by reading the /alarm directory (the directory, not any of the chip
nodes).
>
> > I haven't checked the temperature sensors, though. Are you
> > sampling/reading
> > them directy, or do you trigger /simultaneous/temperature before, then
> > delay
> > the loop, then read?
>
> I'm reading them directly and guessing I have to, because they are not
> powered (2-wires connection only, no Vcc). But it's a good idea to try
> it...
>
Please see the relevant function when doing a direct conversion:
owfs-2.8p13/module/owlib/src/c/ow_1820.c
/* Powered temperature measurements -- need to poll line since it is held low
during measurement */
/* We check every 10 msec (arbitrary) up to 1.25 seconds */
GOOD_OR_BAD FS_poll_convert(const struct parsedname *pn)
...
Maybe Paul can give some enlightenment on this.
Kind regards
Jan
------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2d-oct
_______________________________________________
Owfs-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/owfs-developers