




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、关于 stm8s 外部中断问题!怎么识别是具体哪个引脚引起的中断! 复制链接 junsea 电梯直达1 楼发表于 2010-12-11 10:41:48 | 只看该作者举个例子,在 pc口有的 pc0和 pc1两个信号都要求能够中断。而stm8s 对应 pc口只有一个中断向量,我要怎么才能够知道具体是有pc0引起的中断呢?还是pc1引起的中断呢?我也看了坛子里面的一些相关的帖子,大致有这么一种方法,进入中断后读取io 口的电平状态以判断是哪个 io 口引起的中断。但是我有个疑问,假定设置为下降沿触发中断。pc0先出现下降沿,系统进入中断,如果在这个时间段, pc1也出现下降沿,在中断里面再读p
2、c0和 pc1电平状态,仍然不能够判别是由 pc0引起的中断,还是由pc1触发的中断啊!收藏 5 回复举报论坛公益广告:使用360 产品将会被封锁 id。周流氓枪毙 1 万次也无法弥补3721 犯下的罪行。junsea 2 楼楼主| 发表于 2010-12-11 11:39:22 | 只看该作者顶一下。回复举报公益广告:发表新主题时,务必起一个能说明帖子内容的清晰标题,否则将会被封锁 id( 点击查看详细说明 ) bigz 3 楼发表于 2010-12-11 13:09:03 | 只看该作者不建议这样用最好一个pc ,一个 pd ,每个口只开放一个中断回复举报公益广告:本论坛不得使用、宣传q群
3、。 有讨论请在论坛里进行。违者将封锁 id. junsea 4 楼楼主| 发表于 2010-12-11 13:28:46 | 只看该作者当然能够这样最好,只是现在的项目的硬件已经做好了,之前没有用中断,用的查询,发现有时候可能会出现跟不上的情况!所以想采用中断来做!回复举报公益广告:发表招聘帖子需要缴费,有需要可以联系网站工作人员王小姐:137*. snoopyzz 5 楼发表于 2010-12-11 13:34:21 | 只看该作者不要用 else 或 switch 不就行了 if(pc0=0)if(pc1=0). 回复举报公益广告:广告只能发在本论坛的广告区,否则将封锁id。junsea
4、6 楼楼主| 发表于 2010-12-11 13:45:51 | 只看该作者楼上,程序当然可以这么写,只是我说的那种情况:pc0先出现下降沿,系统进入中断,在执行 if (pc1=0 )之前, pc1也出现下降沿,那么if (pc0=0 )能够运行 if (pc1=0 )也能够运行并没有达到只执行i f(pc0=0 )的目的啊?回复举报本论坛禁止与网站产品有冲突的广告,如雕刻机、pcb 、空气净化器等bigz 7 楼发表于 2010-12-11 17:52:54 | 只看该作者这种情况下为什么非要只执行一个呢既然同是发现都为0,同时执行不就行了回复举报snoopyzz 8 楼发表于 2010-
5、12-11 19:28:19 | 只看该作者char status = pc_idr;if( status&bit(0) )/pc0if( status&bit(1) )/pc1如果两个都能进入.说明基本同时 (中断响应 +中断跳转 +局部变量赋值时间 ), 理所当然全部应该执行回复举报junsea 9 楼楼主| 发表于 2010-12-11 23:14:24 | 只看该作者如楼上所说,是可以两个都响应。如果碰到5 楼的情况,有 pc0的下降沿触发了中断,那么下面代码的pc0和 pc1位置的语句都将得以执行,可是系统设置了pc0和 pc1都将产生中断请求, pc0的下降沿中断函
6、数执行一次,当 pc1产生下降沿的时候,中断函数再执行一次,这样下面pc1部分的语句不是被执行了两次,而 pc1的下降沿只产生一次? char status = pc_idr; if( status&bit(0) ) /能够执行 /pc0 if( status&bit(1) ) /能够执行 /pc1 回复举报millwood0 10 楼发表于 2010-12-12 00:24:56 | 只看该作者 只是现在的项目的硬件已经做好了maybe the next time you will learn not to put the cart in front of the horse
7、. 回复举报bigz 11 楼发表于 2010-12-12 13:45:13 | 只看该作者当 pc0中断发生并进入isr进行服务时, pc1也发生了中断,当pc0中断返回时,可能会立刻再进入该中断服务这时就发生了 8l 说的情况,由于8s的 io 中断无中断标志位,所以这种情况是无法避免的建议lz使用查询方式,不知道时间来得及不,可以在主循环程序中多查询几次,或者在其他子程序中随时查询电平变化对一般的应用应该都是合适的回复举报junsea 12 楼楼主| 发表于 2010-12-12 20:42:27 | 只看该作者看来 stm8s 每个 io 口都可以中断的功能有些不完善哈!谢谢大家参与讨
8、论。回复举报snoopyzz 13 楼发表于 2010-12-13 13:40:11 | 只看该作者外部中断由于没有中断标志, 所以如果中断发生时同源另一外部中断发生, 在退出中断后, 并不会再一次进去中断 . 回复举报bigz 14 楼发表于 2010-12-13 15:54:18 | 只看该作者回复【 12 楼】snoopyzz 外部中断由于没有中断标志, 所以如果中断发生时同源另一外部中断发生 , 在退出中断后 , 并不会再一次进去中断 .-你说的是有道理的,我的上述结论也只是猜测,但我发现8s的中断系统和一般单片机是不同的大家可以测试下:开放 pc0的中断(边沿中断和电平中断都测试下)
9、,并在pc0的中断服务第一句就开启全局中断,然后手动触发该中断(也就是连续触发n次中断),这时,堆栈可能溢出。溢出的唯一解释,就是中断重入,而且是在没有返回的情况下重入的。堆栈溢出的情况是我在tim1的 bk功能上发现的,但我不知道io 口是否会有相同情况。另外,如果你的说法正确,那么 lz说的中断函数被执行2 次的可能并不存在,反而是会漏执行。回复举报bigz 15 楼发表于 2010-12-13 16:09:35 | 只看该作者以下情况可以使用4l 的办法处理,不会有任何问题:pc0中断 pc0中断响应pc1中断读 pc口中断处理中断返回漏执行的情况:pc0中断 pc0中断响应读pc口 p
10、c1中断中断处理中断返回至于8l 提到的执行 2次的情况,可以记录pc0的电平状态而避免,但漏执行时无法避免的。所以结论是:lz 遇到的问题,无法纯粹依赖中断,必须辅以另外记录的办法才行。最好的解决办法就是查询io。回复举报snoopyzz 16 楼发表于 2010-12-13 16:34:47 | 只看该作者应该只有低电平中断会造成重入.低电平中断这种东东 .显然不能在其中开全局中断的 , 是常识 .否则必然重入 . 回复举报bigz 17 楼发表于 2010-12-13 16:46:08 | 只看该作者但问题是,在 8s中,通一个中断向量的优先级是相同的,而中断是不应该被相同优先级打断的正
11、常的处理应该是,中断返回后立刻再触发中断,而不应该是重入,否则堆栈溢出,后果严重。 8s的这点和其他 mcu 不同,是个缺点回复举报junsea 18 楼楼主| 发表于 2010-12-14 00:01:27 | 只看该作者讨论出深度来了哈!至于大家说的中断重入的事情,但是我认为应该不会有吧!在手册上面讲是有两种情况一种是同时发生,一种是嵌套。按照手册上面讲:同时发生中断的响应顺序是按照中断号的优先级按次序响应。嵌套按照itc_sprx 里面的设置的优先级进行嵌套响应。但是现在 pc0和 pc1这种情况,不属于这两种情况。至于是不是要重入不得而知,看看有空好好试试 stm8s 的外部中断系统了
12、。回复举报snoopyzz 19 楼发表于 2010-12-14 08:59:32 | 只看该作者回复【 16 楼】bigz -你明显没能明白stm8 的优先级指的是什么 .不光是 stm8, 包括,pic,avr,51 等大多数 8bit mcu其中断优先级指的是同时有中断发生需要响应时, 内核执行顺序的优先级 .不发生中断嵌套重入的前提是你别在中断函数中使能全局中断 .当进入一个中断函数时 , 全局中断会被禁止 , 当执行到 reti(stm8的中断返回指令 )时, 会重新使能全局中断 .而你呢 , 手动在中断函数中使能全局中断, 还是低电平中断这种持续有效的, 必然是个杯具 .对于 st
13、m8, 只有几个少数的不可屏蔽中断(reset,trap,tli)会产生嵌套回复举报bigz 20 楼发表于 2010-12-14 18:48:52 | 只看该作者由于应用的需要我已经在至少3 款 mcu 上 在进入中断后第一句就打开全局中断。如你所说,大多数mcu 进入中断后会自动关闭全局中断,但如果不在中断服务中打开全局中断,中断嵌套就不存在。只有在低优先级的中断中打开全局,更高优先级的中断才能打断当前中断服务。否则中断嵌套就失去意义了。回复举报bigz 21 楼发表于 2010-12-14 18:58:34 | 只看该作者按照一般理解,电平中断至多引起狗叫,而不是堆栈溢出这种严重错误。回
14、复举报bigz 22 楼发表于 2010-12-14 19:03:49 | 只看该作者重点理解此图,和那2 句话( 原文件名 :int.jpg) ( 原文件名 :int2.jpg) 回复举报snoopyzz 23 楼发表于 2010-12-14 20:17:49 | 只看该作者低电平中断你开 , 再开使能全局中断 , 必然会重入而且并不会中断返回.不断重得进入相同中断 , 堆栈不断重复压栈 .最后就后堆栈溢出 , 关狗什么事 .我保证你换 avr 也一样的结果 .自己不会用就怪芯片有问题的人, 见得多了 .不差多一个. 回复举报bigz 24 楼发表于 2010-12-14 20:50:49 | 只看该作者请问 ls对中断嵌套怎么理解?难道你在所有中断里都不开全局中断?另外,我从来没说芯片有问题,只是指出了8
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 无锡南洋职业技术学院《第二外语英语》2023-2024学年第二学期期末试卷
- 中国科学技术大学《结构方程模型》2023-2024学年第二学期期末试卷
- 石家庄市正定县2025届数学三下期末达标检测模拟试题含解析
- 泰山护理职业学院《复利数学》2023-2024学年第一学期期末试卷
- 肇庆学院《动植物检验检疫》2023-2024学年第二学期期末试卷
- 江苏省南通等六市2025届高三入学调研物理试题(3)试卷含解析
- 湖北省恩施市巴东县2025年初三下学期第三次诊断考试语文试题试卷含解析
- 内蒙古巴彦淖尔市重点中学2025年高三4月考历史试题理试卷含解析
- 张家口职业技术学院《计算机专业英语阅读》2023-2024学年第二学期期末试卷
- 浙江杭州余杭区2025年初三下学期第四次调考(4月)英语试题含答案
- 第6节 有机磷农药中毒病人的护理
- 小学生安全教育校本教材(中年级版)
- 中职语文 大国工匠——彭祥华
- 数字化语音存储与回放系统(毕业设计)
- 喜达屋明星服务
- 烟草企业安全生产标准化规范-第3部分-考核评价准则和方法
- 武汉市控制性详细规划编制技术规程610
- 电子显微分析试题集1
- ANCA相关性小血管炎
- 服装面料采购合同
- 斯伦贝谢定向钻井和旋转导向
评论
0/150
提交评论