打印
[uCOS/RTOS]

关于信号量控制AD采集。

[复制链接]
1741|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sjEE|  楼主 | 2014-3-18 09:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在uc/os系统下,利用时钟节拍函数,定时发送AD开始采集的信号量。同时在AD采集任务开始前也加入一个控制信号量,即需要等待开始信号量后,AD任务才开始采集。
但在实际的实验中,发现串口输出的AD采集的信息不是按设定的频率来得,总是一开始会输出很多信息,之后一段时间才按设定的频率采集。
个人分析原因,好像是AD采集的信号量是从开始一直在按频率发送的,但AD采集任务不确定什么时候开始,所以感觉像是之前发送的信号量堆积在一起了,开始AD任务后,把之前的都采集一遍。不知道是不是这个原因。初学STM32和uc/os不是很懂,不知道说清楚没有,请大家帮忙分析下。谢谢了。

相关帖子

沙发
airwill| | 2014-3-18 22:58 | 只看该作者
这个分析蛮符合逻辑的.
是否考虑启动采集前先情况信号量, 或者搞个握手机制, 控制信号量的发出.

使用特权

评论回复
板凳
SevenWans| | 2014-3-19 08:50 | 只看该作者
看下第一次信号量的值是多少就知道了

使用特权

评论回复
地板
sjEE|  楼主 | 2014-3-19 09:51 | 只看该作者
SevenWans 发表于 2014-3-19 08:50
看下第一次信号量的值是多少就知道了

这个我初学,不是太会怎么看啊?用OSSemQuery吗?

使用特权

评论回复
5
sjEE|  楼主 | 2014-3-19 09:53 | 只看该作者
airwill 发表于 2014-3-18 22:58
这个分析蛮符合逻辑的.
是否考虑启动采集前先情况信号量, 或者搞个握手机制, 控制信号量的发出. ...

清空信号量,怎么清空呢?握手机制,昨天试了下,在开始采集信号量之前加一个控制变量,不用第二个信号量了,可以解决目前的问题,但我觉得uc/os应该也可以控制的啊,还有就是想清楚,为什么信号量会堆积?

使用特权

评论回复
6
duzhongliang| | 2014-3-20 12:44 | 只看该作者
任务优先级低 造成不能及时处理    推荐书  基于嵌入式实时操作系统的程序设计技术.pdf

使用特权

评论回复
7
SevenWans| | 2014-3-20 18:41 | 只看该作者
sjEE 发表于 2014-3-19 09:51
这个我初学,不是太会怎么看啊?用OSSemQuery吗?

就仿真看下信号量的事件控制块啊

使用特权

评论回复
8
sjEE|  楼主 | 2014-3-21 14:19 | 只看该作者
SevenWans 发表于 2014-3-20 18:41
就仿真看下信号量的事件控制块啊

哦,新手,不是太会。我也查查怎么仿真。您方便的话,就详细说下仿真的方法。谢谢了。

使用特权

评论回复
9
duzhongliang| | 2014-3-23 01:10 | 只看该作者
本帖最后由 duzhongliang 于 2014-3-23 11:59 编辑

设置一个全局变量同步一下发送信号量函数和创建采集任务函数,在创建采集任务以后再发信号量。  不知道说对不  因为刚启动系统时采集任务还没有创建(即还没有处就绪态)而这时系统已经启动 在不断的发送信号量

使用特权

评论回复
10
sjEE|  楼主 | 2014-3-24 10:07 | 只看该作者
duzhongliang 发表于 2014-3-23 01:10
设置一个全局变量同步一下发送信号量函数和创建采集任务函数,在创建采集任务以后再发信号量。  不知道说对 ...

恩,这两天没上论坛,我之前也想到这个办法,把问题解决了。不过还是想深入了解下,信号量的机制吧。
按我的理解,信号量是一直在发送的,但是没有接受的话,之前的信号量应该就没有用了,只有当开始接收的时候,当前发送的信号量才有效果。但目前看,显然不是这样的,之前的信号量是存储在了某个地方,所以造成不同步,多发送了。但是信号量存储在哪里了呢?

使用特权

评论回复
11
duzhongliang| | 2014-3-24 21:41 | 只看该作者
信号量实质也就是个变量而已,你发送信号量不就是让任务相应你的嘛,怎么能没有用呢。采集任务没有接受是因为它的优先级不够高,邵贝贝老师的书肯定没有看过4遍, 基于嵌入式实时操作系统的程序设计技术这个是周航慈写的书 ,关于怎么设计基于uc/os-ii的程序。

使用特权

评论回复
12
sjEE|  楼主 | 2014-3-25 14:41 | 只看该作者
duzhongliang 发表于 2014-3-24 21:41
信号量实质也就是个变量而已,你发送信号量不就是让任务相应你的嘛,怎么能没有用呢。采集任务没有接受是因 ...

刚开始接触,确实没看过。恩,好的,我回头多看看,以后有问题还要请教你哈,谢谢了。

使用特权

评论回复
13
duzhongliang| | 2014-3-25 20:38 | 只看该作者
sjEE 发表于 2014-3-25 14:41
刚开始接触,确实没看过。恩,好的,我回头多看看,以后有问题还要请教你哈,谢谢了。 ...

你四川的呀

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

31

帖子

0

粉丝