]> Repositories - Adafruit_Blinka-hackapet.git/commitdiff
Merge pull request #36 from ladyada/master
authorLimor "Ladyada" Fried <limor@ladyada.net>
Thu, 13 Sep 2018 19:51:42 +0000 (12:51 -0700)
committerGitHub <noreply@github.com>
Thu, 13 Sep 2018 19:51:42 +0000 (12:51 -0700)
first BBB digitalio blinking

src/adafruit_blinka/agnostic/__init__.py
src/adafruit_blinka/board/beaglebone_black.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/beaglebone_black/__init__.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/beaglebone_black/pin.py [new file with mode: 0644]
src/board.py
src/digitalio.py

index 1a33b499316683240911940754eb37993626daf9..0327ae99b5e52bc8b15b8c51bf19b3b1330190b8 100755 (executable)
@@ -11,6 +11,7 @@ import sys
 platform = sys.platform
 
 board_id = None
+
 if platform is not None:
     if platform == "esp8266":  # TODO more conservative board-guessing
         board_id = "feather_huzzah"
@@ -28,6 +29,8 @@ if platform is not None:
                 board_id = "raspi_2"
             elif Platform.pi_version() == 3:
                 board_id = "raspi_3"
+        elif Platform.platform_detect() == Platform.BEAGLEBONE_BLACK:
+            board_id = "beaglebone_black"
 
 implementation = sys.implementation.name
 if implementation == "micropython":
diff --git a/src/adafruit_blinka/board/beaglebone_black.py b/src/adafruit_blinka/board/beaglebone_black.py
new file mode 100644 (file)
index 0000000..edd5a55
--- /dev/null
@@ -0,0 +1,11 @@
+from adafruit_blinka.microcontroller.beaglebone_black import pin
+
+# initial pins, to mimic bonescript demo
+P8_13 = pin.P8_13
+P8_19 = pin.P8_19
+P9_12 = pin.P9_12
+
+LED_USR0 = pin.USR0
+LED_USR1 = pin.USR1
+LED_USR2 = pin.USR2
+LED_USR3 = pin.USR3
diff --git a/src/adafruit_blinka/microcontroller/beaglebone_black/__init__.py b/src/adafruit_blinka/microcontroller/beaglebone_black/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/adafruit_blinka/microcontroller/beaglebone_black/pin.py b/src/adafruit_blinka/microcontroller/beaglebone_black/pin.py
new file mode 100644 (file)
index 0000000..7dcdbce
--- /dev/null
@@ -0,0 +1,81 @@
+import Adafruit_BBIO.GPIO as GPIO
+
+# Pins dont exist in CPython so...lets make our own!
+class Pin:
+    IN = 0
+    OUT = 1
+    LOW = 0
+    HIGH = 1
+    PULL_NONE = 0
+    PULL_UP = 1
+    PULL_DOWN = 2
+    
+    id = None
+    _value = LOW
+    _mode = IN
+    
+    def __init__(self, pin_name):
+        self.id = pin_name
+
+    def __repr__(self):
+        return str(self.id)
+
+    def __eq__(self, other):
+        return self.id == other
+
+    def init(self, mode=IN, pull=None):
+        if mode != None:
+            if mode == self.IN:
+                self._mode = self.IN
+                GPIO.setup(self.id, GPIO.IN)
+            elif mode == self.OUT:
+                self._mode = self.OUT
+                GPIO.setup(self.id, GPIO.OUT)
+            else:
+                raise RuntimeError("Invalid mode for pin: %s" % self.id)
+        if pull != None:
+            if self._mode != self.IN:
+                raise RuntimeError("Cannot set pull resistor on output")
+            if pull == self.PULL_UP:
+                GPIO.setup(self.id, GPIO.IN, pull_up_down=GPIO.PUD_UP)
+            elif pull == self.PULL_DOWN:
+                GPIO.setup(self.id, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
+            else:
+                raise RuntimeError("Invalid pull for pin: %s" % self.id)       
+
+    def value(self, val=None):
+        if val != None:
+            if val == self.LOW:
+                self._value = val
+                GPIO.output(self.id, val)
+            elif val == self.HIGH:
+                self._value = val
+                GPIO.output(self.id, val)
+            else:
+                raise RuntimeError("Invalid value for pin")
+        else:
+            return GPIO.input(self.id)
+
+P8_13 = Pin('P8_13')
+P8_19 = Pin('P8_19')
+
+P9_12 = Pin('P9_12')
+
+
+USR0 = Pin('USR0')
+USR1 = Pin('USR1')
+USR2 = Pin('USR2')
+USR3 = Pin('USR3')
+
+# ordered as spiId, sckId, mosiId, misoId
+spiPorts = ()
+
+# ordered as uartId, txId, rxId
+uartPorts = (
+    (),
+)
+
+i2cPorts = (
+    (),
+)
+
index 59005b0778f823ec18474aa24a6da77dec7ee504..4dab38536cdf002601556269a7a61434f2885875 100755 (executable)
@@ -39,6 +39,8 @@ elif board_id == "pyboard":
     from adafruit_blinka.board.pyboard import *
 elif board_id == "raspi_2" or board_id == "raspi_3":
     from adafruit_blinka.board.raspi_23 import *
+elif board_id == "beaglebone_black":
+    from adafruit_blinka.board.beaglebone_black import *
 elif "sphinx" in sys.modules:
     pass
 else:
index 93b45a941e95c83fe9688e225fd8ba46b096e714..2ad41bc9c5675f47540e89806761a232e462554f 100755 (executable)
@@ -10,6 +10,8 @@ See `CircuitPython:digitalio` in CircuitPython for more details.
 from adafruit_blinka.agnostic import board_id
 if board_id == "raspi_3" or board_id == "raspi_2":
     from adafruit_blinka.microcontroller.raspi_23.pin import Pin
+if board_id == "beaglebone_black":
+    from adafruit_blinka.microcontroller.beaglebone_black.pin import Pin
 elif board_id == "pyboard":
     from machine import Pin
 from adafruit_blinka import Enum, ContextManaged