Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Thread

I/O Timing LPC2106

I/O Timing LPC2106

2004-12-14 by dsidlauskas1

I'm doing a simple port timing test using an IAR dev board and having
trouble understanding what I'm seeing. My simple routine is:

#define T 0x10

int main (void)  {                        

IODIR = 0xff0010;                             Outputs */
VPBDIV = T;
/*
VPBDIV = T;
VPBDIV = T;
VPBDIV = T;
VPBDIV = T;
VPBDIV = T;
  */

while(1)
{
	IOSET = 0x0f0010;
	IOCLR = 0x0f0010;
}

and I'm watching the port pin with a scope. The fastest I can get the
pin to toggle is ~2.5Mhz with VPBDIV=0x01. With it equal to 0x00 or
0x10 the toggle frequncy is the same, about 1.7Mhz. I'm running the
clock at~60Mhz,
and the peripheral buss at 60Mhz with VPDIV=0x01. Single stepping
using the Keil simulator shows that I'm executing 9 instuctions for
the loop. This should give me a toggle frequency of 60/9= 6.7Mhz.

Also, if I set VPBDIV multiple times, as shown in the commented out
code above, the toggle frequency decreases, all other things held the
same.

Other relavent register settings are:

MAMCR = 0x01  MAM fully enabled
MAMTIM = 0x03  3 flash fetch cycles

PLLSTAT = 0x0744  PLL Enabled M=4 D=2

The register values were read from the Keil simulator.

Can anyone set me staight?

Thanks,

Dave Sidlauskas

RE: [lpc2000] I/O Timing LPC2106

2004-12-15 by Leon Heller

>From: "dsidlauskas1" <dsidlauskas@...>
>Reply-To: lpc2000@yahoogroups.com
>To: lpc2000@yahoogroups.com
>Subject: [lpc2000] I/O Timing LPC2106
>Date: Tue, 14 Dec 2004 23:41:15 -0000
>
>
>
>I'm doing a simple port timing test using an IAR dev board and having
>trouble understanding what I'm seeing. My simple routine is:
>
>#define T 0x10
>
>int main (void)  {
>
>IODIR = 0xff0010;                             Outputs */
>VPBDIV = T;
>/*
>VPBDIV = T;
>VPBDIV = T;
>VPBDIV = T;
>VPBDIV = T;
>VPBDIV = T;
>   */
>
>while(1)
>{
>	IOSET = 0x0f0010;
>	IOCLR = 0x0f0010;
>}
>
>and I'm watching the port pin with a scope. The fastest I can get the
>pin to toggle is ~2.5Mhz with VPBDIV=0x01. With it equal to 0x00 or
>0x10 the toggle frequncy is the same, about 1.7Mhz. I'm running the
>clock at~60Mhz,
>and the peripheral buss at 60Mhz with VPDIV=0x01. Single stepping
>using the Keil simulator shows that I'm executing 9 instuctions for
>the loop. This should give me a toggle frequency of 60/9= 6.7Mhz.
>
>Also, if I set VPBDIV multiple times, as shown in the commented out
>code above, the toggle frequency decreases, all other things held the
>same.
>
>Other relavent register settings are:
>
>MAMCR = 0x01  MAM fully enabled
>MAMTIM = 0x03  3 flash fetch cycles
>
>PLLSTAT = 0x0744  PLL Enabled M=4 D=2
>
>The register values were read from the Keil simulator.
>
>Can anyone set me staight?

There was some discussion of this recently; there is a restriction of the 
I/O timings that is inherent in the ARM architecture.

Leon

Re: I/O Timing LPC2106

2004-12-15 by dsidlauskas1

Leon,

Thanks much. Your lead led me to the answer, which wasn't the answer I
wanted to hear, but an answer never the less :-). I don't know why I
didn't search the archives on timing, it seems I searched on
everything else.

Dave S


--- In lpc2000@yahoogroups.com, "Leon Heller" <leon_heller@h...> wrote:
> 
> 
> >From: "dsidlauskas1" <dsidlauskas@w...>
> >Reply-To: lpc2000@yahoogroups.com
> >To: lpc2000@yahoogroups.com
> >Subject: [lpc2000] I/O Timing LPC2106
> >Date: Tue, 14 Dec 2004 23:41:15 -0000
> >
> >
> >
> >I'm doing a simple port timing test using an IAR dev board and having
> >trouble understanding what I'm seeing. My simple routine is:
> >
> >#define T 0x10
> >
> >int main (void)  {
> >
> >IODIR = 0xff0010;                             Outputs */
> >VPBDIV = T;
> >/*
> >VPBDIV = T;
> >VPBDIV = T;
> >VPBDIV = T;
> >VPBDIV = T;
> >VPBDIV = T;
> >   */
> >
> >while(1)
> >{
> >	IOSET = 0x0f0010;
> >	IOCLR = 0x0f0010;
> >}
> >
> >and I'm watching the port pin with a scope. The fastest I can get the
> >pin to toggle is ~2.5Mhz with VPBDIV=0x01. With it equal to 0x00 or
> >0x10 the toggle frequncy is the same, about 1.7Mhz. I'm running the
> >clock at~60Mhz,
> >and the peripheral buss at 60Mhz with VPDIV=0x01. Single stepping
> >using the Keil simulator shows that I'm executing 9 instuctions for
> >the loop. This should give me a toggle frequency of 60/9= 6.7Mhz.
> >
> >Also, if I set VPBDIV multiple times, as shown in the commented out
> >code above, the toggle frequency decreases, all other things held the
> >same.
> >
> >Other relavent register settings are:
> >
> >MAMCR = 0x01  MAM fully enabled
> >MAMTIM = 0x03  3 flash fetch cycles
> >
> >PLLSTAT = 0x0744  PLL Enabled M=4 D=2
> >
> >The register values were read from the Keil simulator.
> >
> >Can anyone set me staight?
> 
> There was some discussion of this recently; there is a restriction
of the 
Show quoted textHide quoted text
> I/O timings that is inherent in the ARM architecture.
> 
> Leon

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.