I might be wrong but I think doing fseek() on a GPIO "device" isn't quite 
correct.

A GPIO device is more like a char device not a block device were you can 
actually seek it. So you are only limited to write 1 or 0, the delay in 
between is set by you plus all the variance that a common not-RT OS adds to 
it. We know that these are exposed on /sys fs and not on /dev where you can 
actually see if you are dealing with a char or block device.

For a more precise bit banging PRUSS is the way to do it IMHO.

On Friday, October 18, 2013 7:22:17 PM UTC-3, Paul Tan wrote:
>
> Thanks, I'll try to see if there is a difference with libsoc or not. 
>  However, I did manage to get it working with low level unix i/o (open, 
> write) instead of the buffered stream i/o (fopen, fwrite).  It works 
> correctly, I didn't need a seek operation, and I was able to get pulse 
> widths down to 10uS reliably.  Interesting difference though: fwrite 
> to "/sys/class/gpio/export" succeeds even if GPIO30 was already exported, 
> but write to "/sys/class/gpio/export" fails if GPIO30 was already exported.
>
> In case anyone's wondering why I'm trying to get really short pulses, I'm 
> trying to connect an iGaging DRO slides to a BeagleBone Black (yeah, I'm 
> trying to CNC my lathe using a DRO closed loop servo with my Dual Motor 
> Controller Capes).  Scoping out my iGaging DRO, I found that the builtin 
> controller uses 24uS pulses with a 128uS duty cycle.  I'm working off of 
> Yuriy's work on the Arduino (http://www.yuriystoys.com/p/android-dro.html), 
> but trying it on the BeagleBone.
>
> Paul Tan.
> http://exadler.com
> http://exadler.blogspot.com
>
>
>
> On Friday, October 18, 2013 1:26:31 PM UTC-4, Jack Mitchell wrote:
>>
>> On 18/10/2013 18:14, Paul Tan wrote: 
>> > I'm having some weirdness that I don't quite understand.  I'm trying to 
>> > just toggle a GPIO pin (GPIO30) on and off using C and just the file 
>> > subsystem.  Everything seems to work if there is a delay between the 
>> > fseek and the fwrite.  See this pastebin for the relevant code 
>> > http://pastebin.com/Ftvv0nvE.  As it is, it works.  If you uncomment 
>> the 
>> > code, instead of creating a square wave on the oscilloscope, it just 
>> > creates pulse spikes (i.e. short on times).  Can someone explain what 
>> is 
>> > happening?  I'm working off a stock BeagleBone Black, no updates (I 
>> > wanted to make sure the code worked on all versions, as people would be 
>> > getting their BBB and trying it directly). 
>> > 
>> > Paul Tan. 
>> > http://exadler.blogspot.com 
>> > http://exadler.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 [email protected]. 
>> > For more options, visit https://groups.google.com/groups/opt_out. 
>>
>> Hi Paul 
>>
>> If you don't object to using a library there is libsoc[1] which is made 
>> for this exact purpose. If nothing else, you could see if the same 
>> behavior is observed using it? 
>>
>> https://github.com/jackmitch/libsoc 
>>
>> Cheers, 
>> Jack. 
>>
>> -- 
>>
>>    Jack Mitchell ([email protected]) 
>>    Embedded Systems Engineer 
>>    http://www.embed.me.uk 
>>
>> -- 
>>
>

-- 
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