嵌入式软件

[复制链接]
1875|10
 楼主| xishuidemian 发表于 2014-10-29 19:21 | 显示全部楼层 |阅读模式
在发动机控制中遇到一个问题,要求主循环的周期是固定的,比如20ms,串口发送的周期也要求固定比如100ms。而且为了保证相应速度,主循环的周期要尽可能短。有什么好办法了?单片机编程,没有操作系统。
xlsbz 发表于 2014-10-30 13:41 | 显示全部楼层
你问的问题本身有问题~!
主循环周期固定这个说法本身是错误的。

你的意思是
while (1)
{
    if (20ms到达) {
        搞发动机
    }
    if (100ms到达) {
        搞串口;
    }
}
主循环要尽可能短?为什么?
你是在问问题 还是在又问又答??
keer_zu 发表于 2014-10-30 17:23 | 显示全部楼层
有没有精度的要求啊。
 楼主| xishuidemian 发表于 2014-10-30 20:01 | 显示全部楼层
xlsbz 发表于 2014-10-30 13:41
你问的问题本身有问题~!
主循环周期固定这个说法本身是错误的。

主循环尽可能短是因为发动机的很多控制是需要串口指令控制的,如果主循环长则响应不及时。比如串口中断先收到一个手动加指令,然后又来一个手动减指令,则有可能前面的手动加无法执行。
至于你说主循环周期固定,我的意思并不是说周期完全是固定的。是因为发动机控制的时候有很多分支,有些时间比较长,有些短。现在飞控提出一个要求让我们的周期要跟他们匹配起来。
我这个是涡喷发动机。
 楼主| xishuidemian 发表于 2014-10-30 20:09 | 显示全部楼层
keer_zu 发表于 2014-10-30 17:23
有没有精度的要求啊。

周期精度要求不高,但是希望对指令的响应能快一些。
 楼主| xishuidemian 发表于 2014-10-30 20:19 | 显示全部楼层
顺便再问大家一个问题:串口查询发送的时候,一般要用WHILE查询标志位,如果说犹豫什么原因导致标志位一直不置位,那么主循环就一直停在那了。由于特殊原因我这个程序还不能用看门狗。虽然从来没碰到这种情况发生,但一直心理不踏实。想这个需要弄定时跳出吗?还是有什么好的办法?
hjjadg 发表于 2014-10-30 20:30 | 显示全部楼层
xishuidemian 发表于 2014-10-30 20:19
顺便再问大家一个问题:串口查询发送的时候,一般要用WHILE查询标志位,如果说犹豫什么原因导致标志位一直 ...

设定中断或者设定超时判断试试。比如  while(a){if(a>=20){a=0;}   其它语句}
xlsbz 发表于 2014-10-30 21:10 来自手机 | 显示全部楼层
xishuidemian 发表于 2014-10-30 20:01
主循环尽可能短是因为发动机的很多控制是需要串口指令控制的,如果主循环长则响应不及时。比如串口中断先 ...

你现在这个理解,基本没办法写好软件了。你先把需求说清楚。

评分

参与人数 1威望 +1 收起 理由
lwm1368 + 1 赞一个!

查看全部评分

xlsbz 发表于 2014-10-30 21:13 来自手机 | 显示全部楼层
xishuidemian 发表于 2014-10-30 20:19
顺便再问大家一个问题:串口查询发送的时候,一般要用WHILE查询标志位,如果说犹豫什么原因导致标志位一直 ...

unsigned int i=1000;
while(i--);
604603487 发表于 2014-11-2 10:25 来自手机 | 显示全部楼层
定时器中断可以不
keer_zu 发表于 2014-11-21 18:14 | 显示全部楼层
问题解决了?期待分享感悟。。。。。。。。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

43

帖子

0

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