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

[电磁组] 正交解码的问题 山外哥请进

[复制链接]
发表于 2014-5-10 18:12:35 | 显示全部楼层 |阅读模式
  1. int16 val;
  2. void main(void)
  3. {
  4. //printf("\n*****FTM 正交解码 测试*****\n");

  5.     FTM_QUAD_Init(FTM2);                        //FTM1 正交解码初始化
  6.    port_init_NoALT(FTM2_QDPHA,PULLUP);       //配置管脚上拉(电机驱动模块上已经上拉了,因此此处不需要配置上拉)
  7.    port_init_NoALT(FTM2_QDPHB,PULLUP);
  8.   
  9.    
  10. //pit_init_ms(PIT0, 500);                                 //初始化PIT0,定时时间为: 1000ms
  11.   //set_vector_handler(PIT0_VECTORn ,PIT0_IRQHandler);      //设置PIT0的中断复位函数为 PIT0_IRQHandler
  12. //enable_irq (PIT0_IRQn);                                 //使能PIT0中断

  13.     while(1)
  14.     {
  15.     val = FTM_QUAD_get(FTM2);          //获取FTM 正交解码 的脉冲数(负数表示反方向)
  16.     FTM_QUAD_clean(FTM2);
  17.     };
  18. }
这是我写的程序 为什么读取不到值呢?BUG已改
回复

使用道具 举报

发表于 2014-5-10 18:21:38 | 显示全部楼层
有没有上拉?有没有示波器测过脉冲?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-10 19:04:49 | 显示全部楼层
戈矛 发表于 2014-5-10 18:21
有没有上拉?有没有示波器测过脉冲?

示波器测过 编码器脉冲没问题 就是没有计数值···
回复 支持 反对

使用道具 举报

发表于 2014-5-10 19:06:47 | 显示全部楼层
々炫天空/yiw 发表于 2014-5-10 19:04
示波器测过 编码器脉冲没问题 就是没有计数值···

用过,是没问题的。
没有值,B相有没有接?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-10 19:17:29 | 显示全部楼层
韦嘉淑 发表于 2014-5-10 19:06
用过,是没问题的。
没有值,B相有没有接?

应该接了啊  
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-10 20:49:31 | 显示全部楼层
现在倒是有值了 但是显示的脉冲值很小 正交解码和LPTMR的值差距很大 这是为什么呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-10 20:49:51 | 显示全部楼层
韦嘉淑 发表于 2014-5-10 19:06
用过,是没问题的。
没有值,B相有没有接?

现在倒是有值了 但是显示的脉冲值很小 正交解码和LPTMR的值差距很大 这是为什么呢?
回复 支持 反对

使用道具 举报

发表于 2014-5-10 20:52:13 | 显示全部楼层
々炫天空/yiw 发表于 2014-5-10 20:49
现在倒是有值了 但是显示的脉冲值很小 正交解码和LPTMR的值差距很大 这是为什么呢?

代码修复bug后,应该是没其他问题的了。
感觉是硬件的问题居多,有没有外接上拉电阻?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-10 21:56:47 | 显示全部楼层
山外メ雲ジ 发表于 2014-5-10 20:52
代码修复bug后,应该是没其他问题的了。
感觉是硬件的问题居多,有没有外接上拉电阻?

恩  已经没问题了 现在又另外一个问题 就是我是双电机测速 所以需要用正交和LPTMR 但是我感觉好像冲突 有的时候 两个都能测到 有的时候只有正交可以 这个事为什么啊?
  1.    get_count2();
  2.      //    DELAY_MS(5);
  3.         get_count1();
  4. void get_count1(void)
  5. {
  6.    count1 =  FTM_QUAD_get(FTM2);
  7.    FTM_QUAD_clean(FTM2);
  8.      if(count1>5)
  9.     {
  10.       led_turn (LED0);
  11.     }
  12.    


  13. }
  14. void get_count2(void)
  15. {
  16. count2   =   lptmr_pulse_get();   
  17. lptmr_pulse_clean();
  18.    if(count2>5)
  19.     {
  20.       led_turn (LED1);
  21.     }
回复 支持 反对

使用道具 举报

发表于 2014-5-10 22:09:09 | 显示全部楼层
々炫天空/yiw 发表于 2014-5-10 21:56
恩  已经没问题了 现在又另外一个问题 就是我是双电机测速 所以需要用正交和LPTMR 但是我感觉好像冲突 有 ...

原先是什么问题导致的?
回复 支持 反对

使用道具 举报

发表于 2014-5-10 22:10:47 | 显示全部楼层
々炫天空/yiw 发表于 2014-5-10 21:56
恩  已经没问题了 现在又另外一个问题 就是我是双电机测速 所以需要用正交和LPTMR 但是我感觉好像冲突 有 ...

是不是脉冲的问题?有时有脉冲,有时没脉冲?
两个不相关的模块,是没冲突的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-10 22:22:40 | 显示全部楼层
阙云亭 发表于 2014-5-10 22:10
是不是脉冲的问题?有时有脉冲,有时没脉冲?
两个不相关的模块,是没冲突的

我也不知道该怎么说 就是正交解码 一直是好使的 LPTMR 就需要我单独下一个山外的例程 好用了 感觉就像激活了一样···  我再用我自己写的程序 正交和LPTMR 就都可以用了 然后单片机断电再开 就不行了···
回复 支持 反对

使用道具 举报

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

本版积分规则

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