To: | |
---|---|
Subject: | Re: [ts-7000] Re: Generating a 25Khz wave on DIO pins |
From: | |
Date: | Thu, 2 Nov 2006 16:31:26 -0600 |
Just in case anyone thinks the rtai extension might help... I've benchmarked P4s at a 20 usec period... it actually did work although linux was fairly unresponsive. But I've found the "practical" interrupt limit on a TS7250 board running rtai to be about 250 usec. This is the "out-of-the-box" rtai that TS provides -- there might be ways to hack something more. Still very good, mind you, but nothing close to 25kHz.
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/ __._,_.___
SPONSORED LINKS
Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required) Change settings via email: =Email Delivery: Digest | m("yahoogroups.com?subject","ts-7000-fullfeatured");=Change Delivery Format: Fully Featured">Switch to Fully Featured Visit Your Group | Yahoo! Groups Terms of Use | =Unsubscribe __,_._,___ |
<Prev in Thread] | Current Thread | [Next in Thread> |
---|---|---|
|
Previous by Date: | Re: [ts-7000] Generating a 25Khz wave on DIO pins, Joe Bouchard |
---|---|
Next by Date: | [ts-7000] Re: videodev.o for 2.4.26-ts9 kernel, pdaderko |
Previous by Thread: | [ts-7000] Re: Generating a 25Khz wave on DIO pins, Jesse Off |
Next by Thread: | Re: [ts-7000] Generating a 25Khz wave on DIO pins, Curtis Monroe |
Indexes: | [Date] [Thread] [Top] [All Lists] |
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