Well if you all need / want a C/C++ PWM library. Sounds like you all best
get started :)


On Wed, Nov 13, 2013 at 6:14 PM, <[email protected]> wrote:

> Neils,
>
> I completely agree with your comments on there needing to be a C/C++
> equivalent to the bonescript.  With beaglebone 3.8.13, I am able to
> successfully control a PWM actuator following Mark Yoder's example: (
> http://elinux.org/EBC_Exercise_13_Pulse_Width_Modulation), almost exactly
> the procedure Michael Vernier posted above.  However, it will only work
> after I run a bonescript analogWrite() on the PWM pin.  It took some
> digging to reverse engineer the
> \bonescript-master\node_modules\bonescript\index.js::analogWrite() to
> determine what it is doing that afterwards allows me to successfully use
> the PWM device.
>
> The analogWrite sets the PWM polarity to zero during the configuration of
> the PWM:  "fs.writeFileSync(pwm_test+'/polarity', 0);"
>
> A similar operation from my C++ side resolved my issue and allowed me to
> use the PWM device successfully: system("cd
> /sys/devices/ocp.2/pwm_test_P9_21.14; echo 0 > polarity");
>
> -Shaun
>
> On Friday, May 3, 2013 4:27:20 PM UTC-5, [email protected] wrote:
>>
>> Thanks a lot. I was able to get an LED to blink using Angstrom with these
>> steps. Notably the Debian Squeeze install I made with the instructions
>> here: http://eewiki.net/display/linuxonarm/BeagleBone+Black only
>> partially worked. The link for the PWM showed up but there were no "duty"
>> and "period" files in the folder.
>>
>> I was going to investigate reverse engineering bonescript but it wasn't
>> clear to me that PWM was supported there in the first place. I think
>> ideally there ought to be an official C/C++ library to complement the
>> bonescript API. When I first booted the board I really expected there to be
>> a libbeaglebone or some such thing for me to link to. I see a number of
>> such libraries cropped up for the last revision of beaglebone but they
>> didn't seem really seem to be promoted by the beagleboard folks. I would
>> really like to encourage them to make some effort to make C/C++ a first
>> class citizen when it comes to IO. At the very least I think it's important
>> that reverse engineering bonescript is not the best option for getting
>> going in C/C++. A simple cheat sheet of instructions like Michael presented
>> linked on the beaglebone.org website would be enough to feel like I was
>> being supported.
>>
>> Thanks,
>> Neils
>>
>> On Friday, May 3, 2013 12:11:43 PM UTC-7, Michael Vernier wrote:
>>>
>>> I got PWM working on my BBB from the command line the other day.  Here's
>>> what I did on Angstrom (4/13 image).
>>>
>>> Add the am33xx_pwm module to the bone_capemgr.  You'll have to look at
>>> your BBB for the # of the cape manager.  Mine is bone_capemgr.8, but since
>>> I've only tested on a single board, I'm not sure if the numbers are the
>>> same across every board.
>>> $ echo am33xx_pwm > /sys/devices/bone_capemgr.#/slots
>>>
>>> Add the individual PWM module to the bone_capemgr. For example, EHRPWM2B
>>> is pin 13 on the P8 connector.  To enable this pin for PWM, use the
>>> following command
>>> $ echo bone_pwm_P8_13 > /sys/devices/bone_capemgr.#/slots
>>>
>>> This creates a link in /sys/devices/ocp.#/pwm_test_P8_13.#.  For my
>>> BBB, I have /sys/devices/ocp.2/pwm_test_P8_13.12.  The number in the
>>> pwm_test has changed for me for a couple times that I've used it, so you'll
>>> have to see what number it assigns for you.
>>>
>>> All the settings for the PWM configuration are found in that folder
>>> similar to the old interface.  To generate a 50 Hz signal with 50% duty
>>> cycle, (the period and duty times are giving in nanoseconds)
>>> $ echo 20000000 > /sys/devices/ocp.#/pwm_test_P8_13.#/period
>>> $ echo 10000000 > /sys/devices/ocp.#/pwm_test_P8_13.#/duty
>>>
>>> I found all this from digging through the BoneScript source code found
>>> here https://github.com/jadonk/bonescript.  
>>> bonescript/node_modules/bonescript/index.js
>>> has the core implementation of the module.
>>>
>>> Hope this helps.
>>>
>>> On Friday, May 3, 2013 1:21:43 PM UTC-4, Jason Stapels wrote:
>>>>
>>>> If the goal is a tutorial, the SYSFS interface does provide the
>>>> simplest way to ease someone into using PWM. I think that being able to
>>>> simply access it from the command-line does make it very approachable from
>>>> a beginner point of view. I agree that there is definitely more efficient
>>>> means for working with the PWM, but realistically if you need that low
>>>> level of interaction, you'll likely being using the /dev/mem device to
>>>> direct access to the registers (or using a polished C library that does it
>>>> for you).
>>>>
>>>> Also, as I understand it, the SYSFS interface is the only way to mux
>>>> the pins you'd need from userspace.
>>>>
>>>  --
> 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 [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to