Usage notes.
I don't think I have to remind about the risk of connecting the module backwards, or into the wrong pins. Do always check to flush the connector to the rightmost pins, and connect it with the components facing towards the back.
Troubleshooting.
To detect any problems with PCA9564 use pcadetect tool. It will print out all PCA9564 connected to any of recognized ClockPort expander ports, including fast port on address 0xd90001:
Bash:
ClockBase A1 A0 STA DAT ADR CON detected?
0x00D80001 A03 A02 0xF8 0x00 0x00 0x00 yes
0x00D84001 A03 A02 0xF8 0x00 0x00 0x00 yes
0x00D88001 A03 A02 0xF8 0x00 0x00 0x00 yes
0x00D90001 A03 A02 0xF8 0x00 0x00 0x00 yes
Last column should display at least one positive verdict for the module connected at the proper location. With this you can investigate problems with clock-port expander or port implementation. With this output I might be able to enhance functionality of supporting library to support more clock ports.
With at least one chip connected to I2C bus one should be able to detect it via another tool: i2cdetect
Bash:
1.DH0:i2c/tools> i2cdetect
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe address range 0x08-0x77.
You have been warned!
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- --
40: -- -- -- -- -- -- -- -- 48 49 4a 4b -- -- 4e 4f
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 --
To access particular device another two small tools can be used: i2cset and i2cget. With it a GPIO chip can be read and written to. i2cget to read and i2cset to write into. NB the i2c addresses used by these tools conforms the
linux convention: 7 bit of address are from 0x00 to 0x7F, contrary to ReceiveI2C and SendI2C tools provided in
aminet package.
Bash:
1.DH0:i2c/tools> i2cget 0x20 1
0x20: 0x55
1.DH0:i2c/tools> i2cset 0x20 aa
0x20: AA
1.DH0:i2c/tools> i2cget 0x20 1
0x20: 0xAA
LM75 temperature sensor chip can be read too. See readouts of 2 bytes from lm75 and compare them with output produced by dedicated tool, which converts it into degrees Celcius.
Bash:
1.DH0:i2c/tools> lm75 7
0x4f: 43.12C
1.DH0:i2c/tools> i2cget 0x4f 2
0x4F: 0x2B 0x20
1.DH0:i2c/tools> lm75 7
0x4f: 43.12C
Binaries and source codes are available through
git. All these small programs are using the original API of i2c.library by Wilhelm Noeker, and can be used for another i2c implementation as well (e.g. CPLDICY).