|
10 | 10 |
|
11 | 11 | IO_DIGITAL_OUTPUT = 0 |
12 | 12 | IO_DIGITAL_INPUT = 1 |
13 | | -IO_ANALOG_INPUT = 2 |
| 13 | +IO_ANALOGUE_INPUT = 2 |
14 | 14 | IO_PWM_OUTPUT = 3 |
15 | 15 |
|
16 | 16 | # CHANNEL_INDEX_ROW_0 = 0 |
|
19 | 19 | # CHANNEL_INDEX_ROW_3 = 3 |
20 | 20 | # CHANNEL_INDEX_ROW_4 = 4 |
21 | 21 | (CHANNEL_INDEX_OUTPUT, |
22 | | -CHANNEL_INDEX_LEG_INPUT, |
23 | | -CHANNEL_INDEX_BUTTON_INPUT, |
24 | | -CHANNEL_INDEX_ANALOGUE_INPUT_0, |
25 | | -CHANNEL_INDEX_ANALOGUE_INPUT_1, |
26 | | -CHANNEL_INDEX_ANALOGUE_INPUT_2, |
27 | | -CHANNEL_INDEX_IO_DIRECTION_LEGS, |
28 | | -CHANNEL_INDEX_IO_DIRECTION_EXT, |
29 | | -CHANNEL_INDEX_PULLUPS, |
30 | | -CHANNEL_INDEX_EXT_CONF, |
31 | | -CHANNEL_INDEX_SPI_RATE, |
32 | | -CHANNEL_INDEX_SPI_LENGTH, |
33 | | -CHANNEL_INDEX_SPI_CONTROL, |
34 | | -CHANNEL_INDEX_I2C_ADDR, |
35 | | -CHANNEL_INDEX_I2C_LENGTH, |
36 | | -CHANNEL_INDEX_I2C_CONTROL, |
37 | | -CHANNEL_INDEX_UART_RX_OFFSET, |
38 | | -CHANNEL_INDEX_UART_RX_LENGTH, |
39 | | -CHANNEL_INDEX_UART_TX_OFFSET, |
40 | | -CHANNEL_INDEX_UART_TX_LENGTH, |
41 | | -CHANNEL_INDEX_UART_CONTROL, |
42 | | -CHANNEL_INDEX_COLOURTAIL_LENGTH, |
43 | | -CHANNEL_INDEX_COLOURTAIL_CONTROL, |
44 | | -CHANNEL_INDEX_PWM_CONF_0, |
45 | | -CHANNEL_INDEX_PWM_CONF_1, |
46 | | -CHANNEL_INDEX_PWM_CONF_2) = range(5, 31) |
| 22 | + CHANNEL_INDEX_LEG_INPUT, |
| 23 | + CHANNEL_INDEX_BUTTON_INPUT, |
| 24 | + CHANNEL_INDEX_ANALOGUE_CONF, |
| 25 | + CHANNEL_INDEX_ANALOGUE_INPUT, |
| 26 | + CHANNEL_INDEX_IO_DIRECTION_LEGS, |
| 27 | + CHANNEL_INDEX_IO_DIRECTION_EXT, |
| 28 | + CHANNEL_INDEX_PULLUPS, |
| 29 | + CHANNEL_INDEX_EXT_CONF, |
| 30 | + CHANNEL_INDEX_SPI_RATE, |
| 31 | + CHANNEL_INDEX_SPI_LENGTH, |
| 32 | + CHANNEL_INDEX_SPI_CONTROL, |
| 33 | + CHANNEL_INDEX_I2C_ADDR, |
| 34 | + CHANNEL_INDEX_I2C_LENGTH, |
| 35 | + CHANNEL_INDEX_I2C_CONTROL, |
| 36 | + CHANNEL_INDEX_UART_RX_OFFSET, |
| 37 | + CHANNEL_INDEX_UART_RX_LENGTH, |
| 38 | + CHANNEL_INDEX_UART_TX_OFFSET, |
| 39 | + CHANNEL_INDEX_UART_TX_LENGTH, |
| 40 | + CHANNEL_INDEX_UART_CONTROL, |
| 41 | + CHANNEL_INDEX_COLOURTAIL_LENGTH, |
| 42 | + CHANNEL_INDEX_COLOURTAIL_CONTROL, |
| 43 | + CHANNEL_INDEX_PWM_CONF_0, |
| 44 | + CHANNEL_INDEX_PWM_CONF_1, |
| 45 | + CHANNEL_INDEX_PWM_CONF_2) = range(5, 30) |
47 | 46 |
|
48 | 47 | EXTENSION_CONF_IO = 0x01 |
49 | 48 | EXTENSION_CONF_SPI = 0x02 |
@@ -115,12 +114,11 @@ def read_analogue(self, leg_index): |
115 | 114 | 128 |
116 | 115 |
|
117 | 116 | """ |
118 | | - if leg_index == 0: |
119 | | - return self.get(CHANNEL_INDEX_ANALOGUE_INPUT_0) |
120 | | - elif leg_index == 1: |
121 | | - return self.get(CHANNEL_INDEX_ANALOGUE_INPUT_1) |
122 | | - elif leg_index == 2: |
123 | | - return self.get(CHANNEL_INDEX_ANALOGUE_INPUT_2) |
| 117 | + # set which leg to read (and do the read) |
| 118 | + self.set(CHANNEL_INDEX_ANALOGUE_CONF, leg_index) |
| 119 | + # return the value |
| 120 | + analogue_value = self.get(CHANNEL_INDEX_ANALOGUE_INPUT) |
| 121 | + return struct.unpack('B', analogue_value)[0] |
124 | 122 |
|
125 | 123 | def set_pullup(self, input_index, state): |
126 | 124 | """Sets the state of the input pullups. Turn off to enable touch |
@@ -153,9 +151,11 @@ def set_leg_io(self, leg_index, direction): |
153 | 151 |
|
154 | 152 | """ |
155 | 153 | if leg_index < 4: |
156 | | - clear_mask = 0b11 << leg_index * 2 |
| 154 | + clear_mask = 0xff ^ (0b11 << leg_index * 2) |
157 | 155 | direction_mask = (0b11 & direction) << leg_index * 2 |
| 156 | + print("and_mask: {}".format(bin(clear_mask))) |
158 | 157 | self.and_mask(CHANNEL_INDEX_IO_DIRECTION_LEGS, clear_mask) |
| 158 | + print("or_mask: {}".format(bin(direction_mask))) |
159 | 159 | self.or_mask(CHANNEL_INDEX_IO_DIRECTION_LEGS, direction_mask) |
160 | 160 | else: |
161 | 161 | ext_index = leg_index - 4 |
|
0 commit comments