我看<<Psoc原理与应用设计>>,p74,nop指令周期是4,这个周期是指机器时钟周期还是什么/
我的程序生成后没有修改,那么,是24MHz,也就是t=1/24MHz=0.0416us,那么1个nop就是4*t=0.166us ,对吧?
可是问题是,我刚刚测了一下,用示波器量着不是这样
方法:
首先, 写一个IO口高,下来低的程序,go,用示波器量,高是5us,低是约10us,(因为低之后有个jmp); 然后在高之后加nop测试高多了多少us
测试结果:
20个 nop 25us 30个 nop 40us 50个 nop 55us 那么,平均下来
1个 nop 1.33us
和计算(0.166us)严重不符合,差距有10倍,那么,首先不是IC的问题,如果误差这么大,这个IC就不会量产,其次,会是什么问题那?
另外,,在ps2d_1.asm(psoc designer生成的)中,,系统生成了一个
;----------------------------------------------- ; Macro definitions ;----------------------------------------------- ;----------------------------------------------- ; Precise Delay ;----------------------------------------------- MACRO DELAY
应该是很准确的,可是在ps2d_1.asm中有 DELAY 10, 12 ; Wait 10 uSec
经过测试,竟然是100us!!!!正好是10倍,和刚才测量一样,
请问,到底是怎么回事? |