码迷,mamicode.com
首页 > 其他好文 > 详细

pic中断特别说明

时间:2017-04-18 09:50:25      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:情况   调试   覆盖   追踪   没有   异常   modbus   特性   异常类   

在调试产品W660-MODBUS过程中发现,程序工作在偶然情况下会工作异常,经过将近一个礼拜的追踪,发现PIC中断有一下两个怪异特性:

  • 在刚进入中断时就应该清除中断标志,如果在最后返回之前才清除标志,会导致同一个中断嵌套进入。但是只有低优先级中断会存在这个情况。当低优先级中断刚进入时,没有清除中断标志--高优先级中断发生,打断低优先级中断--高优先级中断结束--返回至被打断的低优先级中断,但是此时如果低优先中断标志没有被清除,而且此时被打断的低优先级中断条件再一次满足,则此时会从头先执行新发生的中断,此中断结束后再接着执行被打断的中断。这会导致同一个中断嵌套进入,导致被保存的变量丢失。
  • 在中断服务程序中不能软件使能中断。在进入中断服务程序时,PIC内部会禁止中断,高优先级中断会自动清除高优先级使能标志,低优先级中断会自动清除低优先级使能标志。在中断结束后,PIC内部又会自动设置中断使能标志。如果在服务程序中手动设置高优先级使能标志会导致程序异常。(表现之一:中断服务程序进入之前保存的变量值会被覆盖,跟同一中断嵌套的造成的异常类似)

pic中断特别说明

标签:情况   调试   覆盖   追踪   没有   异常   modbus   特性   异常类   

原文地址:http://www.cnblogs.com/smileintheday/p/6725987.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!