硬汉嵌入式论坛

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

[RL-RTX] rtx任务调试信息中的delay超出设定值

[复制链接]

20

主题

114

回帖

174

积分

初级会员

积分
174
发表于 2017-3-14 13:55:39 | 显示全部楼层 |阅读模式

1

1

rtx任务调试信息中的delay超出设定值,每过十几秒就会出现一次,这是什么情况?

__task void AppTaskProcessEleMeter(void)
{   
OS_RESULT xResult;
const uint16_t usMaxBlockTime = 200;                 /* 延迟周期 */

    os_itv_set(500);                /* 设置延迟周期 */

    while(1){
        if(Mark.EleMeterEffective){   
            ProcessPowerUpdata();                    /* 通信电表 - 询问当前电耗 */
            
            /* 等待所有任务发来的事件标志 */
            xResult = os_evt_wait_and(TASK_BIT_0, usMaxBlockTime);
            switch (xResult){                        /* 接收到所有任务都发来的事件标志 */
                case OS_R_EVT:
                    ProcessPower();                    /* 处理读到的电表电耗 */   
                    os_evt_clr(TASK_BIT_0, HandleTaskProcessEleMeter);
                    break;   
                case OS_R_TMO:                        /* 超时 */
                    break;
                default:                            /* 其他值不处理 */                     
                    break;
            }                        
        }
        os_evt_set(TASK_BIT_0, HandleTaskStart);    /* 发送事件标志,表示任务正常运行 */
        os_itv_wait();                                /* os_itv_wait是绝对延迟,os_dly_wait是相对延迟。*/   
    }
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106978
QQ
发表于 2017-3-14 14:13:12 | 显示全部楼层
把你的实现架构改改,既然有了事件标志组,就没有必要使用这种裸机式的标志判断了  if(Mark.EleMeterEffective)

另外事件标志组本身有延迟功能,没有必须在使用  os_itv_set(500); 和os_itv_wait();  了
回复

使用道具 举报

20

主题

114

回帖

174

积分

初级会员

积分
174
 楼主| 发表于 2017-3-14 14:25:44 | 显示全部楼层
好的,谢谢!
测试了就是构架问题造成的!
回复

使用道具 举报

5

主题

578

回帖

593

积分

版主

Rank: 7Rank: 7Rank: 7

积分
593
发表于 2017-3-28 13:33:05 | 显示全部楼层
区间延时和普通的延时,包括等待各种同步量的延时等待时间,还是有区别的,正如注释所说,区间延时保证的延时到底的时间点的准确性,但是不保证两次延迟时间的一致性

比如,从0秒开始,延迟100毫秒,区间延时会很好的保证在0,0.1, 0.2, 。。。这些时间点上延时结束,而普通延时就不是这样了,误差会累积,n次延时后和时间点几乎没有一一对应关系

某些严格时序的程序,如果不用软件定时器,还是用区间延时比较好
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-12 23:13 , Processed in 0.170258 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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