搜索
bottom↓
回复: 21

高级OS能更好的解决下面的SPI冲突问题吗?

[复制链接]

出0入42汤圆

发表于 2015-9-24 10:33:26 | 显示全部楼层 |阅读模式
    各位,我没用过太高级的OS,目前遇到给问题不知道如何才是最优选择。
    一个SPI接口上挂着两个器件。其中一个是FLASH属于从器件,另一个是传感器,它有触发MCU外部中断的功能,
    而当触发中断后我需要在中断函数中操作SPI来清中断,我也可以发送msg在外面清但是这样时沿就会长些。

    主要冲突是当SPI操作FLASH的时候传感器中断来了,这时如果我优先处理传感器那flash操作就被打乱了,如果此时
    我发送消息那么传感器的处理会有延时。
    还有一种折中的方法就是当中断到来时我先检查是否正在操作flash,如果没有则优先处理传感器中断,如果有则在中
    断中放弃处理传感器而是发送消息延时处理传感器,保证flash不被打乱。

    高级OS是怎么处理这些细节的,是否有更好的方式?

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果天空是黑暗的,那就摸黑生存;
如果发出声音是危险的,那就保持沉默;
如果自觉无力发光,那就蜷伏于牆角。
但是,不要习惯了黑暗就为黑暗辩护;
也不要为自己的苟且而得意;
不要嘲讽那些比自己更勇敢的人。
我们可以卑微如尘土,但不可扭曲如蛆虫。

出0入0汤圆

发表于 2015-9-24 10:35:44 | 显示全部楼层
关中断,操作完flash后再开中断

出0入0汤圆

发表于 2015-9-24 10:43:20 | 显示全部楼层
你这个可以考虑两个SPI端口

出0入0汤圆

发表于 2015-9-24 10:44:10 | 显示全部楼层
用两个SPI或一个用中断做另一个用while做呀

出0入0汤圆

发表于 2015-9-24 10:49:30 | 显示全部楼层
OS不管这个事情。你这个属于对共享资源的处理,怎么干取决于设计者。

出0入0汤圆

发表于 2015-9-24 10:52:05 | 显示全部楼层
RT-Thread的SPI驱动框架使用mutex解决多个CS的问题。

出0入0汤圆

发表于 2015-9-24 10:54:03 | 显示全部楼层
高级OS不也就是个程序吗   判断优先级而已      

出0入42汤圆

 楼主| 发表于 2015-9-24 11:09:26 | 显示全部楼层
dr2001 发表于 2015-9-24 10:49
OS不管这个事情。你这个属于对共享资源的处理,怎么干取决于设计者。

大概明白了。

出0入42汤圆

 楼主| 发表于 2015-9-24 11:10:27 | 显示全部楼层
Tliang 发表于 2015-9-24 10:35
关中断,操作完flash后再开中断

这个方法不错,但是缺点是什么?

出0入0汤圆

发表于 2015-9-24 11:17:14 | 显示全部楼层
本帖最后由 Tliang 于 2015-9-24 11:20 编辑
liyang121316 发表于 2015-9-24 11:10
这个方法不错,但是缺点是什么?


边缘触发方式中断时可能错过中断。

PS:关闭总中断应该不会出现这个情况
操作flash一般时间比较短,响应时间也不是问题

出0入42汤圆

 楼主| 发表于 2015-9-24 11:19:07 | 显示全部楼层
Tliang 发表于 2015-9-24 11:17
边缘触发方式中断时可能错过中断。

恩恩,对的,另外还会有别的负面影响吗?会不会影响一些比较重要的中断?

出0入0汤圆

发表于 2015-9-24 11:24:52 | 显示全部楼层
liyang121316 发表于 2015-9-24 11:19
恩恩,对的,另外还会有别的负面影响吗?会不会影响一些比较重要的中断? ...

关闭总中断应该不会出现这个情况,中断标志还是会有,只是暂时不会马上响应。等操作完flash后开启总中断时一样会响应中断
操作flash一般时间比较短,响应时间也不是问题
这样做应该没什么问题

出0入54汤圆

发表于 2015-9-24 12:25:16 | 显示全部楼层
另一个角度出发,你的传感器中断信号来了要求响应的时间是多少?要求多少时间清除中断?

如果要求不高完全没必要用中断,用查询就好了。

出0入42汤圆

 楼主| 发表于 2015-9-24 12:48:24 | 显示全部楼层
lusson 发表于 2015-9-24 12:25
另一个角度出发,你的传感器中断信号来了要求响应的时间是多少?要求多少时间清除中断?

如果要求不高完全 ...

恩恩,中断频率是1s,响应时间要求应该不高。

出0入54汤圆

发表于 2015-9-24 14:01:17 | 显示全部楼层
liyang121316 发表于 2015-9-24 12:48
恩恩,中断频率是1s,响应时间要求应该不高。

响应时间要求不高的场合,直接用查询就好了。
在能达到要求的情况下少用中断。

出0入0汤圆

发表于 2015-9-24 14:49:18 | 显示全部楼层
dr2001 发表于 2015-9-24 10:49
OS不管这个事情。你这个属于对共享资源的处理,怎么干取决于设计者。

有os的情况可以不用中断这样的设计了。两个线程 加锁就好了

出0入0汤圆

发表于 2015-9-24 14:56:35 | 显示全部楼层
ALUMEI 发表于 2015-9-24 14:49
有os的情况可以不用中断这样的设计了。两个线程 加锁就好了

OS只是提供一系列机制,而不对具体处理/实施方案进行决定。

你说的双线程加锁,是你对于共享资源冲突发生时的处理逻辑选择:即二者是等地位的,必须等一个完成之后,另外一个才能独享控制器。
当然,可以存在其它的处理逻辑,例如通过别的方法释放控制器,从而尽快响应传感器的请求,等等。

不过,OS提供的机制可能对某些场景更适宜,某些场景不够适宜。

出0入0汤圆

发表于 2015-9-24 15:05:13 | 显示全部楼层
dr2001 发表于 2015-9-24 14:56
OS只是提供一系列机制,而不对具体处理/实施方案进行决定。

你说的双线程加锁,是你对于共享资源冲突发 ...

额,os是有些场合合适,有些不合适。
像楼主提出的问题,各自用一组spi 就好了。
另外,想请教你,怎么保证wifi在50m左右的时候,保持信号稳定? wifi 模块大概1.5cm * 1cm 的大小,ic是MT7601U。

出0入0汤圆

发表于 2015-9-24 15:21:58 | 显示全部楼层
ALUMEI 发表于 2015-9-24 15:05
额,os是有些场合合适,有些不合适。
像楼主提出的问题,各自用一组spi 就好了。
另外,想请教你,怎么保 ...

WiFi这事儿没研究过,建议单独发主题等古大师答吧。

不稳定也要看是信号强度不够还是冲突太多,etc。前者的话换天线,加放大,etc。

出90入4汤圆

发表于 2015-9-24 17:55:49 来自手机 | 显示全部楼层
FLASH     HOLD引脚

出0入0汤圆

发表于 2015-9-24 18:29:10 来自手机 | 显示全部楼层
这不就是互斥锁嘛,os很好处理,但是中断不能直接操作,要单独开一个线程来做中断要做的操作

出0入0汤圆

发表于 2015-9-24 20:36:58 | 显示全部楼层
基本上的解决方案相信楼主都想到了,
实时性要求真的很高,就两个SPI ( DMA)吧。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-9-27 06:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表