我正在寻找一种用于验证此微设备的内 MCLK 频率的代理测量方法。
顺便说一句,我正在使用 Code Composer 和 C 编程。
简单地说,我切换了一条高端口线路,接着是100条“单周期”指令,然后是低端口线路,接着是10条单周期指令,然后循环并重复。
其目的是测量脉冲高时间,并确定 MCLK 频率。 这一时间应该非常稳定和准确。
MCLK 内部频率设置为1.25 Mhz (10 MHz 外部间壁/ 8)。 中断被禁用。
我本来希望100个单周期指令在1.25Mhz 下执行,无中断,无等待周期,存储到内存时没有管道问题,而没有任何其他干扰将在100 x 1/25Mhz 或80US 中完成。
但情况并非如此。 脉冲高时间为105uS,比预期长31.25%。
我最终在 P3.0上输出了 MCLK 信号,并验证 MCLK 实际上是1.250MHZ。
问题-为什么执行代码需要105uS 而不是80US?
谢谢
while(1)
{
P1OUT |= LED; // LED output high
asm(" MOV R5,R5"); // 100 of these instructions, not all shown
P1OUT &= ~LED; // LED output low
asm(" MOV R5,R5"); // 10 of these instructions, not all shown
}