智能车制作

 找回密码
 注册

扫一扫,访问微社区

123
返回列表 发新帖
楼主: 天涯小极莫
打印 上一主题 下一主题

K60讨论:LPT脉冲捕捉问题代码

  [复制链接]

2

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
威望
118
贡献
51
兑换币
66
注册时间
2013-3-23
在线时间
16 小时
毕业学校
万方
21#
发表于 2013-4-7 00:18:37 | 只看该作者
学习中。。。。。。。
回复 支持 反对

使用道具 举报

22

主题

134

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1646

优秀会员奖章活跃会员奖章

威望
810
贡献
544
兑换币
306
注册时间
2011-12-25
在线时间
146 小时
22#
发表于 2013-4-8 13:12:02 | 只看该作者
天涯小极莫 发表于 2012-2-17 20:04
问题已解决,但想说这东西有些不稳定

想请问一下楼主怎么解决这个问题,我现在读出来的LPTMR0_CNR一直为零,我也觉得是在这一句上程序卡死了
回复 支持 反对

使用道具 举报

14

主题

141

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2809
威望
1451
贡献
826
兑换币
314
注册时间
2011-3-18
在线时间
266 小时
23#
 楼主| 发表于 2013-4-8 21:45:47 | 只看该作者
寒窗乍暖 发表于 2013-4-8 13:12
想请问一下楼主怎么解决这个问题,我现在读出来的LPTMR0_CNR一直为零,我也觉得是在这一句上程序卡死了

重新初始化
回复 支持 反对

使用道具 举报

8

主题

25

帖子

0

精华

高级会员

Rank: 4

积分
557
威望
247
贡献
122
兑换币
139
注册时间
2014-4-20
在线时间
94 小时
毕业学校
华北水利水电大学
24#
发表于 2014-9-8 10:26:22 | 只看该作者
sunnyfei 发表于 2012-4-14 14:54
我们的计数好像比实际的大很多,怎么回事

我的怎么都一直没数据呢?
回复 支持 反对

使用道具 举报

8

主题

25

帖子

0

精华

高级会员

Rank: 4

积分
557
威望
247
贡献
122
兑换币
139
注册时间
2014-4-20
在线时间
94 小时
毕业学校
华北水利水电大学
25#
发表于 2014-9-8 10:34:53 | 只看该作者
你的这个代码现在能用吗
回复 支持 反对

使用道具 举报

8

主题

25

帖子

0

精华

高级会员

Rank: 4

积分
557
威望
247
贡献
122
兑换币
139
注册时间
2014-4-20
在线时间
94 小时
毕业学校
华北水利水电大学
26#
发表于 2014-9-8 11:24:15 | 只看该作者
void lptmr_pulse_counter()
{
         uint32 compare_value=50000;
         SIM_SCGC5|=SIM_SCGC5_LPTIMER_MASK;  //开启模块的时钟单元
          
          LPTMR0_CSR=0x00;                    //LPTMR的初始化
          LPTMR0_PSR=0x00;
          LPTMR0_CMR=0x00;
         
          SIM_SCGC5 |= SIM_SCGC5_PORTC_MASK; //Turn on PORTC clock
          PORTC_PCR5=PORT_PCR_MUX(0x4);      //Use ALT4 on PTC5

          LPTMR0_PSR|=LPTMR_PSR_PCS(0x1)|LPTMR_PSR_PBYP_MASK;  //Use LDO but bypass glitch filter

          LPTMR0_CMR|=LPTMR_CMR_COMPARE(compare_value);        //Set compare value
          
          LPTMR0_CSR|=LPTMR_CSR_TPS(0x2);            //Set LPT to use the pin selected
          LPTMR0_CSR|=LPTMR_CSR_TMS_MASK;            //put in pulse count mode   上升沿捕捉
          LPTMR0_CSR|=LPTMR_CSR_TEN_MASK;   
}
void pit1_isr(void)
{  
                disable_irq (69);
      if((PIT_TFLG0&PIT_TFLG_TIF_MASK)!=0)
      {   
              LPTMR0_CNR=0x01;
              d = LPTMR0_CNR;                                             //保存脉冲计数器计算值
              uart_send(chai,5);
              uart_putchar(',');
              LPTMR0_CSR &= ~(0x01);
              LPTMR0_CSR |= (0x01);//LPT0_ALT2,计数模式
             // LPTMR_CSR_REG(LPTMR0_BASE_PTR)  &= ~LPTMR_CSR_TEN_MASK;     //重启LPTMR 清计数
             // LPTMR_CSR_REG(LPTMR0_BASE_PTR)  |=LPTMR_CSR_TEN_MASK;  
            PIT_TFLG0|=PIT_TFLG_TIF_MASK;       //清标志
            lptmr_pulse_counter();
      }
      enable_irq (69);
}
回复 支持 反对

使用道具 举报

8

主题

25

帖子

0

精华

高级会员

Rank: 4

积分
557
威望
247
贡献
122
兑换币
139
注册时间
2014-4-20
在线时间
94 小时
毕业学校
华北水利水电大学
27#
发表于 2014-9-8 11:24:54 | 只看该作者
③⑦喥の膤 发表于 2014-9-8 11:24
void lptmr_pulse_counter()
{
         uint32 compare_value=50000;

void lptmr_pulse_counter()
{
         uint32 compare_value=50000;
         SIM_SCGC5|=SIM_SCGC5_LPTIMER_MASK;  //开启模块的时钟单元
          
          LPTMR0_CSR=0x00;                    //LPTMR的初始化
          LPTMR0_PSR=0x00;
          LPTMR0_CMR=0x00;
         
          SIM_SCGC5 |= SIM_SCGC5_PORTC_MASK; //Turn on PORTC clock
          PORTC_PCR5=PORT_PCR_MUX(0x4);      //Use ALT4 on PTC5

          LPTMR0_PSR|=LPTMR_PSR_PCS(0x1)|LPTMR_PSR_PBYP_MASK;  //Use LDO but bypass glitch filter

          LPTMR0_CMR|=LPTMR_CMR_COMPARE(compare_value);        //Set compare value
          
          LPTMR0_CSR|=LPTMR_CSR_TPS(0x2);            //Set LPT to use the pin selected
          LPTMR0_CSR|=LPTMR_CSR_TMS_MASK;            //put in pulse count mode   上升沿捕捉
          LPTMR0_CSR|=LPTMR_CSR_TEN_MASK;   
}
void pit1_isr(void)
{  
                disable_irq (69);
      if((PIT_TFLG0&PIT_TFLG_TIF_MASK)!=0)
      {   
              LPTMR0_CNR=0x01;
              d = LPTMR0_CNR;                                             //保存脉冲计数器计算值
              uart_send(chai,5);
              uart_putchar(',');
              LPTMR0_CSR &= ~(0x01);
              LPTMR0_CSR |= (0x01);//LPT0_ALT2,计数模式
             // LPTMR_CSR_REG(LPTMR0_BASE_PTR)  &= ~LPTMR_CSR_TEN_MASK;     //重启LPTMR 清计数
             // LPTMR_CSR_REG(LPTMR0_BASE_PTR)  |=LPTMR_CSR_TEN_MASK;  
            PIT_TFLG0|=PIT_TFLG_TIF_MASK;       //清标志
            lptmr_pulse_counter();
      }
      enable_irq (69);
}


帮我看看有什么问题,数据一直为零

回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2025-2-24 13:37 , Processed in 0.045841 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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