No. I am not familiar with that, Mark.  I found Strawson's reference to it 
online but it doesn't explain what it is or what it does.   Is there a 
better reference somewhere? Google didn't bring up anything that looked 
useful.


On Thursday, February 18, 2021 at 10:37:59 AM UTC-5 Mark A. Yoder wrote:

> Have you tried starting a pthread that sleeps for 20 ms and then it stops 
> the read?
>
> On Thursday, February 18, 2021 at 10:35:04 AM UTC-5 
> wal...@edenconceptsllc.com wrote:
>
>> Mark, 
>>
>> I use usleep a lot but in this case I don't want to pause.  I want to 
>> keep reading the sensors for N milliseconds.   I do pause between reads 
>> using usleep(20000) to create a 20ms delay between sensor reads.   I 
>> started with a routine that essentially counts up the amount of time by 
>> estimating how long the sensor read routine takes plus the fixed delay time 
>> between sensor reads and accumulating this value in a while loop until it 
>> reaches the 'stop value' that is approximately the time the valve needs to 
>> stay on.  But this is sketchy and I don't like it.  Lots could go wrong.   
>>
>> In essence, I'm looking to interrupt the sensor read procedure after N 
>> milliseconds pass.   
>>
>> Walter
>>
>>
>> On Thursday, February 18, 2021 at 10:29:44 AM UTC-5 Mark A. Yoder wrote:
>>
>>> Walter:
>>>   It's good to hear you have the PRUs working.  I still think if all you 
>>> need is millisecond timing the PRUs are over kill.
>>>
>>> In C you can use *usleep()* and pass it the number of microseconds you 
>>> want to pause.
>>>
>>> --Mark
>>> On Thursday, February 18, 2021 at 10:00:10 AM UTC-5 
>>> wal...@edenconceptsllc.com wrote:
>>>
>>>> I've gone through the cookbook and it's very helpful. 
>>>>
>>>> I'm still fuzzy on how to do what I need to do.  
>>>>
>>>> My main code for controlling the valves, getting user input, etc. is in 
>>>> C.  
>>>>
>>>> I need to call a procedure in C that reads sensors.  I will pass this 
>>>> procedure the number of milliseconds it should read the sensors and then 
>>>> return to the main program and turn the valves off.   The number of 
>>>> milliseconds can, and will likely, change depending on what we are 
>>>> processing with these valves.   I get that input at the start of the main 
>>>> program.    
>>>>
>>>> My thought is that in the procedure that reads the sensors, it will 
>>>> grab a start time (doesn't have to be actual time) value from the PRU, 
>>>> read 
>>>> the sensors, and loop until the current time-start time equals the amount 
>>>> of time it should read the sensors.  Then it will return to the main 
>>>> program.
>>>>
>>>> I just don't know how to read the PRU's clock to get the time values.  
>>>>  I don't think I saw an example in the cookbook for 'branching' out from a 
>>>> main program to use the PRUs for this type of processing.  Just point me 
>>>> in 
>>>> the right direction, please.
>>>>
>>>> Walter
>>>>
>>>>
>>>> On Thursday, February 18, 2021 at 9:27:34 AM UTC-5 Walter Cromer wrote:
>>>>
>>>>> Mark ,
>>>>>
>>>>> It is working with the updated OS.  Thanks so much!   
>>>>>
>>>>> Now I will explore how to get the simple timing that I need using the 
>>>>> PRU.
>>>>>
>>>>> On Thursday, February 18, 2021 at 8:54:10 AM UTC-5 Walter Cromer wrote:
>>>>>
>>>>>> Mark, 
>>>>>>
>>>>>> With the current OS there isn't a /dev/remoteproc even.   
>>>>>>
>>>>>> I'm going to try the updated OS build this morning.  
>>>>>>
>>>>>> Walter
>>>>>>
>>>>>> On Wednesday, February 17, 2021 at 5:34:37 PM UTC-5 Mark A. Yoder 
>>>>>> wrote:
>>>>>>
>>>>>>> I fired up the Beagle at home it the PRU works out of the box.
>>>>>>>
>>>>>>> What do you get running
>>>>>>> *ls /dev/remoteproc*
>>>>>>>
>>>>>>> I get:
>>>>>>> *ls -ls /dev/remoteproc*
>>>>>>> total 0
>>>>>>> 0 lrwxrwxrwx 1 root root 33 Feb 17 17:26 pruss-core0 -> 
>>>>>>> /sys/class/remoteproc/remoteproc1
>>>>>>> 0 lrwxrwxrwx 1 root root 33 Feb 17 17:26 pruss-core1 -> 
>>>>>>> /sys/class/remoteproc/remoteproc2
>>>>>>>
>>>>>>> If you are missing pruss-core0 and pruss-core1 you could try adding 
>>>>>>> the links by hand and see what happens.
>>>>>>>
>>>>>>> *cd /dev/remoteproc*
>>>>>>>
>>>>>>> *sudo ln -s /sys/class/remoteproc/remoteproc1 pruss-core0*
>>>>>>> *sudo ln -s /sys/class/remoteproc/remoteproc2 pruss-core1*
>>>>>>> On Wednesday, February 17, 2021 at 3:56:21 PM UTC-5 
>>>>>>> wal...@edenconceptsllc.com wrote:
>>>>>>>
>>>>>>>> I'll get this one onto an SD card and give it a try.   If I can 
>>>>>>>> just get this configured I think I can make quick work of this 
>>>>>>>> problem!  
>>>>>>>>
>>>>>>>> On Wednesday, February 17, 2021 at 3:47:04 PM UTC-5 Mark A. Yoder 
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Good point, it should work....  I'm running a newer test image[1], 
>>>>>>>>> but I took my Beagle home so I can't do a quick check on it until 
>>>>>>>>> later.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --Mark
>>>>>>>>> [1]
>>>>>>>>> https://rcn-ee.com/rootfs/bb.org/testing/2021-02-15/buster-iot/bone-debian-10.8-iot-armhf-2021-02-15-4gb.img.xz
>>>>>>>>>  
>>>>>>>>>
>>>>>>>>> On Wednesday, February 17, 2021 at 2:46:35 PM UTC-5 
>>>>>>>>> wal...@edenconceptsllc.com wrote:
>>>>>>>>>
>>>>>>>>>> I asked because the ones on the page @ the link are older than 
>>>>>>>>>> the one I have installed.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Wednesday, February 17, 2021 at 2:30:58 PM UTC-5 Mark A. Yoder 
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> On newer versions of the SD card image /var/lib/cloud9 is a git 
>>>>>>>>>>> repo which you can do a git pull to update.  Your version is too 
>>>>>>>>>>> old.
>>>>>>>>>>>
>>>>>>>>>>> Follow the instructions at: 
>>>>>>>>>>> https://markayoder.github.io/PRUCookbook/02start/start.html#_installing_the_latest_os_on_your_bone
>>>>>>>>>>>  
>>>>>>>>>>> to download and install an updated version of the SD card image.
>>>>>>>>>>>
>>>>>>>>>>> --Mark
>>>>>>>>>>>
>>>>>>>>>>> On Wednesday, February 17, 2021 at 2:25:40 PM UTC-5 
>>>>>>>>>>> wal...@edenconceptsllc.com wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Mark, 
>>>>>>>>>>>>
>>>>>>>>>>>> git pull on /var/lib/cloud9 fails with 'fatal: Not a git 
>>>>>>>>>>>> repository (or any of the parent directories): .git 
>>>>>>>>>>>>
>>>>>>>>>>>> I'm such a neophyte on git.  What do I need to do?
>>>>>>>>>>>>
>>>>>>>>>>>> And, what do you mean by updating to a new version of the SD 
>>>>>>>>>>>> card? The OS is booting from the SD card and the version.sh 
>>>>>>>>>>>> information 
>>>>>>>>>>>> posted earlier is based on that.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Wednesday, February 17, 2021 at 2:02:55 PM UTC-5 Mark A. 
>>>>>>>>>>>> Yoder wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> I suggest updating to a new version of the SD card.  It looks 
>>>>>>>>>>>>> like the PRUs are getting started at boot time, but the path 
>>>>>>>>>>>>> isn't setup 
>>>>>>>>>>>>> right. I think we setup some links so the path* 
>>>>>>>>>>>>> /dev/remoteproc/pruss-core0/state  
>>>>>>>>>>>>> *points to the right place.
>>>>>>>>>>>>>
>>>>>>>>>>>>> You could also try:
>>>>>>>>>>>>> *cd */var/lib/cloud9
>>>>>>>>>>>>> *git* pull
>>>>>>>>>>>>> to update cloud9 folders.
>>>>>>>>>>>>>
>>>>>>>>>>>>> --Mark
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Wednesday, February 17, 2021 at 1:53:35 PM UTC-5 
>>>>>>>>>>>>> wal...@edenconceptsllc.com wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Mark, 
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I got the latest PRUCookbook downloaded and when trying to 
>>>>>>>>>>>>>> make the hello.pru0.c program in 1.6, I got this error.  
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> *debian@beaglebone:/var/lib/cloud9/PRUCookbook/docs/02start/code$
>>>>>>>>>>>>>>  
>>>>>>>>>>>>>> make TARGET=hello.pru0*
>>>>>>>>>>>>>> */var/lib/cloud9/common/Makefile:29: 
>>>>>>>>>>>>>> MODEL=TI_AM335x_BeagleBone_Black,TARGET=hello.pru0*
>>>>>>>>>>>>>> *-    Stopping PRU 0*
>>>>>>>>>>>>>> */bin/sh: 1: cannot create /dev/remoteproc/pruss-core0/state: 
>>>>>>>>>>>>>> Directory nonexistent*
>>>>>>>>>>>>>> *Cannot stop 0*
>>>>>>>>>>>>>> *CC      hello.pru0.c*
>>>>>>>>>>>>>> *"/var/lib/cloud9/common/prugpio.h", line 53: warning 
>>>>>>>>>>>>>> #1181-D: #warning directive: "Found am335x"*
>>>>>>>>>>>>>> *LD      /tmp/cloud9-examples/hello.pru0.o*
>>>>>>>>>>>>>> *-       copying firmware file 
>>>>>>>>>>>>>> /tmp/cloud9-examples/hello.pru0.out to 
>>>>>>>>>>>>>> /lib/firmware/am335x-pru0-fw*
>>>>>>>>>>>>>> *cp: cannot create regular file 
>>>>>>>>>>>>>> '/lib/firmware/am335x-pru0-fw': Permission denied*
>>>>>>>>>>>>>> */var/lib/cloud9/common/Makefile:180: recipe for target 
>>>>>>>>>>>>>> 'install' failed*
>>>>>>>>>>>>>> *make: *** [install] Error 1*
>>>>>>>>>>>>>> *rm /tmp/cloud9-examples/hello.pru0.o*
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>  Initially, I did not have a folder called 
>>>>>>>>>>>>>> /var/lib/cloud9/common.  To remedy this I copied the contents of 
>>>>>>>>>>>>>> /var/lib/cloud9/PRUCookbook/docs/common to 
>>>>>>>>>>>>>> /var/lib/cloud9/common.  Maybe 
>>>>>>>>>>>>>> this created a problem?Nevertheless,  I found some other 
>>>>>>>>>>>>>> discussions that 
>>>>>>>>>>>>>> suggested updating the scripts and kernels from 
>>>>>>>>>>>>>> beagleboard.org/upgrade which I did.  I am now running...
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Linux beaglebone 4.14.108-ti-r137 #1stretch SMP PREEMPT Tue 
>>>>>>>>>>>>>> Aug 25 01:48:39 UTC 2020 armv7l GNU/Linux
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> And the output of version.sh is 
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> *debian@beaglebone:/$ sudo opt/scripts/tools/version.sh*
>>>>>>>>>>>>>> *[sudo] password for debian:*
>>>>>>>>>>>>>> *git:/opt/scripts/:[e4e4854ef8ff9ada5c85553376043ee7679167ca]*
>>>>>>>>>>>>>> *eeprom:[A335BNLT00C04417BBBK1847]*
>>>>>>>>>>>>>> *model:[TI_AM335x_BeagleBone_Black]*
>>>>>>>>>>>>>> *dogtag:[BeagleBoard.org Debian Image 2018-10-07]*
>>>>>>>>>>>>>> *bootloader:[microSD-(push-button)]:[/dev/mmcblk0]:[U-Boot 
>>>>>>>>>>>>>> SPL 2018.09-00002-g0b54a51eee (Sep 10 2018 - 19:41:39 
>>>>>>>>>>>>>> -0500)]:[location: dd 
>>>>>>>>>>>>>> MBR]*
>>>>>>>>>>>>>> *bootloader:[microSD-(push-button)]:[/dev/mmcblk0]:[U-Boot 
>>>>>>>>>>>>>> 2018.09-00002-g0b54a51eee]:[location: dd MBR]*
>>>>>>>>>>>>>> *bootloader:[eMMC-(default)]:[/dev/mmcblk1]:[U-Boot SPL 
>>>>>>>>>>>>>> 2018.03-00002-gac9cce7c6a (Apr 05 2018 - 13:07:46 
>>>>>>>>>>>>>> -0500)]:[location: dd 
>>>>>>>>>>>>>> MBR]*
>>>>>>>>>>>>>> *bootloader:[eMMC-(default)]:[/dev/mmcblk1]:[U-Boot 
>>>>>>>>>>>>>> 2018.03-00002-gac9cce7c6a]:[location: dd MBR]*
>>>>>>>>>>>>>> *UBOOT: Booted Device-Tree:[am335x-boneblack-uboot-univ.dts]*
>>>>>>>>>>>>>> *kernel:[4.14.108-ti-r137]*
>>>>>>>>>>>>>> *nodejs:[v6.14.4]*
>>>>>>>>>>>>>> */boot/uEnv.txt Settings:*
>>>>>>>>>>>>>> *uboot_overlay_options:[enable_uboot_overlays=1]*
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> *uboot_overlay_options:[uboot_overlay_addr0=/lib/firmware/BB-W1-P9.12-00A0.dtbo]*
>>>>>>>>>>>>>> *uboot_overlay_options:[disable_uboot_overlay_video=1]*
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> *uboot_overlay_options:[uboot_overlay_pru=/lib/firmware/AM335X-PRU-RPROC-4-14-TI-00A0.dtbo]*
>>>>>>>>>>>>>> *uboot_overlay_options:[enable_uboot_cape_universal=1]*
>>>>>>>>>>>>>> *pkg check: to individually upgrade run: [sudo apt install 
>>>>>>>>>>>>>> --only-upgrade <pkg>]*
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> *pkg:[bb-cape-overlays]:[4.4.20180928.0-0rcnee0~stretch+20180928]*
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> *pkg:[bb-customizations]:[1.20180815-0rcnee0~stretch+20180815]*
>>>>>>>>>>>>>> *WARNING:pkg:[bb-usb-gadgets]:[NOT_INSTALLED]*
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> *pkg:[bb-wl18xx-firmware]:[1.20180517-0rcnee0~stretch+20180517]*
>>>>>>>>>>>>>> *pkg:[kmod]:[23-2rcnee1~stretch+20171005]*
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> *pkg:[librobotcontrol]:[1.0.3-git20181005.0-0rcnee0~stretch+20181005]*
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> *pkg:[firmware-ti-connectivity]:[20170823-1rcnee1~stretch+20180328]*
>>>>>>>>>>>>>> *groups:[debian : debian adm kmem dialout cdrom floppy audio 
>>>>>>>>>>>>>> dip video plugdev users systemd-journal i2c bluetooth netdev 
>>>>>>>>>>>>>> cloud9ide gpio 
>>>>>>>>>>>>>> pwm eqep admin spi tisdk weston-launch xenomai]*
>>>>>>>>>>>>>> *cmdline:[console=ttyO0,115200n8 
>>>>>>>>>>>>>> bone_capemgr.uboot_capemgr_enabled=1 root=/dev/mmcblk0p1 ro 
>>>>>>>>>>>>>> rootfstype=ext4 
>>>>>>>>>>>>>> rootwait coherent_pool=1M net.ifnames=0 quiet]*
>>>>>>>>>>>>>> *dmesg | grep remote*
>>>>>>>>>>>>>> *[    1.147260] remoteproc remoteproc0: wkup_m3 is available*
>>>>>>>>>>>>>> *[    1.231303] remoteproc remoteproc0: powering up wkup_m3*
>>>>>>>>>>>>>> *[    1.231426] remoteproc remoteproc0: Booting fw image 
>>>>>>>>>>>>>> am335x-pm-firmware.elf, size 217168*
>>>>>>>>>>>>>> *[    1.233981] remoteproc remoteproc0: remote processor 
>>>>>>>>>>>>>> wkup_m3 is now up*
>>>>>>>>>>>>>> *[  108.634522] remoteproc remoteproc1: 4a334000.pru is 
>>>>>>>>>>>>>> available*
>>>>>>>>>>>>>> *[  108.656634] remoteproc remoteproc2: 4a338000.pru is 
>>>>>>>>>>>>>> available*
>>>>>>>>>>>>>> *dmesg | grep pru*
>>>>>>>>>>>>>> *[  108.019424] pruss 4a300000.pruss: creating PRU cores and 
>>>>>>>>>>>>>> other child platform devices*
>>>>>>>>>>>>>> *[  108.634522] remoteproc remoteproc1: 4a334000.pru is 
>>>>>>>>>>>>>> available*
>>>>>>>>>>>>>> *[  108.634642] pru-rproc 4a334000.pru: PRU rproc node 
>>>>>>>>>>>>>> /ocp/pruss_soc_bus@4a326004/pruss@0/pru@34000 probed 
>>>>>>>>>>>>>> successfully*
>>>>>>>>>>>>>> *[  108.656634] remoteproc remoteproc2: 4a338000.pru is 
>>>>>>>>>>>>>> available*
>>>>>>>>>>>>>> *[  108.656808] pru-rproc 4a338000.pru: PRU rproc node 
>>>>>>>>>>>>>> /ocp/pruss_soc_bus@4a326004/pruss@0/pru@38000 probed 
>>>>>>>>>>>>>> successfully*
>>>>>>>>>>>>>> *dmesg | grep pinctrl-single*
>>>>>>>>>>>>>> *[    0.783913] pinctrl-single 44e10800.pinmux: 142 pins at 
>>>>>>>>>>>>>> pa f9e10800 size 568*
>>>>>>>>>>>>>> *dmesg | grep gpio-of-helper*
>>>>>>>>>>>>>> *[    0.796624] gpio-of-helper ocp:cape-universal: ready*
>>>>>>>>>>>>>> *lsusb*
>>>>>>>>>>>>>> *Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root 
>>>>>>>>>>>>>> hub*
>>>>>>>>>>>>>> *END*
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Any ideas?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Wednesday, February 17, 2021 at 10:10:53 AM UTC-5 Mark A. 
>>>>>>>>>>>>>> Yoder wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> The PRUs can give you 10's of ns timing, which is more than 
>>>>>>>>>>>>>>> good enough for milliseconds, but might be over kill.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I'd think using C on the ARM processor should be fast 
>>>>>>>>>>>>>>> enough.  I'd use gpiod[1].
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> If you really want the ns timing of the PRUs, check out the 
>>>>>>>>>>>>>>> PRU Cookbook[2]
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --Mark
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> [1] https://github.com/starnight/libgpiod-example
>>>>>>>>>>>>>>> [2] https://github.com/MarkAYoder/PRUCookbook
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Tuesday, February 16, 2021 at 10:51:11 AM UTC-5 
>>>>>>>>>>>>>>> pierric...@gadz.org wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Depending on how precise you need to be, I would go for the 
>>>>>>>>>>>>>>>> PRU-ICSS. They can control the GPIOs pretty easily. 
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Le mardi 16 février 2021 à 10:03:47 UTC-5, 
>>>>>>>>>>>>>>>> wal...@edenconceptsllc.com a écrit :
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> I have a BBB Wireless running Linux beaglebone 
>>>>>>>>>>>>>>>>> 4.14.108-ti-r106 #1 SMP PREEMPT Fri May 24 22:12:34 UTC 2019 
>>>>>>>>>>>>>>>>> armv7l 
>>>>>>>>>>>>>>>>> GNU/Linux
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> I am writing in C.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> I turn a valve on and then need to read some sensors for N 
>>>>>>>>>>>>>>>>> milliseconds and then turn the valve off.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> What's the best way to read milliseconds on the BBBw?  I 
>>>>>>>>>>>>>>>>> don't have a RTC on this particular unit but could add one 
>>>>>>>>>>>>>>>>> using I2C.  I 
>>>>>>>>>>>>>>>>> have an Adafruit 4282 with a DS3231 RTC on it on another BBBw 
>>>>>>>>>>>>>>>>> that I could 
>>>>>>>>>>>>>>>>> use temporarily to prove it works.  What other options are 
>>>>>>>>>>>>>>>>> available?
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>

-- 
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/85fc5899-644e-4fc9-9bc4-a31d2fedf268n%40googlegroups.com.

Reply via email to