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

[平衡组] 正交解码,只有负数,没有正数?

[复制链接]
发表于 2014-4-20 17:52:39 | 显示全部楼层 |阅读模式
用的山外的源码,为什么不行
回复

使用道具 举报

发表于 2014-4-20 17:53:40 | 显示全部楼层
B相管脚接了没?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-20 18:58:35 | 显示全部楼层
丌官娅硕 发表于 2014-4-20 17:53
B相管脚接了没?

肯定接了啊,而且我问过别人,也是这个问题。
val = FTM_CNT_REG(FTMN[ftmn]);val = FTM_CNT_REG(FTMN[ftmn]);
这个测回来的只有数值,怎么可能有正反转呢?
回复 支持 反对

使用道具 举报

发表于 2014-4-20 19:00:22 | 显示全部楼层
TD烟火 发表于 2014-4-20 18:58
肯定接了啊,而且我问过别人,也是这个问题。
val = FTM_CNT_REG(FTMN[ftmn]);val = FTM_CNT_REG(FTMN[f ...

int16_t 带符号类型来读取,有正负值的。
绝对可以用,我试过的。
你用示波器测测B相管脚,B相管脚决定方向的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-20 19:23:53 | 显示全部楼层
丌官娅硕 发表于 2014-4-20 19:00
int16_t 带符号类型来读取,有正负值的。
绝对可以用,我试过的。
你用示波器测测B相管脚,B相管脚决定 ...

不行啊,我试了,
int16 FTM_QUAD_get(FTMn_e ftmn)
{
    int16_t val;
    ASSERT( (ftmn == FTM1) || (ftmn == FTM2 ) );        //检查传递进来的通道是否正确
    val = FTM_CNT_REG(FTMN[ftmn]);

    return val;
}



void speed_got()
{
   
    int16_t val;
    val = FTM_QUAD_get(FTM1);          //获取FTM 正交解码 的脉冲数(负数表示反方向)
    FTM_QUAD_clean(FTM1);

    if(val>=0)
    {
        printf("\n正转:%d",val);
    }
    else
    {
        printf("\n反转:%d",-val);
    }



这是原函数,不行啊
回复 支持 反对

使用道具 举报

发表于 2014-4-20 19:30:37 | 显示全部楼层
TD烟火 发表于 2014-4-20 19:23
不行啊,我试了,
int16 FTM_QUAD_get(FTMn_e ftmn)
{

正交解码是没问题的,FTM2有bug,在bug汇总那里有说明。
可以测正负值的,检查一下硬件吧,尤其是B相管脚
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-20 19:39:00 | 显示全部楼层
山外メ雲ジ 发表于 2014-4-20 19:30
正交解码是没问题的,FTM2有bug,在bug汇总那里有说明。
可以测正负值的,检查一下硬件吧,尤其是B相管脚 ...

程序肯定就是这样,没问题吧?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-20 19:55:49 | 显示全部楼层
山外メ雲ジ 发表于 2014-4-20 19:30
正交解码是没问题的,FTM2有bug,在bug汇总那里有说明。
可以测正负值的,检查一下硬件吧,尤其是B相管脚 ...

问题汇总链接在哪儿啊
回复 支持 反对

使用道具 举报

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

本版积分规则

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