We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I am using LPC11C14 board with 12Mhz crystal. Most of ASM instructions are 1 cycle, with entering C function takes 3 cycles and exiting takes 3 cycles.
__asm void test () { //3 cycles MOVS R1, #1 //1 cycle SUBS R1, R1, #1 //1 cycle CMP R1, #0 //1 cycle BEQ endf //3 cycles endf BX lr }
So this function should take exactly 12 cycles which means it should take 1us to execute, but if I use oscilloscope and put gpio turn on-off i get around 3-4uS toggle. Although simulator says that for gpio set/clear it takes 10 cycles, it is still missing some 20 cycles.
LPC_GPIO0->DATA |= (1<<0); test (); LPC_GPIO0->DATA &= ~(1<<0); test (); LPC_GPIO0->DATA |= (1<<0);
I guess issue is somewhere in crystal settings or ? I was looking at settings for main clock, but I couldnt figured out whether it is defaulted to IRC oscillator and how to change it to use external crystal.