Forum: ARM programming with GCC/GNU tools Clock Speed

Author: Jim Kaz (ancaritha)
Posted on:

Rate this post
0 useful
not useful
So I was wondering, all the the peripherals on the SAm7A3 are configured
to 48 MHz via the handy dandy Cstartup_SAM7.c init file.  I was
wondering, does this actually configure the main clock to run at 48 MHz,
or it is still running at the Oscillator crystal speed?

I'm wondering because my system seems to be running a lot more sluggish
than it should be.  For instance, I have an LCD display that should take
approximately 2.5 mS to update (I have a lot of no ops in there to get
the timing to work out properly), but it instead takes approximately 350
mS.  This is remarkably similar to if the clock speed was running at 3.6
MHz (the oscillator crystal) and not at the boosted 48 MHz.

I was wondering if anyone else noticed the system running slow than it
should be.

Note: I did turn on the processor clock with pPMC->PMC_SCER |=

Author: Jim Kaz (ancaritha)
Posted on:

Rate this post
0 useful
not useful
Viva la Oscilloscope and GDB Insight.

It turns out that when one of the programmers called a function to write
to the display, he thought the function updated only one line, but it
updated the whole thing, so we were running the LCD code about 6 times
more than we thought we were.    Hopefully this will improve over all
system performance.

Access time went from 350 mS to around 20 mS.  I can live with that much
easier :)

Author: Jim Kaz (ancaritha)
Posted on:

Rate this post
0 useful
not useful
So going along with this whole processor speed thread I started... is
there any way that I can find out the actual speed of the processor?

I know I can pipe out the slow clock, the PLL and the main clock.  The
slow clock is around 32k, the PLL is just a voltage that according to ye
old local EE guy will change between runs as it adjusts itself and may
be high, or low, so I can't really use that and the main clock is just
the external oscillator that I'm using (in this case, 3.6 MHz).

Is there anything that I can probe, or set up internally that will tell
me how fast the clock is going?  I could just set up a for loop of No
Ops or something, but I was hoping for something a little more accurate.
Any ideas?


Entering an e-mail address is optional. If you want to receive reply notifications by e-mail, please log in.

Rules — please read before posting

  • Post long source code as attachment, not in the text
  • Posting advertisements is forbidden.

Formatting options

  • [c]C code[/c]
  • [avrasm]AVR assembler code[/avrasm]
  • [code]code in other languages, ASCII drawings[/code]
  • [math]formula (LaTeX syntax)[/math]

Bild automatisch verkleinern, falls nötig
Note: the original post is older than 6 months. Please don't ask any new questions in this thread, but start a new one.