打印
[ZLG-ARM]

关于VIC中,强制软中断的使用

[复制链接]
1757|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
leon0001|  楼主 | 2007-12-11 14:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ic, vi, spi, pi, AD
在VIC中,可以实现强制软中断。
由于,整个系统任务较多,而且有好几级中断。
那么,比如,AD采集,采用SPI口,ARM为主机
当ARM 通过SPI口向AD发送控制转换命令时,若此时有其他任务产生中断,
那么,则会出现一下情况:
  (1)停止SPI口发送数据
   (2)响应中断
  则:由于AD通过SPI口只接受了不到一个字节数据,此时,主程序要停止SPI发送,去响应中断,那么,明显地,此时AD就不能按照ARM要求进行相应通道的数据采集,造成AD采集误差。

解决方法:可以使用软中断。
          设置一个标志位,比如,SPI_FLAG,当需要发送AD转换控制命令时或者需要读取AD转换结果值时,令SPI_FLAG=1,此时,可以采用以下语句,令进入软件中断,在中断中,不受打扰情况下(禁止中断嵌套),完成AD转换或AD数据接受。
 
if(SPI_FLAG==1)//Vol_Dem为1,表示仍为标定过程
   {
     VICIntEnable|=0x00000800;//使能SPI1中断
     VICSoftInt|=0x00000800;//强制产生SPI1中断
   }
 
请问,周工,我这样分析对吧?

相关帖子

沙发
leon0001|  楼主 | 2007-12-13 11:47 | 只看该作者

周工,这样没问题吧?

使用特权

评论回复
板凳
zlgarm| | 2007-12-13 17:43 | 只看该作者

re

不需要这么复杂
如果您不想让一个过程被别的任务打断,那你可以在做这个操作前先调用操作系统的关中断函数就可以了,等你操作结束再开中断就可了!

使用特权

评论回复
地板
leon0001|  楼主 | 2007-12-14 16:46 | 只看该作者

多谢啊

我还想再问一下,如果按照我上面说的,
强制进入软中断,也是可以的吧?

使用特权

评论回复
5
leon0001|  楼主 | 2007-12-14 16:54 | 只看该作者

说软中断不确切

确切就是,利用VIC控制器,强制产生一个中断,在此中断中,执行比如AD采样等

使用特权

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

本版积分规则

61

主题

139

帖子

0

粉丝