superhcb 发表于 2024-11-27 16:36:16

Ai8H8K64U的delay函数不准 | 1秒用定时器,软件延时会被中断打断

Ai8H8K64U,使用官方AI-ISP(V6.94),延时1秒,但不准

神农鼎 发表于 2024-11-27 18:44:50

1秒,肯定是用定时器来做啊,
免得软件延时会被其他中断打断延时,理论上不实用啊


下面软件延时,被其他中断打断了,就不准了




_奶咖君_ 发表于 2024-11-27 16:46:57

本来再实际使用中就不准,,,

如果你想要一个准的软件延时,,直接用ISP生成一个1s的函数, 使用前,关闭总中断 使用后 开启总中断,,,这样应该会好很多

DebugLab 发表于 2024-11-27 16:50:17

还有for循环的判断时间呢,累加了一千次

superhcb 发表于 2024-11-27 16:57:07

如果需要有精准的1ms和1us延时函数,应该怎么做

superhcb 发表于 2024-11-27 16:58:16

_奶咖君_ 发表于 2024-11-27 16:46
本来再实际使用中就不准,,,

如果你想要一个准的软件延时,,直接用ISP生成一个1s的函数, 使用前,关闭 ...

如果需要有精准的1ms和1us延时函数,应该怎么做

_奶咖君_ 发表于 2024-11-27 16:59:29

superhcb 发表于 2024-11-27 16:58
如果需要有精准的1ms和1us延时函数,应该怎么做

使用硬件的定时器啊,,硬件的精度就看你晶振的精度了,,,比软件延时是要强太多了

_奶咖君_ 发表于 2024-11-27 17:03:18

_奶咖君_ 发表于 2024-11-27 16:59
使用硬件的定时器啊,,硬件的精度就看你晶振的精度了,,,比软件延时是要强太多了 ...

1us的延时就比较暧昧了,,主频不高的话,实际也没有什么太大的意义。11.1184M主频,1us也就运行11条指令,,

Lkck8210 发表于 2024-11-27 17:03:19

superhcb 发表于 2024-11-27 16:58
如果需要有精准的1ms和1us延时函数,应该怎么做

想要多少延时
直接用STCAI-ISP生成
不要用循环累加短延时来达成长延时

而且也不建议用1ms以上的延时
严重浪费单片机算力

soma 发表于 2024-11-27 17:18:44

软件延时本身还要受晶振,中断等影响。如果要准还是中断延时吧。

xxkj2010 发表于 2024-11-27 18:31:28

IRC频率设置多少?
页: [1] 2
查看完整版本: Ai8H8K64U的delay函数不准 | 1秒用定时器,软件延时会被中断打断