原创 HotC51共产儿童团第一课:中断隐身之法规

2009-2-23 00:58 3159 6 8 分类: MCU/ 嵌入式
HotC51 发表于 2009-2-23 00:53 裸奔式实时操作系统HotTask51 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

楼主: HotC51共产儿童团第一课:中断隐身之法规




开场白:
记得菜农在04年曾告诫过高级别隐身之问题,但未说明
为什么,这次为配合HotTask51大扫荡,菜农不得不说出
其危害所在,让大家穿好防弹衣~~~戴好口罩以免被
菜农之毒害~~~


HotC51共产儿童团第一课:中断隐身之法规
1.低级别中断可在中断中隐身(调用一次RETI指令)
  切换退出也可从来路退出(退出用原来的RETI指令)
  故结论:低级别中断可以随便使用RETI指令。

2.高级别建议不要用中断隐身,若系统只有一个高优先级中断低优先
  级中断时,则应该在当初隐身时,调用一次RETI指令时自己降级为
  低优先级此时控制权并未交还给那个被中断的低优先级中断程序,
  因为现在他们实际同级别,故其他中断还不能中断该中断。
  只有返回后才能把控制权交还,但是问题是它若用RETI退出时,MCU
  必然任务是那个原来低的中断彻底退出了中断。

  故导致了高优先级两次RETI时,误将原被打断的程序退出了中断。
  当交权时,低级中断也被强行“隐身”,故其他低的中断就可打断
  此中断,但他们原来是同级有该不能打断的。


3.说高级中断非要隐身,则必须遵守第1次必须用中断返回指令RETI

  第2次中函数返回指令,这样将会对高级别中断隐身,并封锁低级
  中断之用途。


课毕。

团长告诫结束

HotC51@126.com   2009.2.23 于菜地。
团部:http://group.ednchina.com/1623/



HotPower的一种中断隐身方法 作者 12864 日期 2006-3-21 21:24:00



mood.gif hotpower 发表于 2005-7-10 18:04 侃单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖


如果不愿嵌入汇编,可以用函数指针再找个无用的中断向量.
例:

/*------------------------------------
         定时器T1中断服务程序
------------------------------------*/
void t1proc() interrupt TF1_VECTOR using 1
{
//T1已用于串口波特率发生器,故此中断无用,但编译也会产生reti指令
}

/*------------------------------------
         定时器T2中断服务程序(5mS)
------------------------------------*/
void t2proc() interrupt TF2_VECTOR using 0
{
void (* func)(void);//申请函数指针
  TF2 = 0;
//...................................
  func = (void *)t1proc;//由于Keil C不能直接调用中断,但可以间接调用
  func();//调用中断,执行reti指令且返回继续运行
//此后的程序和主循环中的程序级别相同,可以再响应任意中断
//但必须注意本程序有可能被二次调用(即再次中断)
//本例中只要保证二次中断时间不超过5mS即可.
}

这实际是dengm同志经常使用的"中断隐身"的标准C语言的写法.

它肯定比嵌入汇编执行速度慢,但肯定不会出错的,尤其在使用using分组时.

一般最好不要操作SP...


PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户374875 2011-8-23 14:42

您好,请问: 低级别中断调用一次RETI指令后,任意后来中断包括它自己都能中断它; 高级别中断调用一次RETI指令后,假设发生高级别中断时没有低级别中断已发生,应该也是任意后来中断包括它自己都能中断它吧,是不是要在高级别中断隐身前先确立一个低级别最高优先顺序中断b再隐身,这时隐身后会先进入低级别中断b,再从低级别中断b里RET回到隐身的高级中断里,这样才能对高级别中断隐身,并封锁后来的低级别中断?高级别中断执行完最后用RETI返回时清掉低级别中断b的优生级触发器?低级别最高优先顺序中断b自己的RETI永不去执行。 也就是说第3条高级中断隐身调用RETI后并不能封锁低级中断?

sunke9_998892717 2009-2-23 10:03

顶一下,但是没看懂
相关推荐阅读
雁塔菜农 2012-04-05 17:51
2012年度新唐Cortex-M0助学开发套件有约束条件赠送申报贴
2012年度新唐Cortex-M0助学套件从4月起每月有约束条件发放16套。 申报人必须是21ic或 EDNC 会员 并具备1月的会龄。 申报时必须注明“遵守约束条件,缴纳250元订金,上...
雁塔菜农 2012-04-05 17:04
2012年度Cortex-M0助学园地推广框图
...
雁塔菜农 2012-04-01 17:59
2012年度Cortex-M0助学园地奖励计划细则
抢楼请点击:菜地公告:即日起创建《菜农Cortex-M0助学园地》(盖楼入口) 每月10号和25号的下午2:50进行2次抢楼,规则同去年12月的疯狂抢楼活动。 奖品由21IC、北航、广州迪圣...
雁塔菜农 2012-02-03 08:19
菜农谋略:搞定牛人宋俊德,对女牛人孙昌旭说:“记住,俺是雁塔菜农~~~ ”
http://www.baidu.com/s?wd=%B2%CB%C5%A9%D0%A6%CC%B8%A1%B6%D0%C2%C0%CB%C3%FB%C8%CB%D0%A7%D3%A6%A1%B7...
EE直播间
更多
我要评论
2
6
关闭 站长推荐上一条 /3 下一条