智能车制作

标题: 如何判断FTM中断是由Rising还是Failing触发 [打印本页]

作者: hmyyellow    时间: 2014-3-31 19:20
标题: 如何判断FTM中断是由Rising还是Failing触发
FTM是可以在初始化时通过设置Rising_or_Failiing设定为双触发的,那请问要如何判断当前的触发是由Rising 还是 Failing事件触发的呢?

作者: hmyyellow    时间: 2014-3-31 20:02
本帖最后由 hmyyellow 于 2014-3-31 20:11 编辑

竟然没人理那就把这贴写成问题解决过程吧提出这个问题,主要是我们在做一个倒立摆的实验。目地是使用一个编码器来测倒立摆的偏转角。
我们通过根循迹法确定了偏转角和应给小车加速度之间的关系。目前小车能在初始的几秒内保持稳定,但是时间一长会由于方向的反复偏差使得测量的偏转角产生较大误差,故想使用倍频的方法来消除误差(详见bbs.21ic.com/icview-50575-1-1.html)K60的FTM是可以配置为Rising_or_Failing的方式触发,但看说明无法找到当前触发事件是Rising 还是 Failing


作者: zhou1994    时间: 2014-3-31 22:08
你是怎么初始化的就是怎么触发啊。。。
作者: hmyyellow    时间: 2014-3-31 22:23
zhou1994 发表于 2014-3-31 22:08
你是怎么初始化的就是怎么触发啊。。。

呃。。可能没表达清楚。这么说吧,若触发时我设置为Rising_or_Failiing,而非单纯的Risin或者Failiing,那么FTM被触发时除非直接访问那个接口的寄存器取值(当然,如果我找到方法读的话早就不用纠结了),是无法判断本次触发到底是由Rising还是Failing触发的

作者: hmyyellow    时间: 2014-3-31 22:26
忽然想到了一个很挫的解决办法,既然问题是不知道如何在已将某管脚(PTXx)设为FTM触发时如何读它的值而无法判断当前为Rising 或 Failing,那不如直接另开一路gpio,把PTXx用电线直接多分一路接到新开的gpio上,然后直接gpio_get去读PTXx的值就完事啦!
作者: zhou1994    时间: 2014-3-31 22:50
hmyyellow 发表于 2014-3-31 22:23
呃。。可能没表达清楚。这么说吧,若触发时我设置为Rising_or_Failiing,而非单纯的Risin或者Failiing,那 ...

我懂你的意思了。你就说你想从跳变沿里面找出本次触发的方式嘛。但是你为什么要这么做呢?
作者: czr27    时间: 2014-4-1 00:00
触发后读io电平是良策
作者: Quixote    时间: 2014-4-1 14:19
为何如此纠结?

作者: hmyyellow    时间: 2014-4-1 20:14
zhou1994 发表于 2014-3-31 22:50
我懂你的意思了。你就说你想从跳变沿里面找出本次触发的方式嘛。但是你为什么要这么做呢?

因为我们遇到了这样的问题bbs.21ic.com/icview-50575-1-1.html,想要用倍频的方法来解决它

作者: hmyyellow    时间: 2014-4-1 20:16
czr27 发表于 2014-4-1 00:00
触发后读io电平是良策

其实经过测试,这个方法也是不行的。因为有延迟这个问题的存在,所以即使设置为只通过Rising来触发FTM,就算在FTM Handler里第一句就去用gpio_get去读电平,读到的都不一定是1

作者: czr27    时间: 2014-4-1 20:27
hmyyellow 发表于 2014-4-1 20:16
其实经过测试,这个方法也是不行的。因为有延迟这个问题的存在,所以即使设置为只通过Rising来触发FTM,就 ...

频率太快了吧都超过几个总线周期了 这样进中断也是堵塞的
作者: hmyyellow    时间: 2014-4-1 21:23
czr27 发表于 2014-4-1 20:27
频率太快了吧都超过几个总线周期了 这样进中断也是堵塞的

能详细讲一下这里提到的阻塞是怎么回事么??
作者: czr27    时间: 2014-4-1 23:03
hmyyellow 发表于 2014-4-1 21:23
能详细讲一下这里提到的阻塞是怎么回事么??

进了a中断此时a中断又触发了或者其他中断触发了 如果处理是中断了关总中断 就丢了很多次触发  我理解是阻塞了





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2