Hello Sir,

Seth here. Here is an Adafruit_BBIO.GPIO example for handling a button 
(abort on Rising): I got it from "The BeagleBone Black Primer (McLaughlin 
2015)."

*import Adafruit_BBIO.GPIO as GPIO*

*Button = "P9_11"*

*GPIO.setup(Button, GPIO.IN)*

*if __name__=='__main__':*
*    try:*
*        while True:*
*            GPIO.wait_for_edge(Button, GPIO.RISING)*
*    except KeyboardInterrupt:*
*        GPIO.cleanup()*

This example is on page 174.

Seth

P.S. I hope this helps a bit. I paraphrased but this is the oomph of it 
all. If you are going to need other ideas, please let me know. I know, from 
my own personal experience, that the BUSIO source may not be able to be 
called w/ it working on this specific controller. I read, about a year 
back, about how Circuit Python is trying to branch out and how some people 
were trying to get it to work on the BBB. I am not convinced that it works 
yet but I will research this idea more.

On Monday, March 1, 2021 at 9:31:25 PM UTC-6 set_ wrote:

> Hello,
>
> Are you using BBB_IO or Adafruit_BBIO? 
>
> Either way, here is a start w/ Adafruit_BBIO:
>
> *import serial *
> *import Adafruit_BBIO.UART as UART *
> *from time import sleep*
>  
>
> *UART.setup("UART2") *
> *ser=serial.Serial("/dev/ttyS2", 9600) *
>
> *class GPS: *
> *    def __init__(self)*
>
> and then...
>
> If you want to add a button, just use a GPIO from Adafruit_BBIO again. So, 
> that example will look like this:
>
> *import Adafruit_BBIO.GPIO as GPIO*
> *from time import sleep*
>
> *pinOne = 'P8_11'*
> *GPIO.setup(pinOne, GPIO.IN <http://GPIO.IN>)*
>
> *while True:*
> *    if GPIO.input(pinOne):*
> *        print("The Button Shall get pressed Again or whatever...")*
> *    sleep(2)*
>
> That is a simplistic approach. I got that source from an older book: 
> "Getting Started with BeagleBone (Richardson 2013)."
>
> There are some neat examples in that book but nothing too complicated. It 
> would be a refresher to see what was then and what has changed.
>
> Anyway, I hope that works for you. That button function should just work. 
> You can always do better and make it on an edge. Falling, Rising, or Both 
> w/ that same lib.
>
> Seth
>
>
>
> On Monday, March 1, 2021 at 7:14:01 PM UTC-6 set_ wrote:
>
>> Hello,
>>
>> I am receiving errors w/ the .dtbo only. I am too far from outside to 
>> communicate w/ my GPS and I am receiving no feedback w/ pyserial on my BBG 
>> (BeagleBone Green). I tried installing a serial lib. w/ sudo apt install 
>> python3-serial, also.
>>
>> I just downloaded/installed the docs in .epub/html format on my hard 
>> drive. I am thinking it may or may not be Adafruit_BBIO. I am also thinking 
>> that it may be or may not be pyserial. The intallation w/ apt was faulty 
>> from the get-go.
>>
>> I can use config-pin p9.21 uart && config-pin p9.22 uart and have that 
>> command turn successful.
>>
>> ...
>>
>> It may be a faulty effort in an update from pyserial but I am not sure 
>> yet. If this means anything, please let me know:
>>
>>     ^CTraceback (most recent call last):
>>       File "./FirstGPS.py", line 87, in <module>
>>         myGPS.read()
>>       File "./FirstGPS.py", line 47, in read
>>         while ser.inWaiting() == 0:
>>       File 
>> "/home/debian/.local/lib/python3.7/site-packages/serial/serialutil.py", 
>> line 593, in inWaiting
>>         def inWaiting(self):
>>     KeyboardInterrupt
>>
>> The above error is only when I make no call to config-pin w/out a .dtbo 
>> loaded. Also, pyserial is listed...
>>
>> Now...this source below is after making a config-pin call to P9.21/22 and 
>> trying to exit my program:
>>
>>         ^CTraceback (most recent call last):
>>       File "./FirstGPS.py", line 87, in <module>
>>         myGPS.read()
>>       File "./FirstGPS.py", line 47, in read
>>         while ser.inWaiting() == 0:
>>       File 
>> "/home/debian/.local/lib/python3.7/site-packages/serial/serialutil.py", 
>> line 594, in inWaiting
>>         return self.in_waiting
>>       File 
>> "/home/debian/.local/lib/python3.7/site-packages/serial/serialposix.py", 
>> line 549, in in_waiting
>>         s = fcntl.ioctl(self.fd, TIOCINQ, TIOCM_zero_str)
>>     KeyboardInterrupt
>>
>> Both...are screaming to me about pyserial and those specific locations. I 
>> add print statements and receive nothing back. So, I think my source, which 
>> is an update from Python2 (from utf-8 to bytes) to Python3, is faulty.
>>
>> I can show you in case you are wondering. I am just updating some source 
>> I found a while back.
>>
>> Seth
>>
>>
>> On Monday, March 1, 2021 at 6:47:56 PM UTC-6 donp...@gmail.com wrote:
>>
>>> You prompted me to recheck how I'm accessing the two peripherals I did 
>>> get to install, the UART and the I2C. I'm only sending messages out over 
>>> the UART using pyserial, although I do also use minicom to bi-directionally 
>>> communicate with the board under test from the BBB Ubuntu command line. For 
>>> the I2C I'm using the Adafruit char LCD library, which relies on busio from 
>>> Circuit Python. Still an Adafruit product, but not technically the BBB_IO 
>>> library, I guess.
>>>
>>> If anyone can give tips on how to do a button-based interrupt (abort) 
>>> without BBB_IO, I'm all ears. I guess I could just start programming the 
>>> BBB in C. I already program embedded microcontrollers in that language, so 
>>> why not SBC?
>>>
>>>
>>> --
>>> Don Pancoe, P.E.
>>> Industrial Designer, Electrical Engineer
>>> DonPancoe.com <http://donpancoe.com/>
>>>
>>> On Mon, Mar 1, 2021 at 4:27 PM set_ <fun...@gmail.com> wrote:
>>>
>>>> Hello,
>>>>
>>>> I literally am havin' the same issue as you right now w/ a GPS module 
>>>> working w/ BB-UART2-00A0.dtbo and a grove connector. This is my error:
>>>>
>>>> *py_setup_uart(UART2): set_pin_mode() failed for pin=P9_22Traceback 
>>>> (most recent call last):*
>>>> *  File "FirstGPS.py", line 5, in <module>*
>>>> *    UART.setup("UART2")*
>>>> *ValueError: Set pin mode failed for uart channel.*
>>>>
>>>> I think things are changing at some point in some way at some level. 
>>>> Vague...yes. I can set up my source w/out the .dtbo and use config-pin to 
>>>> set my uart2 pins to have my source 'work.'
>>>>
>>>> Anyway, I will be following along to see how far you get b/c right now, 
>>>> I am a  little stumped as to why what has worked no longer is viable.
>>>>
>>>> Seth
>>>>
>>>> On Monday, March 1, 2021 at 12:27:01 PM UTC-6 donp...@gmail.com wrote:
>>>>
>>>>> Hello all,
>>>>>
>>>>> I have a BBB Python application (PCBA test fixture) where I am using 
>>>>> libpruio, specifically for access to the eCAP pins. Libpruio requires 
>>>>> that 
>>>>> the universal cape be disabled, but when I needed a UART and I2C, I was 
>>>>> able to add those back in using the existing dtbo files from 
>>>>> /lib/firmware 
>>>>> (shown below) in my uEnv.txt.
>>>>>
>>>>> uboot_overlay_addr0=/lib/firmware/BB-I2C1-00A0.dtbo
>>>>> uboot_overlay_addr1=/lib/firmware/BB-UART4-00A0.dtbo
>>>>> uboot_overlay_addr2=/lib/firmware/DP-GPIO-PCBATest-00A0.dtbo (I talk 
>>>>> about this below)
>>>>>
>>>>>
>>>>> Now I want to add an "abort" button to the test fixture since the 
>>>>> technicians have reported it takes a lot of time to reset if the board 
>>>>> under test locks up. I expect that wiring a pushbutton to a GPIO with an 
>>>>> interrupt is the way to handle this, and I've been thinking that there 
>>>>> are 
>>>>> two ways to get there.
>>>>>
>>>>>    1. Include another dtbo file to add a single GPIO that I can then 
>>>>>    access with Adafruit_BBIO (this is where my efforts have focused so 
>>>>> far), or
>>>>>    2. Figure out how to work with the hardware-based IRQ of the PRU  
>>>>>    with libpruio (which I've been avoiding because it looks even more 
>>>>> scary)
>>>>>
>>>>> I've tried to make a custom dtbo by following an example from Derek 
>>>>> Molloy (github.com/derekmolloy/boneDeviceTree) and while it compiled 
>>>>> and booted OK, I still get the following error when I run a simple test 
>>>>> program. The same error as when I tried running the program before I 
>>>>> created the dtbo.
>>>>>
>>>>> kapsul@beaglebone:~/pyDev$ sudo python3 abortTest.py
>>>>> Traceback (most recent call last):
>>>>>   File "abortTest.py", line 6, in <module>
>>>>>     GPIO.setup("P9_12", GPIO.IN)
>>>>> ValueError: Set gpio mode failed, missing file or invalid permissions.
>>>>>
>>>>>
>>>>> Further, when I do the following (with or without the dtbo), I get the 
>>>>> following...
>>>>>
>>>>> kapsul@beaglebone:~/pyDev$ config-pin -q p9.12
>>>>> P9_12 pinmux file not found!
>>>>> Cannot read pinmux file: 
>>>>> /sys/devices/platform/ocp/ocp*P9_12_pinmux/state
>>>>>
>>>>>
>>>>> Any input would be appreciated, whether it is correcting me on path 1 
>>>>> or steering me towards path 2. I will happily provide any additional 
>>>>> info, 
>>>>> but I didn't want to start uploading stuff until I know what, exactly, 
>>>>> will 
>>>>> be helpful.
>>>>>
>>>>> Thanks,
>>>>> --
>>>>> Don Pancoe, P.E.
>>>>> Industrial Designer, Electrical Engineer
>>>>> DonPancoe.com <http://donpancoe.com/>
>>>>>
>>>> -- 
>>>> For more options, visit http://beagleboard.org/discuss
>>>> --- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "BeagleBoard" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to beagleboard...@googlegroups.com.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/beagleboard/58e45b18-f019-49e7-92ce-95015cbc0e63n%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/beagleboard/58e45b18-f019-49e7-92ce-95015cbc0e63n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to beagleboard+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beagleboard/0a16689a-2dea-4d16-a2ad-cf489bb60b22n%40googlegroups.com.

Reply via email to