]> Repositories - Adafruit_Blinka-hackapet.git/blob - src/adafruit_blinka/microcontroller/nova/pin.py
Make sure to set spi's numericalbase to 10
[Adafruit_Blinka-hackapet.git] / src / adafruit_blinka / microcontroller / nova / pin.py
1 class Pin:
2     """A basic Pin class for use with Binho Nova."""
3
4     IN = 'DIN'
5     OUT = 'DOUT'
6     AIN = 'AIN'
7     AOUT = 'AOUT'
8     PWM = 'PWM'
9     LOW = 0
10     HIGH = 1
11
12     _nova = None
13
14     def __init__(self, pin_id=None):
15         if not Pin._nova:
16             from adafruit_blinka.microcontroller.nova import Connection
17             Pin._nova = Connection.getInstance()
18         # check if pin is valid
19         if pin_id > 4:
20             raise ValueError("Invalid pin {}.".format(pin_id))
21
22         self.id = pin_id
23
24     def init(self, mode=IN, pull=None):
25         if self.id is None:
26             raise RuntimeError("Can not init a None type pin.")
27         # Nova does't have configurable internal pulls for 
28         if pull:
29             raise ValueError("Internal pull up/down not currently supported.")
30         Pin._nova.setIOpinMode(self.id, mode)
31
32     def value(self, val=None):
33         if self.id is None:
34             raise RuntimeError("Can not access a None type pin.")
35         # read
36         if val is None:
37             return int(Pin._nova.getIOpinValue(self.id).split('VALUE ')[1])
38         # write
39         elif val in (self.LOW, self.HIGH):
40             Pin._nova.setIOpinValue(self.id, val)
41         else:
42             raise RuntimeError("Invalid value for pin")
43
44 # create pin instances for each pin
45 IO0 = Pin(0)
46 IO1 = Pin(1)
47 IO2 = Pin(2)
48 IO3 = Pin(3)
49 IO4 = Pin(4)
50
51 # create None type pins for I2C and SPI since they are expected to be defined
52 SCL = IO2
53 SDA = IO0
54 SCK = SCLK = IO3
55 MOSI = IO4
56 MISO = IO2
57 SS0  = IO0
58 SS1  = IO1
59
60 PWM0 = IO0
61 # No PWM support on IO1
62 PWM2 = IO2
63 PWM3 = IO3
64 PWM4 = IO4
65
66 # orderd as (channel, pin), id
67 pwmOuts = ( ((1, 0), PWM0), ((1, 2), PWM2), ((1, 3), PWM3), ((1, 4), PWM4) )
68
69 UART1_TX = IO4
70 UART1_RX = IO3
71
72 # ordered as uartId, txId, rxId
73 uartPorts = ( (0, UART1_TX, UART1_RX), )