注册 登录
查看: 419|回复: 16

[K60] 山外哥 工程在这里 我是LQ的板子用的你们山外的库

[复制链接]
发表于 2014-7-1 09:51:08 | 显示全部楼层 |阅读模式
                                工程已贴

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2014-7-1 09:58:46 | 显示全部楼层
他们获取count的代码是:
  1. /*
  2. * Get the current LPTMR Counter Value.
  3. *
  4. * On each read of the LPTMR counter register, software must first write to the
  5. * LPTMR counter register with any value. This will synchronize and register the
  6. * current value of the LPTMR counter register into a temporary register. The
  7. * contents of the temporary register are returned on each read of the LPTMR
  8. * counter register.
  9. */
  10. uint16 get_counter_value()
  11. {
  12.   LPTMR0_CNR=0x1;
  13.   return LPTMR0_CNR;
  14. }
而我们的:
  1. /*!
  2. *  @brief      获取LPTMR脉冲计数值
  3. *  @return     脉冲计数值
  4. *  @since      v5.0
  5. *  Sample usage:       uint16 data = lptmr_pulse_get();  //获取脉冲计数值
  6. */
  7. uint16 lptmr_pulse_get(void)
  8. {
  9.     uint16 data;
  10.     if(LPTMR0_CSR & LPTMR_CSR_TCF_MASK)     //已经溢出了
  11.     {

  12.         data = ~0;                          //返回 0xffffffff 表示错误
  13.     }
  14.     else
  15.     {
  16. #if defined(MK60F15)                //试下删掉这一行
  17.         LPTMR0_CNR = 0;
  18. #endif                               //试下删掉这一行
  19.         data = LPTMR0_CNR;
  20.     }
  21.     return data;
  22. }
看我上面的注释,试下删掉上述的两行。看看行不行。
回复 支持 反对

使用道具 举报

发表于 2014-7-1 09:59:34 | 显示全部楼层
如果还是不行,那你把 LPTMR0_CNR = 0; 改为 LPTMR0_CNR = 1;

看看行不行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-1 10:01:08 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-1 09:58
他们获取count的代码是:而我们的:看我上面的注释,试下删掉上述的两行。看看行不行。

山外哥    你贴出来的可是你们的新库工程?
回复 支持 反对

使用道具 举报

发表于 2014-7-1 10:04:49 | 显示全部楼层
还不够 发表于 2014-7-1 10:01
山外哥    你贴出来的可是你们的新库工程?

是哦,你用的是旧版本的库?

我们旧版本的库是直接读取 LPTMR0_CNR。

那你改成 lq 的那个函数来获取计数值,看看行不行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-1 10:06:03 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-1 10:04
是哦,你用的是旧版本的库?

我们旧版本的库是直接读取 LPTMR0_CNR。

恩   你们的新库就库我都有   马上我就测试   下午还要考试   要复习
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-1 10:12:34 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-1 09:59
如果还是不行,那你把 LPTMR0_CNR = 0; 改为 LPTMR0_CNR = 1;

看看行不行

脉冲用串口发出来一直是0
  1. uint16 lptmr_pulse_get(void)
  2. {
  3.     uint16 data;
  4.     if(LPTMR0_CSR & LPTMR_CSR_TCF_MASK)     //已经溢出了
  5.     {

  6.         data = ~0;                          //返回 0xffffffff 表示错误
  7.     }
  8.     else
  9.     {
  10. //#if defined(MK60F15)
  11.         LPTMR0_CNR = 1;
  12. //#endif
  13.         data = LPTMR0_CNR;
  14.     }
  15.     return data;
  16. }
回复 支持 反对

使用道具 举报

发表于 2014-7-1 10:17:32 | 显示全部楼层
还不够 发表于 2014-7-1 10:12
脉冲用串口发出来一直是0

新版本的代码,是有FX和DN之分,你选择了哪个模式?左上角的地方配置
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-1 10:19:45 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-1 10:17
新版本的代码,是有FX和DN之分,你选择了哪个模式?左上角的地方配置

            DZ10模式
回复 支持 反对

使用道具 举报

发表于 2014-7-1 10:45:24 | 显示全部楼层
还不够 发表于 2014-7-1 10:19
DZ10模式

我对比了一下寄存器配置,应该没其他不同的地方啦。

他们的寄存器初始化配置为:
  1.   LPTMR0_PSR=LPTMR_PSR_PCS(0x1)|LPTMR_PSR_PBYP_MASK; //Use LPO clock but bypass glitch filter
  2.   LPTMR0_CMR=LPTMR_CMR_COMPARE(compare_value);  //Set compare value
  3.   LPTMR0_CSR=LPTMR_CSR_TPS(pin_select)|LPTMR_CSR_TMS_MASK; //Set LPT to use the pin selected, and put in pulse count mode, on rising edge (default)
我没看出还有其他特别的地方

回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-1 11:50:36 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-1 10:45
我对比了一下寄存器配置,应该没其他不同的地方啦。

他们的寄存器初始化配置为:我没看出还有其他特别 ...

就是 我就没明白用他们的工程都测得到速度    照你的修改用你们的例程测速一直为0
回复 支持 反对

使用道具 举报

发表于 2014-7-1 12:41:15 | 显示全部楼层
还不够 发表于 2014-7-1 11:50
就是 我就没明白用他们的工程都测得到速度    照你的修改用你们的例程测速一直为0

你尝试精简他们的代码,慢慢屏蔽不相关的代码。看看情况吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-1 13:53:57 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-1 12:41
你尝试精简他们的代码,慢慢屏蔽不相关的代码。看看情况吧

我直接复制他们的过来都函数过来都还是不行呢
回复 支持 反对

使用道具 举报

发表于 2014-7-1 13:56:08 | 显示全部楼层
还不够 发表于 2014-7-1 13:53
我直接复制他们的过来都函数过来都还是不行呢

他们有我们这种型号的单片机,你问下他们,这两种单片机的lptmr 有什么区别吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-1 13:56:59 | 显示全部楼层
额  好的   我晚上问他们技术    这个你们也不知道吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-1 14:00:29 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-1 13:56
他们有我们这种型号的单片机,你问下他们,这两种单片机的lptmr 有什么区别吧。

还要向你反映个问题   我用你们以前的库能测出来数据  INT_COUNT定义为100   
count           =   LPTMR0_CNR;
打印:LPT_INT_count*INT_COUNT +  count;之后就用 lptmr_counter_clean();  
输出结果是整百整百的增长   不能显示出个位与十位数据
回复 支持 反对

使用道具 举报

发表于 2014-7-1 14:16:00 | 显示全部楼层
还不够 发表于 2014-7-1 13:56
额  好的   我晚上问他们技术    这个你们也不知道吗

因为我们没用过他们的型号,所以不知道很正常。
回复 支持 反对

使用道具 举报

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

本版积分规则

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