打印
[STM32]

求问大神这个逻辑功能如何实现

[复制链接]
850|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
雨声|  楼主 | 2017-9-2 10:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机的主程序是一个循环程序:通过I2C不断的去读一台设备里的数据,然后检测数据是否异常,有异常要马上关闭设备。同时我的单片机又和外部多台设备有通讯连接关系,他们通讯时会中断打断我的主程序。那么问题来了,我不想让这些中断打断我主程序里的检测该怎么办?因为主程序里的检测涉及到安全问题很重要,有故障要马上停止,万一在中断时设备出了故障被延时了一段时间岂不是完蛋。虽然像485这类的通讯中断子程序执行速度很快,但是要换成其他延时长一点的中断呢,就会对主程序造成很大的威胁了。所以请问一下大神有没有什么好的解决办法?

相关帖子

沙发
mailshichao| | 2017-9-2 20:28 | 只看该作者
这个考验的是你的程序架构的问题了,不管是不是涉及安全的问题,在任何产品上, 如果有这样的问题,都是不行的。

使用特权

评论回复
板凳
雨声|  楼主 | 2017-9-4 17:02 | 只看该作者
mailshichao 发表于 2017-9-2 20:28
这个考验的是你的程序架构的问题了,不管是不是涉及安全的问题,在任何产品上, 如果有这样的问题,都是不 ...

那么大神你看有什么好的程序构架方案可以解决我这个问题呢?我是想了很久想不出好方法才来问的

使用特权

评论回复
地板
宇容创行| | 2017-9-4 19:08 | 只看该作者
方法1 关中断
方法2 中断执行时间尽可能短,把耗时的放到主程序
方法3 再加一个cpu

使用特权

评论回复
5
mailshichao| | 2017-9-6 13:39 | 只看该作者
雨声 发表于 2017-9-4 17:02
那么大神你看有什么好的程序构架方案可以解决我这个问题呢?我是想了很久想不出好方法才来问的[em:tsj05: ...

就是任何程序都不能长时间占用CPU的时间,也就是你要把任务打碎分时处理,如果有用操作系统,就好弄多了,我觉的,你这个安全性的操作放到中断中嘛,

使用特权

评论回复
6
ningling_21| | 2017-9-6 14:36 | 只看该作者
楼上正解

使用特权

评论回复
7
john_lee| | 2017-9-6 17:05 | 只看该作者
要保证实时性:I2C用硬件,不要软件模拟,I2C中断设置为最高优先级,并且在中断里直接进行数据异常处理。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
雨声 + 1 结贴的时候分给错了,你的答案才是最好的,提到硬件i2c是关键
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

24

帖子

0

粉丝