[ZLG-ARM] 有关中断问题

[复制链接]
2785|17
 楼主| huangbingg 发表于 2008-3-27 12:33 | 显示全部楼层 |阅读模式
请问周工:连接到向量中断控制器的中断源中,RTC中断的计数器增加中断和报警中断们的VIC通道号均为13,如果对3.27RTC实验1稍做改动:即实现在秒中断的同时,设置报警中断(且不用实验上的查询中断标志的方式),因为它们的中断号相同,书上又说不要将相同的中断编号分配给多个使能的向量IRQslot。<br />那么如果用中断方式同时实现这两个功能呢???<br />&nbsp;&nbsp;&nbsp;&nbsp;请周工明细,谢谢!!
zlgarm 发表于 2008-3-27 14:25 | 显示全部楼层

huangbingg,您好!

进入中断后,可以通过查询寄存器ILR来确定RTC产生的是什么中断。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;On&nbsp;duty:&nbsp;zlgarm_Zhangxiaomeng
txmac 发表于 2008-3-27 14:45 | 显示全部楼层

上面讲了是不用ILR查询的方式<br /><br />用的是:void&nbsp;__irq&nbsp;IRQ_RCTA(void)&nbsp;&nbsp;用来报警<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;__irq&nbsp;IRQ_RCTC(void)&nbsp;&nbsp;用来秒计数<br />&nbsp;但因为中断号为同一个中断号13,做的时候只能做优先级高的一个中断。。。实现这两个功能,请问该如何解决呢???
txmac 发表于 2008-3-27 14:56 | 显示全部楼层

顶。。。。。
zlgarm 发表于 2008-3-27 15:26 | 显示全部楼层

txmac,您好!

无法实现。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;On&nbsp;duty:&nbsp;zlgarm_Zhangxiaomeng
txmac 发表于 2008-3-27 15:44 | 显示全部楼层

那该如何解决来实现这两个功能呢?在计数的同时,实现报警???急。。。。。。。。。。。
zlgarm 发表于 2008-3-27 16:25 | 显示全部楼层

txmac,您好!

1、RTC所有中断共用一个中断号,所以RTC中断服务程序应该也只有一个;<br />2、进入中断后查询ILR寄存器,判断是哪中寄存器;如果为秒中断,那么计数加1,并清除秒中断;如果为报警中断,那么执行报警操作,并清除报警中断;<br />3、CPU只有一个,有先后是必然的。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;On&nbsp;duty:&nbsp;zlgarm_Zhangxiaomeng
 楼主| huangbingg 发表于 2008-3-27 20:17 | 显示全部楼层

再追究下:

谢楼上周工,如你所说的,可能有两个问题:<br /><br />1.如果两个同时一起来的,在中断程序里就要由我决定哪个先做哪个后做吧?这样如果我通过串口发液晶屏显示时,如果有报警产生,显示时间肯定会稍有延时吧?<br /><br />2.要是在正常秒中断程序执行时产生报警中断,会发生啥情况???中断嵌套要出问题了吧???
teltium 发表于 2008-3-28 10:27 | 显示全部楼层

呵呵

不是问题的问题
 楼主| huangbingg 发表于 2008-3-28 15:36 | 显示全部楼层

楼上说明白点啊???

第2问我知道了,谁来评价下,骂我两句也行啊...
xcxxyc 发表于 2008-3-28 15:52 | 显示全部楼层

或许可以实现

可以这样试试,当产生一个中断,在中断里去判断另外另外一个中断的标志位这
 楼主| huangbingg 发表于 2008-3-28 16:15 | 显示全部楼层

7楼周工好

您说:"进入中断后查询ILR寄存器,判断是哪中寄存器;如果为秒中断,那么计数加1,并清除秒中断;如果为报警中断,那么执行报警操作,并清除报警中断"<br />好,我请教您下:<br /><br />1.所谓报警,按你们书上说:就是报警器中预设值与计数器中时间值匹配才报警,换句话说:只有当某个秒中断来时,计数器加1秒刚好使时间值和报警值相等,才产生报警中断!说白了:就是,要么只有秒计数中断;要么两个中断一起来!!!    是在这两种情况判断,不是您说的:判断是报警还是秒计数!<br /><br />2.当两个中断一起来时,触发报警和显示时间可以先后做没错,但这时清中断号则么办???    因为有两个!!!!这是才是关键吧<br />               <br />     是这样吗???谢周工!!
 楼主| huangbingg 发表于 2008-3-28 22:41 | 显示全部楼层

......

  
zlgarm 发表于 2008-3-29 11:55 | 显示全部楼层

huangbingg,您好!

1、读取RTC时间、处理数据发送至LCD也是需要时间的;<br />2、两个中断一起来,进入的是同一个中断服务函数,但是在系统里,就只有RTC中断。进入中断服务函数后,可以做如下处理:<br />__irq&nbsp;rtcIrq&nbsp;(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;if(秒中断)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;秒中断程序&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ILR&nbsp;=&nbsp;0x01&nbsp;&lt&lt&nbsp;0;//清除秒中断<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(报警中断)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;报警中断程序&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ILR&nbsp;=&nbsp;0x01&nbsp;&lt&lt&nbsp;1;//清除报警中断<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;中断结束&nbsp;&nbsp;*/<br />}<br />3、建议您仔细阅读我们提供的资料,并配合相关例程调试。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By:&nbsp;zlgarm_Zhangxiaomeng
 楼主| huangbingg 发表于 2008-3-29 12:29 | 显示全部楼层

谢啦

!!!
 楼主| huangbingg 发表于 2008-3-29 18:40 | 显示全部楼层

则么说呢,还是一样

周工按你的意思:<br />void&nbsp;__irq&nbsp;IRQ_RTC(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;if(1==(ILR&0x01))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ILR|=0x01&lt&lt0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HC595_SendDat(~SEC);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;else&nbsp;if(2==(ILR&0x02))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ILR|=0x01&lt&lt1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StartAlarm();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr=0x00;<br />}<br />报警后计数就不显示了,停了,就算不在您业务范围内,本人也诚恳请您帮个忙看看哪里不对,谢谢啊!!!!!~~&nbsp;&nbsp;&nbsp;真的很郁闷。。。
 楼主| huangbingg 发表于 2008-3-31 19:14 | 显示全部楼层

顶上来

周工不要眼睁睁看我沉下去啊&nbsp;&nbsp;呵呵...
zlgarm 发表于 2008-3-31 19:21 | 显示全部楼层

huangbingg,您好!

非常抱歉。之前程序贴错了。<br />请将<br />ILR&nbsp;|=&nbsp;0x01&lt&lt0;<br />ILR&nbsp;|=&nbsp;0x01&lt&lt1;<br />改为:<br />ILR&nbsp;=&nbsp;0x01&lt&lt0;<br />ILR&nbsp;=&nbsp;0x01&lt&lt1;<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By:&nbsp;zlgarm_Zhangxiaomeng
您需要登录后才可以回帖 登录 | 注册

本版积分规则

58

主题

270

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部