Re: introduce Delay in MPC565 !
"Mark Allison" <[email protected]> Fri, 25 Aug 2006 06:36:57 -0000
| Newsgroups | gmane.comp.hardware.motorola.microcontrollers |
|---|---|
| Message-ID | <[email protected]> |
Your system clock is 40Mhz. So the best you could possibly hope for would be a something clocked straight off system clock and that would only get you a resolution of 25ns. Best I can think of would be using the MIOS14 which would give you 50ns (fsys/2 max I think). Whatever you use, its going to be very inaccurate since, when you perform your initial read in your software, you have no idea how long it will be before the first clock comes in. Also (as has been mentioned previously) your code instructions will have more and more of an impact the accuracy as the tics get smaller. But if you wanted 10ns....I think you'd need a 565 with at least 200MHz under the bonnet :). mwa --- In [email protected], praveen <praveen672725@...> wrote: > > Hi , > OSCCLK is 4Mhz , > by using PLL we get , System Clock is Configured to 40Mhz. > > When System Clk is divided by 16 (as TBS bit in SCCR register is set to 1) > then the Per Count delay becomes 400 nano seconds.(T = 1/2.5Mhz = 400nsec) > But i want something minimum of 10 nano seconds in application. > Plz let me know configurations to be done to acheive this . > > - Praveen > > > Dobbin Allan-r11834 <Allan.Dobbin@...> wrote: > 1) is wrong - SCCR[TBS]=0 is OSCCLK divided by 4 or 16. OSCCLK is your external input clock frequency. > > Using "==" is risky because you could miss the count if you are running from slow memory or get an interrupt. > > - Allan > > ________________________________ > > From: [email protected] [mailto:[email protected]] On Behalf Of praveen > Sent: Thursday, August 17, 2006 6:07 AM > To: [email protected] > Subject: RE: [MPC500] introduce Delay in MPC565 !! > > Thanks for the reply > System Clk is at 40Mhz, and i am using TB with SCCR(TBS)=0. > So TMBClk division is set to 4. > > System Clock is : TB_FREQ = 40Mhz / 4 = 10Mhz > Per count Value Calculated is : TB_Count = 1 / TB_FREQ = 1/ 10Mhz = 10 nano sec > Hence the delay per count got is = 10 nano sec. > 1) Is the above way derived is correct ? > > Consider 1000 nano seconds delay , can i implement like below : > nano_second_delay( int nanosecs ) > { > int t1,t2,t3 ; > t2 = nanosecs/10; // Total count to be checked for > t1 = get_tb_time(); > t3= t1 + t2; > while(1) > { > if(get_tb_time() == t3) > break; > } > } > > get_tb_time ( void ) > { > mftb r3,TB > } > > 2) Whether this will fetch me 1000ns delay ? > > Praveen > > Dobbin Allan-r11834 <Allan.Dobbin@... <mailto:Allan.Dobbin% 40freescale.com> > wrote: > The best resolution you could possibly hope for is the sysclk i.e. if > you run at, say, 40MHz, the best you could get is 25ns. Using the TB, > this is reduced further to the TMBCLK period as controlled by SCCR and > is typically sysclk divided by a further 16. > > So although I'm not providing the answer (because I don't really know), > the real question is which counter module can be clocked with the > smallest prescaler i.e. another core register, MIOS counter, etc. > > A comment on your function below - there will be an overhead of a couple > of dozen instructions multipled by the memory access rate (approx a few > micro-secs) which you could subtract from 'microsecs' to get a more > accurate delay, obviously taking care not to go below 0. > > - Allan > > ________________________________ > > From: [email protected] <mailto:MPC500%40yahoogroups.com> [mailto:[email protected] <mailto:MPC500%40yahoogroups.com> ] On Behalf > Of praveen > Sent: Wednesday, August 16, 2006 6:31 AM > To: [email protected] <mailto:MPC500%40yahoogroups.com> > Subject: [MPC500] introduce Delay in MPC565 !! > > Hi all, > I am working with MPC565. and i have made a routine which can introduce > delay in microseconds. > > Dummy Routine to Introduce Delay in MicroSeconds : > ---------------------------------------------------------- > micro_second_delay( int microsecs ) > { > int time_base_start = get_tb_time(); > > //Keep wait until the parameter > while( ( get_tb_time() - time_base_start ) < microsecs ); > } > > get_tb_time ( void ) > { > mftb r3,TB > } > ---------------------------------------------------------- > Is it possible to have a function which can introduce delay in > nanoseconds ? > i know that ,TB register is 64-bit incrementing counter. > how will i be able to manage to get specific delay ? Can i make generic > funtions ? > > Thanks in advance > > Praven > > --------------------------------- > How low will we go? Check out Yahoo! Messenger's low PC-to-Phone call > rates. > > [Non-text portions of this message have been removed] > > [Non-text portions of this message have been removed] > > --------------------------------- > Yahoo! Messenger with Voice. Make PC-to-Phone Calls to the US (and 30+ countries) for 2¢/min or less. > > [Non-text portions of this message have been removed] > > [Non-text portions of this message have been removed] > > > > > > > --------------------------------- > Talk is cheap. Use Yahoo! Messenger to make PC-to-Phone calls. Great rates starting at 1¢/min. > > [Non-text portions of this message have been removed] > ----------------------------------------------------------- To learn more about Freescale Microcontrollers, please visit http://www.freescale.com/mcu Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/MPC500/ <*> To unsubscribe from this group, send an email to: [email protected] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/