mirror of
https://github.com/xtacocorex/CHIP_IO
synced 2025-07-21 13:23:21 +00:00
Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
d0ed4665aa | |||
1d641ecdff | |||
8241f54891 | |||
abbc4968c6 | |||
9a2e81f093 | |||
7cce06b472 |
@ -1,3 +1,12 @@
|
|||||||
|
0.2.7
|
||||||
|
----
|
||||||
|
* Fix to the Enable 1.8V Pin code as it wasn't working due to bit shifting isn't allowed on a float.
|
||||||
|
* Updated README to denote the PocketCHIP Pin names better
|
||||||
|
|
||||||
|
0.2.6
|
||||||
|
----
|
||||||
|
* Fix to keep the GPIO value file open until the pin is unexported (issue #34)
|
||||||
|
|
||||||
0.2.5
|
0.2.5
|
||||||
----
|
----
|
||||||
* Updates to the pytest code for HWPWM and SoftPWM
|
* Updates to the pytest code for HWPWM and SoftPWM
|
||||||
|
@ -35,7 +35,7 @@ def set_1v8_pin_voltage(voltage):
|
|||||||
return False
|
return False
|
||||||
if voltage < 1.8 or voltage > 3.3:
|
if voltage < 1.8 or voltage > 3.3:
|
||||||
return False
|
return False
|
||||||
voltage=round((voltage - 1.8) / 0.1) << 4
|
voltage=int(round((voltage - 1.8) / 0.1)) << 4
|
||||||
if subprocess.call(["/usr/sbin/i2cset", "-f", "-y" ,"0", "0x34", "0x90", "0x03"]):
|
if subprocess.call(["/usr/sbin/i2cset", "-f", "-y" ,"0", "0x34", "0x90", "0x03"]):
|
||||||
return False
|
return False
|
||||||
if subprocess.call(["/usr/sbin/i2cset", "-f", "-y", "0", "0x34", "0x91", str(voltage)]):
|
if subprocess.call(["/usr/sbin/i2cset", "-f", "-y", "0", "0x34", "0x91", str(voltage)]):
|
||||||
|
2
Makefile
2
Makefile
@ -6,7 +6,7 @@ publish: package
|
|||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf CHIP_IO.* build dist
|
rm -rf CHIP_IO.* build dist
|
||||||
rm -f *.pyo
|
rm -f *.pyo *.pyc
|
||||||
rm -f *.egg
|
rm -f *.egg
|
||||||
rm -f overlays/*.pyo overlays/*.pyc
|
rm -f overlays/*.pyo overlays/*.pyc
|
||||||
tests:
|
tests:
|
||||||
|
112
README.rst
112
README.rst
@ -44,115 +44,115 @@ All scripts that require GPIO, PWM (HW and/or SW), and Overlay Manager need to b
|
|||||||
|
|
||||||
**Allowable Pin Names for the Library**
|
**Allowable Pin Names for the Library**
|
||||||
|
|
||||||
The following "table" is the allowable pin names that are able to be used by the library.
|
The following "table" is the allowable pin names that are able to be used by the library. The Name column is the normal name used on the CHIP Headers, the Alt Name column is the value used by the PocketCHIP header (if it's broken out), and the Key is the Header and Pin Number the the Pin is physically located. Either of these 3 means is able to specify a pin in CHIP_IO.
|
||||||
|
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| Name | Alt Name | Key |
|
| CHIP (Name) | PocketCHIP (Alt Name) | Key |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| TWI1-SDA | KPD-I2C-SDA | U13_9 |
|
| TWI1-SDA | KPD-I2C-SDA | U13_9 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| TWI1-SCK | KPD-I2C-SCL | U13_11 |
|
| TWI1-SCK | KPD-I2C-SCL | U13_11 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LCD-D2 | LCD-D2 | U13_17 |
|
| LCD-D2 | LCD-D2 | U13_17 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| PWM0 | PWM0 | U13_18 |
|
| PWM0 | PWM0 | U13_18 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LCD-D4 | LCD-D4 | U13_19 |
|
| LCD-D4 | LCD-D4 | U13_19 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LCD-D3 | LCD-D3 | U13_20 |
|
| LCD-D3 | LCD-D3 | U13_20 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LCD-D6 | LCD-D6 | U13_21 |
|
| LCD-D6 | LCD-D6 | U13_21 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LCD-D5 | LCD-D5 | U13_22 |
|
| LCD-D5 | LCD-D5 | U13_22 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LCD-D10 | LCD-D10 | U13_23 |
|
| LCD-D10 | LCD-D10 | U13_23 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LCD-D7 | LCD-D7 | U13_24 |
|
| LCD-D7 | LCD-D7 | U13_24 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LCD-D12 | LCD-D12 | U13_25 |
|
| LCD-D12 | LCD-D12 | U13_25 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LCD-D11 | LCD-D11 | U13_26 |
|
| LCD-D11 | LCD-D11 | U13_26 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LCD-D14 | LCD-D14 | U13_27 |
|
| LCD-D14 | LCD-D14 | U13_27 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LCD-D13 | LCD-D13 | U13_28 |
|
| LCD-D13 | LCD-D13 | U13_28 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LCD-D18 | LCD-D18 | U13_29 |
|
| LCD-D18 | LCD-D18 | U13_29 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LCD-D15 | LCD-D15 | U13_30 |
|
| LCD-D15 | LCD-D15 | U13_30 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LCD-D20 | LCD-D20 | U13_31 |
|
| LCD-D20 | LCD-D20 | U13_31 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LCD-D19 | LCD-D19 | U13_32 |
|
| LCD-D19 | LCD-D19 | U13_32 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LCD-D22 | LCD-D22 | U13_33 |
|
| LCD-D22 | LCD-D22 | U13_33 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LCD-D21 | LCD-D21 | U13_34 |
|
| LCD-D21 | LCD-D21 | U13_34 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LCD-CLK | LCD-CLK | U13_35 |
|
| LCD-CLK | LCD-CLK | U13_35 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LCD-D23 | LCD-D23 | U13_36 |
|
| LCD-D23 | LCD-D23 | U13_36 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LCD-VSYNC | LCD-VSYNC | U13_37 |
|
| LCD-VSYNC | LCD-VSYNC | U13_37 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LCD-HSYNC | LCD-HSYNC | U13_38 |
|
| LCD-HSYNC | LCD-HSYNC | U13_38 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LCD-DE | LCD-DE | U13_40 |
|
| LCD-DE | LCD-DE | U13_40 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| UART1-TX | UART-TX | U14_3 |
|
| UART1-TX | UART-TX | U14_3 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| UART1-RX | UART-RX | U14_5 |
|
| UART1-RX | UART-RX | U14_5 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| LRADC | ADC | U14_11 |
|
| LRADC | ADC | U14_11 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| XIO-P0 | XIO-P0 | U14_13 |
|
| XIO-P0 | XIO-P0 | U14_13 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| XIO-P1 | XIO-P1 | U14_14 |
|
| XIO-P1 | XIO-P1 | U14_14 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| XIO-P2 | GPIO1 | U14_15 |
|
| XIO-P2 | GPIO1 | U14_15 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| XIO-P3 | GPIO2 | U14_16 |
|
| XIO-P3 | GPIO2 | U14_16 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| XIO-P4 | GPIO3 | U14_17 |
|
| XIO-P4 | GPIO3 | U14_17 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| XIO-P5 | GPIO4 | U14_18 |
|
| XIO-P5 | GPIO4 | U14_18 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| XIO-P6 | GPIO5 | U14_19 |
|
| XIO-P6 | GPIO5 | U14_19 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| XIO-P7 | GPIO6 | U14_20 |
|
| XIO-P7 | GPIO6 | U14_20 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| AP-EINT1 | KPD-INT | U14_23 |
|
| AP-EINT1 | KPD-INT | U14_23 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| AP-EINT3 | AP-INT3 | U14_24 |
|
| AP-EINT3 | AP-INT3 | U14_24 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| TWI2-SDA | I2C-SDA | U14_25 |
|
| TWI2-SDA | I2C-SDA | U14_25 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| TWI2-SCK | I2C-SCL | U14_26 |
|
| TWI2-SCK | I2C-SCL | U14_26 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| CSIPCK | SPI-SEL | U14_27 |
|
| CSIPCK | SPI-SEL | U14_27 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| CSICK | SPI-CLK | U14_28 |
|
| CSICK | SPI-CLK | U14_28 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| CSIHSYNC | SPI-MOSI | U14_29 |
|
| CSIHSYNC | SPI-MOSI | U14_29 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| CSIVSYNC | SPI-MISO | U14_30 |
|
| CSIVSYNC | SPI-MISO | U14_30 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| CSID0 | CSID0 | U14_31 |
|
| CSID0 | CSID0 | U14_31 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| CSID1 | CSID1 | U14_32 |
|
| CSID1 | CSID1 | U14_32 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| CSID2 | CSID2 | U14_33 |
|
| CSID2 | CSID2 | U14_33 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| CSID3 | CSID3 | U14_34 |
|
| CSID3 | CSID3 | U14_34 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| CSID4 | CSID4 | U14_35 |
|
| CSID4 | CSID4 | U14_35 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| CSID5 | CSID5 | U14_36 |
|
| CSID5 | CSID5 | U14_36 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| CSID6 | CSID6 | U14_37 |
|
| CSID6 | CSID6 | U14_37 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
| CSID7 | CSID7 | U14_38 |
|
| CSID7 | CSID7 | U14_38 |
|
||||||
+-----------+-------------+--------+
|
+------------------+--------------------------+--------+
|
||||||
|
|
||||||
**GPIO Setup**
|
**GPIO Setup**
|
||||||
|
|
||||||
|
@ -7,7 +7,6 @@ import sys
|
|||||||
def compile():
|
def compile():
|
||||||
print("Compiling DTS Files")
|
print("Compiling DTS Files")
|
||||||
call(["dtc", "-O", "dtb", "-o", "overlays/chip-spi2.dtbo", "-b", "o", "-@", "overlays/chip-spi2.dts"])
|
call(["dtc", "-O", "dtb", "-o", "overlays/chip-spi2.dtbo", "-b", "o", "-@", "overlays/chip-spi2.dts"])
|
||||||
call(["dtc", "-O", "dtb", "-o", "overlays/chip-i2c1.dtbo", "-b", "o", "-@", "overlays/chip-i2c1.dts"])
|
|
||||||
call(["dtc", "-O", "dtb", "-o", "overlays/chip-pwm0.dtbo", "-b", "o", "-@", "overlays/chip-pwm0.dts"])
|
call(["dtc", "-O", "dtb", "-o", "overlays/chip-pwm0.dtbo", "-b", "o", "-@", "overlays/chip-pwm0.dts"])
|
||||||
|
|
||||||
def copy():
|
def copy():
|
||||||
@ -22,5 +21,4 @@ def copy():
|
|||||||
os.remove(fl)
|
os.remove(fl)
|
||||||
print("Moving DTBO files to "+overlay_path)
|
print("Moving DTBO files to "+overlay_path)
|
||||||
shutil.move("overlays/chip-spi2.dtbo", overlay_path+"/chip-spi2.dtbo")
|
shutil.move("overlays/chip-spi2.dtbo", overlay_path+"/chip-spi2.dtbo")
|
||||||
shutil.move("overlays/chip-i2c1.dtbo", overlay_path+"/chip-i2c1.dtbo")
|
|
||||||
shutil.move("overlays/chip-pwm0.dtbo", overlay_path+"/chip-pwm0.dtbo")
|
shutil.move("overlays/chip-pwm0.dtbo", overlay_path+"/chip-pwm0.dtbo")
|
||||||
|
2
setup.py
2
setup.py
@ -20,7 +20,7 @@ classifiers = ['Development Status :: 3 - Alpha',
|
|||||||
'Topic :: System :: Hardware']
|
'Topic :: System :: Hardware']
|
||||||
|
|
||||||
setup(name = 'CHIP_IO',
|
setup(name = 'CHIP_IO',
|
||||||
version = '0.2.5',
|
version = '0.2.7',
|
||||||
author = 'Robert Wolterman',
|
author = 'Robert Wolterman',
|
||||||
author_email = 'robert.wolterman@gmail.com',
|
author_email = 'robert.wolterman@gmail.com',
|
||||||
description = 'A module to control CHIP IO channels',
|
description = 'A module to control CHIP IO channels',
|
||||||
|
162
source/common.c
162
source/common.c
@ -50,87 +50,87 @@ int setup_error = 0;
|
|||||||
int module_setup = 0;
|
int module_setup = 0;
|
||||||
|
|
||||||
pins_t pins_info[] = {
|
pins_t pins_info[] = {
|
||||||
{ "GND", "GND", "U13_1", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "GND", "GND", "U13_1", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "CHG-IN", "CHG-IN", "U13_2", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "CHG-IN", "CHG-IN", "U13_2", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "VCC-5V", "VCC-5V", "U13_3", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "VCC-5V", "VCC-5V", "U13_3", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "GND", "GND", "U13_4", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "GND", "GND", "U13_4", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "VCC-3V3", "VCC-3V3", "U13_5", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "VCC-3V3", "VCC-3V3", "U13_5", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "TS", "TS", "U13_6", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "TS", "TS", "U13_6", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "VCC-1V8", "VCC-1V8", "U13_7", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "VCC-1V8", "VCC-1V8", "U13_7", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "BAT", "BAT", "U13_8", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "BAT", "BAT", "U13_8", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "TWI1-SDA", "KPD-I2C-SDA", "U13_9", 48, BASE_METHOD_AS_IS, -1, -1},
|
{ "TWI1-SDA", "KPD-I2C-SDA", "U13_9", 48, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "PWRON", "PWRON", "U13_10", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "PWRON", "PWRON", "U13_10", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "TWI1-SCK", "KPD-I2C-SCL", "U13_11", 47, BASE_METHOD_AS_IS, -1, -1},
|
{ "TWI1-SCK", "KPD-I2C-SCL", "U13_11", 47, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "GND", "GND", "U13_12", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "GND", "GND", "U13_12", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "X1", "X1", "U13_13", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "X1", "X1", "U13_13", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "X2", "X2", "U13_14", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "X2", "X2", "U13_14", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "Y1", "Y1", "U13_15", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "Y1", "Y1", "U13_15", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "Y2", "Y2", "U13_16", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "Y2", "Y2", "U13_16", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D2", "LCD-D2", "U13_17", 98, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D2", "LCD-D2", "U13_17", 98, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "PWM0", "PWM0", "U13_18", 34, BASE_METHOD_AS_IS, 0, -1},
|
{ "PWM0", "PWM0", "U13_18", 34, BASE_METHOD_AS_IS, 0, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D4", "LCD-D4", "U13_19", 100, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D4", "LCD-D4", "U13_19", 100, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D3", "LCD-D3", "U13_20", 99, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D3", "LCD-D3", "U13_20", 99, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D6", "LCD-D6", "U13_21", 102, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D6", "LCD-D6", "U13_21", 102, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D5", "LCD-D5", "U13_22", 101, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D5", "LCD-D5", "U13_22", 101, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D10", "LCD-D10", "U13_23", 106, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D10", "LCD-D10", "U13_23", 106, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D7", "LCD-D7", "U13_24", 103, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D7", "LCD-D7", "U13_24", 103, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D12", "LCD-D12", "U13_25", 108, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D12", "LCD-D12", "U13_25", 108, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D11", "LCD-D11", "U13_26", 107, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D11", "LCD-D11", "U13_26", 107, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D14", "LCD-D14", "U13_27", 110, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D14", "LCD-D14", "U13_27", 110, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D13", "LCD-D13", "U13_28", 109, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D13", "LCD-D13", "U13_28", 109, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D18", "LCD-D18", "U13_29", 114, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D18", "LCD-D18", "U13_29", 114, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D15", "LCD-D15", "U13_30", 111, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D15", "LCD-D15", "U13_30", 111, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D20", "LCD-D20", "U13_31", 116, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D20", "LCD-D20", "U13_31", 116, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D19", "LCD-D19", "U13_32", 115, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D19", "LCD-D19", "U13_32", 115, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D22", "LCD-D22", "U13_33", 118, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D22", "LCD-D22", "U13_33", 118, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D21", "LCD-D21", "U13_34", 117, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D21", "LCD-D21", "U13_34", 117, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-CLK", "LCD-CLK", "U13_35", 120, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-CLK", "LCD-CLK", "U13_35", 120, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D23", "LCD-D23", "U13_36", 119, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D23", "LCD-D23", "U13_36", 119, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-VSYNC", "LCD-VSYNC", "U13_37", 123, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-VSYNC", "LCD-VSYNC", "U13_37", 123, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-HSYNC", "LCD-HSYNC", "U13_38", 122, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-HSYNC", "LCD-HSYNC", "U13_38", 122, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "GND", "GND", "U13_39", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "GND", "GND", "U13_39", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-DE", "LCD-DE", "U13_40", 121, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-DE", "LCD-DE", "U13_40", 121, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "GND", "GND", "U14_1", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "GND", "GND", "U14_1", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "VCC-5V", "VCC-5V", "U14_2", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "VCC-5V", "VCC-5V", "U14_2", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "UART1-TX", "UART-TX", "U14_3", 195, BASE_METHOD_AS_IS, -1, -1},
|
{ "UART1-TX", "UART-TX", "U14_3", 195, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "HPL", "HPL", "U14_4", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "HPL", "HPL", "U14_4", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "UART1-RX", "UART-RX", "U14_5", 196, BASE_METHOD_AS_IS, -1, -1},
|
{ "UART1-RX", "UART-RX", "U14_5", 196, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "HPCOM", "HPCOM", "U14_6", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "HPCOM", "HPCOM", "U14_6", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "FEL", "FEL", "U14_7", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "FEL", "FEL", "U14_7", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "HPR", "HPR", "U14_8", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "HPR", "HPR", "U14_8", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "VCC-3V3", "VCC-3V3", "U14_9", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "VCC-3V3", "VCC-3V3", "U14_9", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "MICM", "MICM", "U14_10", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "MICM", "MICM", "U14_10", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LRADC", "ADC", "U14_11", -1, BASE_METHOD_AS_IS, -1, 0},
|
{ "LRADC", "ADC", "U14_11", -1, BASE_METHOD_AS_IS, -1, 0, SPWM_DISABLED},
|
||||||
{ "MICIN1", "MICIN1", "U14_12", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "MICIN1", "MICIN1", "U14_12", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "XIO-P0", "XIO-P0", "U14_13", 0, BASE_METHOD_XIO, -1, -1},
|
{ "XIO-P0", "XIO-P0", "U14_13", 0, BASE_METHOD_XIO, -1, -1, SPWM_ENABLED},
|
||||||
{ "XIO-P1", "XIO-P1", "U14_14", 1, BASE_METHOD_XIO, -1, -1},
|
{ "XIO-P1", "XIO-P1", "U14_14", 1, BASE_METHOD_XIO, -1, -1, SPWM_ENABLED},
|
||||||
{ "XIO-P2", "GPIO1", "U14_15", 2, BASE_METHOD_XIO, -1, -1},
|
{ "XIO-P2", "GPIO1", "U14_15", 2, BASE_METHOD_XIO, -1, -1, SPWM_ENABLED},
|
||||||
{ "XIO-P3", "GPIO2", "U14_16", 3, BASE_METHOD_XIO, -1, -1},
|
{ "XIO-P3", "GPIO2", "U14_16", 3, BASE_METHOD_XIO, -1, -1, SPWM_ENABLED},
|
||||||
{ "XIO-P4", "GPIO3", "U14_17", 4, BASE_METHOD_XIO, -1, -1},
|
{ "XIO-P4", "GPIO3", "U14_17", 4, BASE_METHOD_XIO, -1, -1, SPWM_ENABLED},
|
||||||
{ "XIO-P5", "GPIO4", "U14_18", 5, BASE_METHOD_XIO, -1, -1},
|
{ "XIO-P5", "GPIO4", "U14_18", 5, BASE_METHOD_XIO, -1, -1, SPWM_ENABLED},
|
||||||
{ "XIO-P6", "GPIO5", "U14_19", 6, BASE_METHOD_XIO, -1, -1},
|
{ "XIO-P6", "GPIO5", "U14_19", 6, BASE_METHOD_XIO, -1, -1, SPWM_ENABLED},
|
||||||
{ "XIO-P7", "GPIO6", "U14_20", 7, BASE_METHOD_XIO, -1, -1},
|
{ "XIO-P7", "GPIO6", "U14_20", 7, BASE_METHOD_XIO, -1, -1, SPWM_ENABLED},
|
||||||
{ "GND", "GND", "U14_21", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "GND", "GND", "U14_21", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "GND", "GND", "U14_22", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "GND", "GND", "U14_22", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "AP-EINT1", "KPD-INT", "U14_23", 193, BASE_METHOD_AS_IS, -1, -1},
|
{ "AP-EINT1", "KPD-INT", "U14_23", 193, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "AP-EINT3", "AP-INT3", "U14_24", 35, BASE_METHOD_AS_IS, -1, -1},
|
{ "AP-EINT3", "AP-INT3", "U14_24", 35, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "TWI2-SDA", "I2C-SDA", "U14_25", 50, BASE_METHOD_AS_IS, -1, -1},
|
{ "TWI2-SDA", "I2C-SDA", "U14_25", 50, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "TWI2-SCK", "I2C-SCL", "U14_26", 49, BASE_METHOD_AS_IS, -1, -1},
|
{ "TWI2-SCK", "I2C-SCL", "U14_26", 49, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "CSIPCK", "SPI-SEL", "U14_27", 128, BASE_METHOD_AS_IS, -1, -1},
|
{ "CSIPCK", "SPI-SEL", "U14_27", 128, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "CSICK", "SPI-CLK", "U14_28", 129, BASE_METHOD_AS_IS, -1, -1},
|
{ "CSICK", "SPI-CLK", "U14_28", 129, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "CSIHSYNC", "SPI-MOSI", "U14_29", 130, BASE_METHOD_AS_IS, 1, -1},
|
{ "CSIHSYNC", "SPI-MOSI", "U14_29", 130, BASE_METHOD_AS_IS, 1, -1, SPWM_DISABLED},
|
||||||
{ "CSIVSYNC", "SPI-MISO", "U14_30", 131, BASE_METHOD_AS_IS, -1, -1},
|
{ "CSIVSYNC", "SPI-MISO", "U14_30", 131, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "CSID0", "CSID0", "U14_31", 132, BASE_METHOD_AS_IS, 1, -1},
|
{ "CSID0", "CSID0", "U14_31", 132, BASE_METHOD_AS_IS, 1, -1, SPWM_DISABLED},
|
||||||
{ "CSID1", "CSID1", "U14_32", 133, BASE_METHOD_AS_IS, -1, -1},
|
{ "CSID1", "CSID1", "U14_32", 133, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "CSID2", "CSID2", "U14_33", 134, BASE_METHOD_AS_IS, -1, -1},
|
{ "CSID2", "CSID2", "U14_33", 134, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "CSID3", "CSID3", "U14_34", 135, BASE_METHOD_AS_IS, -1, -1},
|
{ "CSID3", "CSID3", "U14_34", 135, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "CSID4", "CSID4", "U14_35", 136, BASE_METHOD_AS_IS, -1, -1},
|
{ "CSID4", "CSID4", "U14_35", 136, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "CSID5", "CSID5", "U14_36", 137, BASE_METHOD_AS_IS, -1, -1},
|
{ "CSID5", "CSID5", "U14_36", 137, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "CSID6", "CSID6", "U14_37", 138, BASE_METHOD_AS_IS, -1, -1},
|
{ "CSID6", "CSID6", "U14_37", 138, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "CSID7", "CSID7", "U14_38", 139, BASE_METHOD_AS_IS, -1, -1},
|
{ "CSID7", "CSID7", "U14_38", 139, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "GND", "GND", "U14_39", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "GND", "GND", "U14_39", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "GND", "GND", "U14_40", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "GND", "GND", "U14_40", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ NULL, NULL, NULL, -1, 0, -1, -1}
|
{ NULL, NULL, NULL, -1, 0, -1, -1, -1}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -52,13 +52,15 @@ SOFTWARE.
|
|||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define MODE_UNKNOWN -1
|
#define MODE_UNKNOWN -1
|
||||||
#define BOARD 10
|
#define CHIP 0
|
||||||
#define BCM 11
|
#define CHIPPRO 1
|
||||||
|
|
||||||
// In the pins_t structure, the "base_method" field tells how
|
// In the pins_t structure, the "base_method" field tells how
|
||||||
// the "gpio" field should be interpreted.
|
// the "gpio" field should be interpreted.
|
||||||
#define BASE_METHOD_AS_IS 1 /* use the gpio value directly */
|
#define BASE_METHOD_AS_IS 1 /* use the gpio value directly */
|
||||||
#define BASE_METHOD_XIO 2 /* add the gpio value to the XIO base */
|
#define BASE_METHOD_XIO 2 /* add the gpio value to the XIO base */
|
||||||
|
#define SPWM_ENABLED 1 /* pin able to be used by software pwm */
|
||||||
|
#define SPWM_DISABLED 0 /* pin unable to be used by software pwm */
|
||||||
|
|
||||||
typedef struct pins_t {
|
typedef struct pins_t {
|
||||||
const char *name;
|
const char *name;
|
||||||
@ -66,8 +68,9 @@ typedef struct pins_t {
|
|||||||
const char *key;
|
const char *key;
|
||||||
int gpio; /* port number to use under /sys/class/gpio */
|
int gpio; /* port number to use under /sys/class/gpio */
|
||||||
int base_method; /* modifier for port number; see BASE_METHOD_... */
|
int base_method; /* modifier for port number; see BASE_METHOD_... */
|
||||||
int pwm_mux_mode;
|
int pwm_mux_mode; /* pwm pin */
|
||||||
int ain;
|
int ain; /* analog pin */
|
||||||
|
int spwm_allow; /* pin allowed for software pwm */
|
||||||
} pins_t;
|
} pins_t;
|
||||||
|
|
||||||
|
|
||||||
|
@ -76,6 +76,6 @@ void define_constants(PyObject *module)
|
|||||||
both_edge = Py_BuildValue("i", BOTH_EDGE);
|
both_edge = Py_BuildValue("i", BOTH_EDGE);
|
||||||
PyModule_AddObject(module, "BOTH", both_edge);
|
PyModule_AddObject(module, "BOTH", both_edge);
|
||||||
|
|
||||||
version = Py_BuildValue("s", "0.2.5");
|
version = Py_BuildValue("s", "0.2.7");
|
||||||
PyModule_AddObject(module, "VERSION", version);
|
PyModule_AddObject(module, "VERSION", version);
|
||||||
}
|
}
|
||||||
|
@ -215,7 +215,9 @@ int open_value_file(int gpio)
|
|||||||
// create file descriptor of value file
|
// create file descriptor of value file
|
||||||
snprintf(filename, sizeof(filename), "/sys/class/gpio/gpio%d/value", gpio); BUF2SMALL(filename);
|
snprintf(filename, sizeof(filename), "/sys/class/gpio/gpio%d/value", gpio); BUF2SMALL(filename);
|
||||||
|
|
||||||
if ((fd = open(filename, O_RDONLY | O_NONBLOCK)) < 0) {
|
// Changed this to open Read/Write to prevent a ton of file open/closes from happening when using
|
||||||
|
// the GPIO for SOFTPWM
|
||||||
|
if ((fd = open(filename, O_RDWR | O_NONBLOCK)) < 0) {
|
||||||
char err[256];
|
char err[256];
|
||||||
snprintf(err, sizeof(err), "open_value_file: could not open '%s' (%s)", filename, strerror(errno));
|
snprintf(err, sizeof(err), "open_value_file: could not open '%s' (%s)", filename, strerror(errno));
|
||||||
add_error_msg(err);
|
add_error_msg(err);
|
||||||
@ -376,18 +378,24 @@ int gpio_get_direction(int gpio, unsigned int *value)
|
|||||||
|
|
||||||
int gpio_set_value(int gpio, unsigned int value)
|
int gpio_set_value(int gpio, unsigned int value)
|
||||||
{
|
{
|
||||||
int fd, e_no;
|
// This now uses the value file descriptor that is set in the other struct
|
||||||
|
// in an effort to minimize opening/closing this
|
||||||
|
int fd = fd_lookup(gpio);
|
||||||
|
int e_no;
|
||||||
char filename[MAX_FILENAME];
|
char filename[MAX_FILENAME];
|
||||||
char vstr[16];
|
char vstr[16];
|
||||||
|
|
||||||
snprintf(filename, sizeof(filename), "/sys/class/gpio/gpio%d/value", gpio); BUF2SMALL(filename);
|
snprintf(filename, sizeof(filename), "/sys/class/gpio/gpio%d/value", gpio); BUF2SMALL(filename);
|
||||||
|
|
||||||
if ((fd = open(filename, O_WRONLY)) < 0) {
|
if (!fd)
|
||||||
|
{
|
||||||
|
if ((fd = open_value_file(gpio)) == -1) {
|
||||||
char err[256];
|
char err[256];
|
||||||
snprintf(err, sizeof(err), "gpio_set_value: could not open '%s' (%s)", filename, strerror(errno));
|
snprintf(err, sizeof(err), "gpio_get_value: could not open GPIO %d value file", gpio);
|
||||||
add_error_msg(err);
|
add_error_msg(err);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (value) {
|
if (value) {
|
||||||
strncpy(vstr, "1", ARRAY_SIZE(vstr) - 1);
|
strncpy(vstr, "1", ARRAY_SIZE(vstr) - 1);
|
||||||
@ -396,7 +404,6 @@ int gpio_set_value(int gpio, unsigned int value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ssize_t s = write(fd, vstr, strlen(vstr)); e_no = errno;
|
ssize_t s = write(fd, vstr, strlen(vstr)); e_no = errno;
|
||||||
close(fd);
|
|
||||||
|
|
||||||
if (s != strlen(vstr)) {
|
if (s != strlen(vstr)) {
|
||||||
char err[256];
|
char err[256];
|
||||||
|
Reference in New Issue
Block a user