外部中断中处理程序导致响应不及时

发表在 SDIO7 天前 [复制链接] 0 40

问题:使用了俩个使用模拟IIC读取数据的传感器,一个是IMU,还是一个是PPG传感器,分别创建了俩个线程,传感器的数据都是从传感器FIFO中读取,根据设置的阈值产生中断,单片机通过外部中断进行对FIFO数据读出,并存储到SD卡中,出现问题是某一时刻程序会卡死配置:主控STM32F4,IMU:LSM6DSL,PPG:SI117X,俩个的采样频率均为208Hz,通过模拟iic通信,根据调试,速率400KHZ左右,由于是俩个传感器,所以是俩个中断,设置的是同一个中断向量,只是中断线不同
9 V& Q; C2 D. A; B0 i测试过程:& q/ k' e" C4 {5 a+ |8 ?
(1)俩个传感器线程,仅进入外部中断读取FIFO,不加存储程序部分,OK,不卡死;) t# ~8 x( ~+ S' L2 ?+ x8 K
(2)在外部中断中读完FIFO后,加入存储部分程序,出现不间断卡死
5 z8 d# t" I- L猜测:/ ~& m, n& c0 j! E2 i
(1)响应不及时,导致FIFO溢出
" C) t% ?6 v1 A6 O! _(2)中断之间存在冲突1 E8 x" V9 i- Q0 _* V
(3)存储部分速率过慢
3 u& P2 Q4 w8 M- ^0 N. i思考:
1 \. }% U6 [! [2 s$ }(1)传感器采样频率并不高,为何有种CPU资源不够用的感觉
4 x) m6 K( b) a. R( d(2)该如何进一步测试或者解决
  S; Q) C$ H) k. Q* W# _8 H2 A4 O0 }! {5 ]  o
(3)是不是使用定时器中断,直接读取会更好?
$ T! f2 X" p5 b3 c7 t7 B
* z( i7 I. b6 J附录部分程序:
; A# Z( M; q! X! e* F  W- C! ^- K" q/ i

线程函数

线程函数

中断响应函数

中断响应函数

PPG传感器线程函数

PPG传感器线程函数
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

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