ts-7000
[Top] [All Lists]

[ts-7000] Re: Generating a 25Khz wave on DIO pins

To:
Subject: [ts-7000] Re: Generating a 25Khz wave on DIO pins
From: "andygryc" <>
Date: Thu, 02 Nov 2006 21:53:20 -0000
Michael is right--sleep and usleep specify a minimum time that will 
be waited, not the exact amount.  They're defined in the POSIX 
specification that way because it would be impossible to schedule 
applications fairly and obey everyone's timing requests.

To get the timing you want, you'll have to do a spin loop.  To see 
an example of this, look at the assembly ARM code inside the ts7250 
LCD display example that's part of the Yahoo group Files.  Yes, spin 
loops will waste CPU, but for precise small timing needs you don't 
have much choice.  

Of course, you also need to realize that you won't be able to 
maintain a 25KHz waveform forever; the kernel will schedule another 
task eventually.  The only way to prevent this is to either move the 
logic into the FPGA (on the ts-7300) so it's not being generated by 
software at all, or to disable interrupts.

--Andy Gryc
President, Airchitex

--- In  "Michael Schmidt" <> 
wrote:
>
> > Hi all,
> >
> > I have a 7250 board and am looking to generate a 25Khz square 
wave on
> > a DIO pin.
> >
> > I am also running debian linux from a USB flash drive.
> >
> > I am able to generate a waveform (as seen on an oscilloscope) but
> > only at a maximum of 25Hz. I can not achieve a higher frequency. 
Here
> > is a snippit of my C code:
> >
> > while (1){
> >
> >     *PBDR = 0x01;
> >     usleep(20);
> >     *PBDR = 0x00;
> >     usleep(20);
> > }
> >
> > The usleep() function SHOULD sleep for 20us. However, I can only 
read
> > a 25Hz wave on the oscilloscope meaning that each pulse length is
> > 20ms.
> 
> usleep(20) will sleep a <i>minimum</i> of 20us.  What in fact is 
happening 
> is that your process is being rescheduled for the next clock tick, 
which 
> happens at 100Hz (10ms), times two is the 20ms period you are 
seeing.
> 
> Regards,
> 
> Michael
>





 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/ts-7000/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/ts-7000/join
    (Yahoo! ID required)

<*> To change settings via email:
     
    

<*> To unsubscribe from this group, send an email to:
    

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 

<Prev in Thread] Current Thread [Next in Thread>
Admin

Disclaimer: Neither Andrew Taylor nor the University of NSW School of Computer and Engineering take any responsibility for the contents of this archive. It is purely a compilation of material sent by many people to the birding-aus mailing list. It has not been checked for accuracy nor its content verified in any way. If you wish to get material removed from the archive or have other queries about the archive e-mail Andrew Taylor at this address: andrewt@cse.unsw.EDU.AU