LPC2106: I/O switching speed

I have my LPC2106 clocked with a 14.7456MHz oscillator. I am multiplying that by 4 and my pclk is divided by 1 using the on board PLL. I have tested that I am running at 58.9824MHz with a timer. I did a rough calculation to delay 1 second and it appears to work correctly. Also my baud rate calculations work out correctly, so I am assuming that my cclk is set properly.

This is my situation:

label:	
	str		r8, [r7]
	str		r8, [r6]
	b		label

r8 holds the bit to turn on and off, r6 holds IOCLR, r7 holds IOSET. All this is doing is doing is turning a bit on and then off over and over.

My problem is that it appears to take well over 100ns between the time the bit turns on and the time the bit turns off. I am using a logic analyzer sampling at 100MHz to view the bit timing.

Also, I am running this code from RAM so the memory acceleration isnt an issue.

Does this sound right? Are there wait states added when using I/O? It just takes way too long to switch the bit when I should be executing instructions at about 17ns each. Does anyone have any thoughts on this?

Thanks for help and dont hold back if this is a stupid question.

Vern

The Yahoo LPC2000 discussion list has numerous conversations about this. It turns out that slow I/O switching speed is a known issue on the first LPC2000 parts, such as the LPC2106.

Philips addressed this on some of the later devices, i.e. LPC2148, by putting the I/O ports on the fastest internal memory bus in the core.

Get on Yahoo and search the LPC2000 group for these discussions.

Cheers,

Jim Lynch

lynchzilla:
Get on Yahoo and search the LPC2000 group for these discussions.

Thanks for the fast reply Jim. I requested permission to join the group last night, I am just waiting to be accepted. This revelation is very distressing, I was really hoping it was something I was doing wrong. I have been pulling my hair out over this the past couple days.

Vern