注册 登录
查看: 334|回复: 7

[摄像头组] 关于无线调试变量中定时中断的疑问

[复制链接]
发表于 2014-3-30 16:01:33 | 显示全部楼层 |阅读模式
本帖最后由 草原上的星星 于 2014-3-30 16:02 编辑

我想用无线调试器实现直立控制等P、D参数的调节,所以想把直立中级篇的代码和无线调试的代码结合起来使用。在参考山外的例程时发现,在无线调试代码中按键定时检测在PIT0中断中实现:
pit_init_ms(PIT0,10);       //pit 定时中断(用于按键定时扫描)
void PIT0_IRQHandler()
{
    key_IRQHandler();

    PIT_Flag_Clear(PIT0);
}
而在直立中级篇中,PIT0用于直立状态检测和直立控制:

    pit_init_ms(PIT0, 5);      //初始化PIT0,定时时间为: 5ms
我的问题是:
那我可不可以将无线调试的按键检测也和直立控制一起放进PIT0中?或者我应该再建个PIT1用于无线调试的按键检测?
这样会不会冲突?

求大神指点!!!非常感谢



本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2014-3-31 14:38:41 | 显示全部楼层
自己顶一个
回复 支持 反对

使用道具 举报

发表于 2014-3-31 14:42:31 | 显示全部楼层
按键扫描,需要10ms扫描一次,可以加到 直立那里,放在直立后面就好了,然后用个变量来计数,两次中断就进一次按键扫描
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-31 14:56:34 | 显示全部楼层
栾端静 发表于 2014-3-31 14:42
按键扫描,需要10ms扫描一次,可以加到 直立那里,放在直立后面就好了,然后用个变量来计数,两次中断就进一 ...

嗯,多谢指导!那如果用两个定时器呢?会不会冲突?
我看往届的技术报告,直立控制、速度控制到方向控制他们都只用一个定时器,他们采用的是循环计数器:

不过我还是有点疑问:
直立控制他们怎么只用了1ms,论坛上不是有人说他们测的是9ms吗?还有,根据这个技术报告,他们测速计数、速度控制和方向控制都只用了1ms,那他们是怎么确定这些的执行时间不会超过1ms的?

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2014-3-31 15:13:32 | 显示全部楼层
草原上的星星 发表于 2014-3-31 14:56
嗯,多谢指导!那如果用两个定时器呢?会不会冲突?
我看往届的技术报告,直立控制、速度控制到方向控制 ...

直立控制是中断来执行的,每隔5ms进行一次直立控制,你可以理解为 是另外一个CPU来处理(中断了,类似多线程)。

9ms 这个应该是摄像头处理周期吧。

另外,用两个中断没冲突,当然,需要注意中断优先级
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-31 15:20:50 | 显示全部楼层
阙云亭 发表于 2014-3-31 15:13
直立控制是中断来执行的,每隔5ms进行一次直立控制,你可以理解为 是另外一个CPU来处理(中断了,类似多线 ...

那如果直立控制的时间超过5ms了呢?这不就乱了?那有什么办法可以知道某一部分的程序执行了多长时间?
回复 支持 反对

使用道具 举报

发表于 2014-3-31 15:31:47 | 显示全部楼层
草原上的星星 发表于 2014-3-31 15:20
那如果直立控制的时间超过5ms了呢?这不就乱了?那有什么办法可以知道某一部分的程序执行了多长时间?

直立控制本来就应该快速执行,你非要让他太久都不直立控制,那就直立不了咯
回复 支持 反对

使用道具 举报

发表于 2014-3-31 15:32:13 | 显示全部楼层
草原上的星星 发表于 2014-3-31 15:20
那如果直立控制的时间超过5ms了呢?这不就乱了?那有什么办法可以知道某一部分的程序执行了多长时间?

山外哥的代码有计时的函数接口的啊
回复 支持 反对

使用道具 举报

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

本版积分规则

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