From: Limor "Ladyada" Fried Date: Thu, 13 Sep 2018 19:51:42 +0000 (-0700) Subject: Merge pull request #36 from ladyada/master X-Git-Tag: 0.3.0~4 X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/commitdiff_plain/ee327510ce3f73ccb70fc9c976d6f9e712b65afd?hp=0833ab4d514302327b34df90f8dc871734d66295 Merge pull request #36 from ladyada/master first BBB digitalio blinking --- diff --git a/src/adafruit_blinka/agnostic/__init__.py b/src/adafruit_blinka/agnostic/__init__.py index 1a33b49..0327ae9 100755 --- a/src/adafruit_blinka/agnostic/__init__.py +++ b/src/adafruit_blinka/agnostic/__init__.py @@ -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 index 0000000..edd5a55 --- /dev/null +++ b/src/adafruit_blinka/board/beaglebone_black.py @@ -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 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 index 0000000..7dcdbce --- /dev/null +++ b/src/adafruit_blinka/microcontroller/beaglebone_black/pin.py @@ -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 = ( + (), +) + diff --git a/src/board.py b/src/board.py index 59005b0..4dab385 100755 --- a/src/board.py +++ b/src/board.py @@ -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: diff --git a/src/digitalio.py b/src/digitalio.py index 93b45a9..2ad41bc 100755 --- a/src/digitalio.py +++ b/src/digitalio.py @@ -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