16位dsPIC33F的32位计算需要460个指令周期?

时间:2016-03-24 22:54:09

标签: dspic

我使用16位定时器作为函数delay_ns(UINT32 ui32_delay_val_ns);的硬件延迟。在函数内,delay_val除以Tcy。定时器运行在Tcy,即25ns(指令周期时间为40MHz),因此每个滴答(或TMR4 val位)将为25ns。

作为一名优秀的软件工程师,我会对该功能进行一些测试,我对此感到疑惑。

见时间:delay_ns:10,a = 2 b = 27 c = 485 d = 494 e = 504

我要求250ns,即10个TMR4刻度为25ns。

a在BOOL bStart = 1且TMR4.ON = 1之后; (2个周期并不奇怪)。

b = TMR4 val后我将前一个16位的ui 32位val值除以25;

当p将原始的32位val除以25时,

c = TMR4 val(直接在b !!之后)。

如您所见,使用16位val需要25个指令周期(可能也很多?),但使用32位成本+450个周期?换句话说,32位val的简单划分需要11.5 us !!

特别是因为这是Microchip的dsPIC33变体,它有一些改进(管道,双ACU等)。 我知道它是一个16位MCU,但为什么需要这么多周期呢?

0 个答案:

没有答案