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

发表在 SDIO2019-11-8 15:18 [复制链接] 0 250

问题:使用了俩个使用模拟IIC读取数据的传感器,一个是IMU,还是一个是PPG传感器,分别创建了俩个线程,传感器的数据都是从传感器FIFO中读取,根据设置的阈值产生中断,单片机通过外部中断进行对FIFO数据读出,并存储到SD卡中,出现问题是某一时刻程序会卡死配置:主控STM32F4,IMU:LSM6DSL,PPG:SI117X,俩个的采样频率均为208Hz,通过模拟iic通信,根据调试,速率400KHZ左右,由于是俩个传感器,所以是俩个中断,设置的是同一个中断向量,只是中断线不同
4 a+ ^( E, o; V1 r2 @测试过程:1 o, \' A" w* o& H, n
(1)俩个传感器线程,仅进入外部中断读取FIFO,不加存储程序部分,OK,不卡死;  x6 G/ p; c2 r7 L
(2)在外部中断中读完FIFO后,加入存储部分程序,出现不间断卡死
# p, t( \' V9 E0 }$ S% r) P9 B猜测:
/ k" t  X  j; P(1)响应不及时,导致FIFO溢出/ w6 U2 ?. @! d$ ]
(2)中断之间存在冲突% s) E& V) r% n
(3)存储部分速率过慢! e0 l7 R" E* c) v/ X6 `1 u: N' s
思考:
3 \7 d- C- a7 n1 R% T  N  \(1)传感器采样频率并不高,为何有种CPU资源不够用的感觉
) Q0 {0 C3 k4 g$ ?8 |. o% S7 {(2)该如何进一步测试或者解决
. e2 R1 d: R+ X- K' Q2 C# e/ \1 D# J% n
(3)是不是使用定时器中断,直接读取会更好?+ U) F6 Y! c2 U( ~

- d# h7 R1 [/ |' T! r附录部分程序:: x6 Z2 _  M" E3 [  [' w% m
" m/ F" r) Z6 G9 |+ T% o, T1 x

线程函数

线程函数

中断响应函数

中断响应函数

PPG传感器线程函数

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

本版积分规则

  1. 3 主题
  2. 71 帖子
  3. 71 积分

Ta的主页 发消息

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

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

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

Powered by RT-Thread

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