中断嵌套多了会不会有问题
我有个这样的应用,芯片用的8H1K08,Timer0固定为1ms中断一次,Timer1、PWMA和PWMB这三个会随着程序参数变化,定时时间在90uS-240uS之间变动,在定时器中断服务程序中我有16位的移位运算,同时还用了串口通信,主程序中在不停的进行着32位的乘除运算,有时候会有异常,程序会跑飞,
不知道会不会是这几个中断有那么几瞬间会来回嵌套,用于保存现场的R接触器正存着主程序中32位运算的中间变量呢,然后跳到某个中断去了,保存现场,
结果那个中断没执行完呢,又跳到另一个中断去了,再次保存现场(覆盖了老现场)
中断频繁其它线程
影响工作效率 当然,必须考虑中断嵌套的问题,要不然可能会引发未知问题。可以置标志位,统一在主循环中处理。 狂热主宰 发表于 2026-4-14 15:15
中断频繁其它线程
影响工作效率
影响主程序执行效率没有关系,只要不出错就行 青穗三三 发表于 2026-4-14 15:38
当然,必须考虑中断嵌套的问题,要不然可能会引发未知问题。可以置标志位,统一在主循环中处理。 ...
你意思是说,中断里不让他干活,只让他置位标志位,然后在main里循环检测标志位?
这样也行,但是中断时间只有100多uS,主程序里好几个32位乘除法很费时间,
会不会出现都中断两次了,主程序还没走完一个循环{:4_167:} 猫虎的 发表于 2026-4-15 08:18
你意思是说,中断里不让他干活,只让他置位标志位,然后在main里循环检测标志位?
这样也行,但是中断时 ...
需要测量下主程序循环的时间 猫虎的 发表于 2026-4-15 08:18
你意思是说,中断里不让他干活,只让他置位标志位,然后在main里循环检测标志位?
这样也行,但是中断时 ...
主要是看主程序循环的运行时间,大于100us就会,小于100us就不会 青穗三三 发表于 2026-4-15 08:27
需要测量下主程序循环的时间
基本不用测了,主程序里做着好多32位的运算,很慢{:4_167:},绝对超过80uS了 小飞侠 发表于 2026-4-16 07:26
主要是看主程序循环的运行时间,大于100us就会,小于100us就不会
肯定大于的,8位的8H1K08,没有硬件乘除法器,干着32位乘除运算很费劲,而且我还弄了好多32位的乘除运算 只有4个优先级,嵌套最多4层,准确应该是3层
页:
[1]