发新帖我要提问
123
返回列表
打印

(原创)一个很基础,也很容易出问题的中断---欢迎大家讨

[复制链接]
楼主: 一朝成名
手机看帖
扫描二维码
随时随地手机跟帖
41
一朝成名|  楼主 | 2011-8-25 15:46 | 只看该作者 回帖奖励 |倒序浏览
果真原创,提醒一点书上没强调的:
    关中断虽然有这样那样的危险性,但是:当中断ISR 和用户任务之间存在共享资源时,关中断是唯一的互斥处理方法。

LZ的2、3、4、5、是任务之间的通用互斥方法。根本不适用于 ...
刘前辈 发表于 2011-8-25 12:04


不想解释鸟~~愿意看就看,不看拉倒。。。
仔细看我写的是啥再说话,我啥时候说在中断里加lock了,我啥时候说睡眠的lock了。

较真没意思阿

使用特权

评论回复
42
dengm| | 2011-8-25 18:00 | 只看该作者
51 有 JBC 给你lock共享资源:

       JBC F_BUF_NOT_USE,  L_100
     SJMP $-3
L_100:
    ; ....使用 共享资源
    SETB F_BUF_NOT_USE
   ; .......

使用特权

评论回复
43
刘前辈| | 2011-8-25 18:23 | 只看该作者
本帖最后由 刘前辈 于 2011-8-25 18:46 编辑

呵呵,有2位斑竹,禁不起逗,…… 几年前写的帖子,恍惚隔世,如今今非昔比了。
   
解决中断带来的问题的方法:
1、    最简单的方法:关闭中断,防止一切的异步事件的发生当然就防止竞争的出现,避免了对当前程序或者资源的干扰。问题:如果当前程序执行的很长就导致了CPU丢失中断时间,造成有些事件不能被处理,所以我们要保证关闭中断的时间尽量的短。
2、  ……
3、  ……
4、    操作系统中提到的“信号量”的概念,其也就是高级的标志位。
在51系统当中也可以引进此概念,构造一个简单的信号量,可以解决多任务抢占资源的问题。
5、“自旋锁”的概念等等,除此之外在操作系统中有很多细分的方法应对不同的场合,可以解决中断所带来的的问题。

经验感觉:
    除了上述的一些方法之外,
当我们写程序架构的时候应该做到“中断程序”
和“主程序”之间要有界限,不能互相干扰,如果一些实时性要求很高的程序可以放在中断程序中执行,但是要保证函数的简短,防止中断嵌套带来的问题或者死循环等。


、、
、、



# 41楼
不想解释鸟~~愿意看就看,不看拉倒。。。
仔细看我写的是啥再说话,我啥时候说在中断里加lock了,我啥时候说睡眠的lock了。


咱中文学得不好,又是菜鸟,楞没看懂LZ说的是啥,对LZ的5点解决中断带来的问题建议理解有偏差,还请多多包涵。




、、

使用特权

评论回复
44
zbb564833642| | 2011-8-25 18:34 | 只看该作者
学习。。。

使用特权

评论回复
45
刘前辈| | 2011-8-25 19:01 | 只看该作者
#43楼  刘前辈
◆ 建议LZ在中断ISR中采用“信号量”,然后睡在中断中,看看谁能唤醒它。

◆ 建议LZ在中断ISR中使用“自旋锁”方法,看看这位“超高优先级任务”旋转到什么时候,才能等待到低优先级用户任务释放锁。

、、

使用特权

评论回复
46
一朝成名|  楼主 | 2011-8-25 19:08 | 只看该作者
:lol

这么个二的用法只有你能想的到阿。。
你真要我找本书,给你抄几章吧。。
好几年就不来单片机板块了,刚回来感慨下就挨一顿卷。。。:lol:lol

使用特权

评论回复
47
一朝成名|  楼主 | 2011-8-25 19:09 | 只看该作者
我懒的说了

你愿意理解我这篇**是告诉你在ISR中用自旋,用锁,用信号量。。我真的木有办法解释

使用特权

评论回复
48
highgear| | 2011-8-25 21:18 | 只看该作者
顶一朝成名

俺发现刘公公前辈只要一听到“os", "信号量”几个词,就会摇身一变成为一只好斗的公**,刘公公前辈对于术语运用纯熟,只是在具体实践和技术理解方面弱些,不能很好的理会楼主从实践中总结出的经验,因此一朝成名大侠不必介怀。

使用特权

评论回复
49
一朝成名|  楼主 | 2011-8-25 21:24 | 只看该作者
顶一朝成名

俺发现刘公公前辈只要一听到“os", "信号量”几个词,就会摇身一变成为一只好斗的公**,刘公公前辈对于术语运用纯熟,只是在具体实践和技术理解方面弱些,不能很好的理会楼主从实践中总结出的经验,因此 ...
highgear 发表于 2011-8-25 21:18


呵呵,没有,我一下子对自己的表达能力没有信心了。。
后来看了好几次**。。毕竟是好几年前写的了。。

使用特权

评论回复
50
highgear| | 2011-8-25 21:33 | 只看该作者
楼主的表达很清晰,一看就知道是实战中的总结,比一些教科书中把简单的问题用晦涩的术语来包装更易看易懂。

使用特权

评论回复
51
一朝成名|  楼主 | 2011-8-25 21:35 | 只看该作者
楼主的表达很清晰,一看就知道是实战中的总结,比一些教科书中把简单的问题用晦涩的术语来包装更易看易懂。
highgear 发表于 2011-8-25 21:33


谢谢你的肯定。。

使用特权

评论回复
52
tuzihog| | 2011-8-25 22:21 | 只看该作者
留名

使用特权

评论回复
53
Cortex-M0| | 2011-8-26 12:41 | 只看该作者
嗨~~~

一声叹息,这个不是问题的问题有啥好争?

尽管俺不懂C,  但从来没犯过这类超低级错误~~~

只是,又有高手将Keil  C51中非C标准的CY标志,用到AVR上来了~~~

无语,漂过~~~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则