求解Keil内置多任务系统RTX51的一个问题!!

[复制链接]
4525|13
 楼主| ewby 发表于 2011-6-1 11:16 | 显示全部楼层 |阅读模式
我最近在使用这个实时多任务系统。使用过程中有几个现象我不理解。。我是用proteus做仿真的。
下面的附件是我之前给同学做的一个电梯控制系统的proteus仿真,程序也在里面。
就是我程序里面有个keyboard的Task,这个任务编写成一直都在运行的。但是,每当我在仿真中点击按键的时候,电梯开始走动,LED开始走动的时候keyboard就停止了,,不会扫描键盘了。。


求高手解答哈,非常感谢!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ayb_ice 发表于 2011-6-1 11:41 | 显示全部楼层
这种细节没有人感兴趣的
 楼主| ewby 发表于 2011-6-1 12:52 | 显示全部楼层
2# ayb_ice

:'(
不要这么直接嘛
ayb_ice 发表于 2011-6-1 13:29 | 显示全部楼层
2# ayb_ice

:'(
不要这么直接嘛
ewby 发表于 2011-6-1 12:52

这是实话
刘前辈 发表于 2011-6-1 18:41 | 显示全部楼层
很简单,通过配置文件把时间片关掉。稍做相应修改即可。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| ewby 发表于 2011-6-2 09:29 | 显示全部楼层
5# 刘前辈

如果把时间片关了不是就不会轮换执行任务了?
我的问题是,本来应该在正常执行的keyboard任务却在我按下按键后不执行了,要等电梯走好才继续执行。。

还有就是,为什么我的Keil里面看不到你截图里的conf_tny.A51文件呢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ayb_ice 发表于 2011-6-2 09:50 | 显示全部楼层
5# 刘前辈  

如果把时间片关了不是就不会轮换执行任务了?
我的问题是,本来应该在正常执行的keyboard任务却在我按下按键后不执行了,要等电梯走好才继续执行。。

还有就是,为什么我的Keil里面看不到你截图里的c ...
ewby 发表于 2011-6-2 09:29

应该是程序员有意这样的
 楼主| ewby 发表于 2011-6-2 09:55 | 显示全部楼层
7# ayb_ice

额。。不是的,我程序里面没有在void keyboard () _task_ 1中设定os_wait(K_SIG,0,0)之类的代码。。它不应该会停止来着……
ayb_ice 发表于 2011-6-2 09:59 | 显示全部楼层
粗略看了一下程序结构,
居然在OS结构下调用DELAY
已经没有兴趣了
ayb_ice 发表于 2011-6-2 10:08 | 显示全部楼层
粗略看了一下程序结构,
居然在OS结构下调用DELAY
已经没有兴趣了
ayb_ice 发表于 2011-6-2 09:59

另外我用KEIL仿真,扫键程序一直在运行啊,
proteus仿真可能有问题吧,另外可以硬件运行测试一下,软件仿真比较适合纯数学算法类的东西,这种和硬件关系密切的东西还是实际点好
刘前辈 发表于 2011-6-2 16:16 | 显示全部楼层
本帖最后由 刘前辈 于 2011-6-2 16:40 编辑

支持10楼。LZ几乎还是在编裸奔程序,所以建议你把时间片关掉。
1、如果打开时间片,那么就是开放了异步环境;像go这样的公共变量就成为多任务共享变量,它需要互斥保护。
2、虽然你把任务2、4写成同步方式,——这可以避免共享变量的互斥,结果这个系统按照LZ的设计执行顺序,显然是任务1-4-2,1-4-2,(只有任务3是异步并发的。)—— 如果开放了时间片异步环境,这个顺序可能是任务1-4-1-4-2(任务执行中途被切换)-1-4-2……乱序了。

如何在任务4、2运行时扫描任务1, 又保证任务不重入? 应该……


、、
 楼主| ewby 发表于 2011-6-3 09:18 | 显示全部楼层
11# 刘前辈

请问,为什么开放时间片就会有可能变成“1-4-1-4-2(任务执行中途被切换)-1-4-2……乱序了”。。。十分不解?望点拨
刘前辈 发表于 2011-6-3 12:29 | 显示全部楼层
时间片调度是异步随机发生的!这相当于一个抢占式调度器,所有任务的运行中途都可能被时间片调度剥夺CPU控制权,——时间片一旦耗尽,立即触发调度器切换到其它就绪任务。
     所以,当你的任务2运行期间,(任务2运行开销肯定大于配置默认时间片50ms。)内核调度器肯定被触发并将CPU控制权切换到任务3或者任务1(2个就绪任务),你的任务1-4-2并无条件控制,——记住这时任务2并未执行到结束,它是被时间片中途抢占的;——结果又来一个1-4-2。任务2再次重入,go 乱了吧。

       我讲清楚没有?

修改一下很容易。
      


、、
刘前辈 发表于 2011-6-26 17:14 | 显示全部楼层
修改了一下:把不重要的电路暂时删去了,程序基本不变。 LED开始走动的时候keyboard 扫描键盘仍然有效。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

0

主题

37

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部