48 lines
1.2 KiB
Plaintext
48 lines
1.2 KiB
Plaintext
Kernel driver pca9539
|
|
=====================
|
|
|
|
Supported chips:
|
|
* Philips PCA9539
|
|
Prefix: 'pca9539'
|
|
Addresses scanned: 0x74 - 0x77
|
|
Datasheet:
|
|
http://www.semiconductors.philips.com/acrobat/datasheets/PCA9539_2.pdf
|
|
|
|
Author: Ben Gardner <bgardner@wabtec.com>
|
|
|
|
|
|
Description
|
|
-----------
|
|
|
|
The Philips PCA9539 is a 16 bit low power I/O device.
|
|
All 16 lines can be individually configured as an input or output.
|
|
The input sense can also be inverted.
|
|
The 16 lines are split between two bytes.
|
|
|
|
|
|
Sysfs entries
|
|
-------------
|
|
|
|
Each is a byte that maps to the 8 I/O bits.
|
|
A '0' suffix is for bits 0-7, while '1' is for bits 8-15.
|
|
|
|
input[01] - read the current value
|
|
output[01] - sets the output value
|
|
direction[01] - direction of each bit: 1=input, 0=output
|
|
invert[01] - toggle the input bit sense
|
|
|
|
input reads the actual state of the line and is always available.
|
|
The direction defaults to input for all channels.
|
|
|
|
|
|
General Remarks
|
|
---------------
|
|
|
|
Note that each output, direction, and invert entry controls 8 lines.
|
|
You should use the read, modify, write sequence.
|
|
For example. to set output bit 0 of 1.
|
|
val=$(cat output0)
|
|
val=$(( $val | 1 ))
|
|
echo $val > output0
|
|
|