注册 登录
查看: 416|回复: 11

[平衡组] 关于循环计数器和程序时间分段的疑问,向各位大神求教!!!

[复制链接]
发表于 2014-4-2 22:13:32 | 显示全部楼层 |阅读模式
看往届技术报告时发现平衡组的程序一般采用【循环计数器】,将直立控制、速度控制和方向控制均匀分配在3个中断片段中:

但绿影队在速度控制中又分为33个时间片段:

我不理解的是:这些时间片段是怎么划分出来的?是在中断函数中用i计数然后再在主函数中用
if(i==?)来判断?????还是别的什么方法?望大神不吝赐教,非常感谢!!!!

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2014-4-2 22:18:45 | 显示全部楼层
软定时器,就是 找个 变量i来计时算一下进入中断的次数
回复 支持 反对

使用道具 举报

发表于 2014-4-2 22:19:22 | 显示全部楼层
3*33 = 99,这个比较容易理解吧?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-2 22:24:46 | 显示全部楼层
栾端静 发表于 2014-4-2 22:18
软定时器,就是 找个 变量i来计时算一下进入中断的次数

那意思是用if(i==?)来判断了,那是在主函数中进行还是在中断函数中进行?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-2 22:27:19 | 显示全部楼层
栾端静 发表于 2014-4-2 22:18
软定时器,就是 找个 变量i来计时算一下进入中断的次数

比如:
if(i==1)
{.......}
else if(i==2)
{.......}
else if(i==3)
{.....}
是不?
回复 支持 反对

使用道具 举报

发表于 2014-4-2 22:32:09 | 显示全部楼层
草原上的星星 发表于 2014-4-2 22:27
比如:
if(i==1)
{.......}

中断里,是用 if(i == ?) 来判断时间到了没有
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-2 22:35:42 | 显示全部楼层
栾端静 发表于 2014-4-2 22:32
中断里,是用 if(i == ?) 来判断时间到了没有

嗯,那这就得准确判断所分配的程序片段的执行时间了,以免执行时间超出分配的时间。上次你跟我说的如何测一段代码的执行时间我还是没有找到,感觉自己很笨
回复 支持 反对

使用道具 举报

发表于 2014-4-2 23:05:04 | 显示全部楼层
草原上的星星 发表于 2014-4-2 22:35
嗯,那这就得准确判断所分配的程序片段的执行时间了,以免执行时间超出分配的时间。上次你跟我说的如何测 ...

PIT 模块就几个例程,其中一个就是计时功能呢,其他的是定时、延时功能。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-3 13:19:45 | 显示全部楼层
栾端静 发表于 2014-4-2 23:05
PIT 模块就几个例程,其中一个就是计时功能呢,其他的是定时、延时功能。

嗯,看见了,那最后的计时总时间应该再减去50ms咯

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2014-5-14 12:07:17 | 显示全部楼层
栾端静 发表于 2014-4-2 22:32
中断里,是用 if(i == ?) 来判断时间到了没有

用switch(){
case 1:
    break;
case 2 :
     break;
也行吧
回复 支持 反对

使用道具 举报

发表于 2014-5-14 12:08:40 | 显示全部楼层
111xian 发表于 2014-5-14 12:07
用switch(){
case 1:
    break;

也行,C语言本来就是灵活的。
回复 支持 反对

使用道具 举报

发表于 2014-5-14 12:15:16 | 显示全部楼层
山外メ雲ジ 发表于 2014-5-14 12:08
也行,C语言本来就是灵活的。

强烈支持,非常感谢哥们
回复 支持 反对

使用道具 举报

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

本版积分规则

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