硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3263|回复: 11
收起左侧

[FreeRTOS] 关于用FreeRTOS的问题

[复制链接]

35

主题

80

回帖

185

积分

初级会员

积分
185
发表于 2018-5-2 17:39:42 | 显示全部楼层 |阅读模式
在做项目的时候发现一个问题点;
触摸任务处于最高优先级任务,有一个低优先级的任务是读取传感器的数据,每次读取的时候任务上锁,防止高优先级的任务打断,
任务上锁的时间有点长,如果这个时候点击触摸,有时候会出现触摸不灵敏的情况,可能是低优先级任务上锁的原因;
请问有什么方法可以让触摸实时响应,但是低优先级的传感器数据又可以正常读取呢?采用的是FreeRTOS系统;
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
发表于 2018-5-2 18:02:58 | 显示全部楼层
仅对传感器任务的关键部分上锁,而且降低读取的频率。这样会好点
另外就是将其也放到你触摸任务里面,是不是好点。
回复

使用道具 举报

35

主题

80

回帖

185

积分

初级会员

积分
185
 楼主| 发表于 2018-5-3 09:23:06 | 显示全部楼层
放到触摸任务中是不行的,触摸任务释放CPU的时间比较短,而传感器读取数据时间差不多在1s左右,这样会导致触摸的时候比较卡;如果将触摸任务延时改为1s,那么触摸就不灵敏;
FreeRTOS中有没有什么机制可以改变这种现象的?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
发表于 2018-5-3 10:40:32 | 显示全部楼层
东北f4 发表于 2018-5-3 09:23
放到触摸任务中是不行的,触摸任务释放CPU的时间比较短,而传感器读取数据时间差不多在1s左右,这样会导致 ...

如果是这样的话,你的这个传感器不适合用RTOS。建议直接用廉价的F0或者STM8去搞这个非实时性的东西,相关的器件全部弄到他们下面。
回复

使用道具 举报

0

主题

7

回帖

148

积分

初级会员

积分
148
发表于 2018-5-3 12:35:27 | 显示全部楼层
eric2013 发表于 2018-5-3 10:40
如果是这样的话,你的这个传感器不适合用RTOS。建议直接用廉价的F0或者STM8去搞这个非实时性的东西,相关 ...

很多传感器的转换时间都比较长,难道要用RTOS就要做一个外挂采集板,这好D疼
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
发表于 2018-5-3 16:33:01 | 显示全部楼层
269058519 发表于 2018-5-3 12:35
很多传感器的转换时间都比较长,难道要用RTOS就要做一个外挂采集板,这好D疼

是的,这种器件太影响RTOS的执行了,其实已经不适合用RTOS了。
回复

使用道具 举报

27

主题

95

回帖

181

积分

初级会员

积分
181
发表于 2018-5-5 11:02:09 | 显示全部楼层
269058519 发表于 2018-5-3 12:35
很多传感器的转换时间都比较长,难道要用RTOS就要做一个外挂采集板,这好D疼

传感器转换完成和未完成应该有标志的吧。读取传感器时,检测标志位(硬件标志或软件标志),如果完成则读取,没完成则退出。这样不会迟影响其他任务。RTOS中,是绝对不能让一个任务始终占用CPU的,要设置一个超时机制或轮循。

点评

这位兄弟正解。 传感器转换时间长没关系,读取时间不可能特别长,不然还要别个怎么用。 系统不能够等待传感器转换完成,读传感器的任务定时去查询状态就可以了,如果可读才读取,不可读就走了,下次再来。  发表于 2018-5-7 10:41
回复

使用道具 举报

35

主题

80

回帖

185

积分

初级会员

积分
185
 楼主| 发表于 2018-5-19 14:51:45 | 显示全部楼层
检测到标志位后,光传感器读取的时间可能有2-3秒;在读取的时候进入临界断,如果此时触摸任务来可能无法响应;
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
发表于 2018-5-19 15:05:31 | 显示全部楼层
像18B20那种,更没法弄,有严格时序要求,也没有什么标志可查,麻烦就麻烦在这里了。比较影响系统实时性。
回复

使用道具 举报

65

主题

432

回帖

632

积分

金牌会员

积分
632
发表于 2018-5-28 22:06:54 | 显示全部楼层
人机交互式必须最高优先级实时处理的,你这个传感器根本不适合RTOS的思想,建议加一个小的MCU专门采集传感器,然后用UART或者SPI给主MCU发数据
回复

使用道具 举报

6

主题

17

回帖

35

积分

新手上路

积分
35
发表于 2018-6-22 16:13:09 | 显示全部楼层
嗯,可能用18b20+rtos这类的可能更偏重的任务调度吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-5 01:53 , Processed in 0.240325 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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