智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2631|回复: 8
打印 上一主题 下一主题

kl25脉冲计数

[复制链接]

17

主题

220

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1941

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

威望
1037
贡献
590
兑换币
653
注册时间
2014-2-26
在线时间
157 小时
跳转到指定楼层
1#
发表于 2014-5-18 21:06:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位车友,你们都是怎么弄的编码器测速模块啊?用lptmr还是tpm输入捕捉,kl25不带ftm后续的超声波蔽障也需要输入捕捉,四路输入捕捉,加上本身的电机舵机的pwm,tpm够用吗?求解决办法。。。希望附带程序
回复

使用道具 举报

15

主题

107

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2212
威望
1132
贡献
682
兑换币
724
注册时间
2014-1-30
在线时间
199 小时
推荐
发表于 2014-6-11 21:16:07 | 只看该作者
void LPTMR_init()
{
                        SIM->SCGC5|=SIM_SCGC5_PORTC_MASK;
                        PORTC->PCR[5]|=PORT_PCR_MUX(0x3);
                        SIM->SCGC5|=SIM_SCGC5_LPTMR_MASK;
                        LPTMR0->CSR=0x00;
                        LPTMR0->PSR=0x00;
                        LPTMR0->CMR|=0xffffUL;//±è½ÏÖμ
                        LPTMR0->PSR|=(uint32_t)(0x1UL<<2);
                        LPTMR0->CSR |=(uint32_t)(0x2UL<<4);                //Select the LPTMR_ALT2 as the input clk
      LPTMR0->CSR |=(uint32_t)(0x1UL<<1);                //counter mode selected      
      LPTMR0->CSR|=(uint32_t)0x1UL;                        //enable the counter
                        NVIC_ClearPendingIRQ(LPTimer_IRQn);
                        NVIC_EnableIRQ(LPTimer_IRQn);
}
uint32_t Counter0_Read(void)
{
        uint32_t temp=0;
        LPTMR0->CNR =0x00;
        temp=LPTMR0->CNR;
        return temp;
}
用的PTC5脉冲技数另一路用引脚中断
回复 支持 1 反对 0

使用道具 举报

13

主题

287

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1026

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

威望
572
贡献
272
兑换币
354
注册时间
2013-7-18
在线时间
91 小时
2#
发表于 2014-6-11 20:56:24 | 只看该作者
请问脉冲计数你解决了吗,,,想请教
回复 支持 反对

使用道具 举报

1

主题

18

帖子

0

精华

注册会员

Rank: 2

积分
163
威望
96
贡献
43
兑换币
51
注册时间
2014-4-10
在线时间
12 小时
毕业学校
武汉纺织大学
4#
发表于 2014-7-3 22:05:20 | 只看该作者
綿婲/ka餹 发表于 2014-6-11 21:16
void LPTMR_init()
{
                        SIM->SCGC5|=SIM_SCGC5_PORTC_MASK;

请问读取计数值的时候 ,先请了0 再读出来 temp 不还是0吗?
回复 支持 反对

使用道具 举报

15

主题

107

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2212
威望
1132
贡献
682
兑换币
724
注册时间
2014-1-30
在线时间
199 小时
5#
发表于 2014-7-5 23:32:02 | 只看该作者
魔血染天 发表于 2014-7-3 22:05
请问读取计数值的时候 ,先请了0 再读出来 temp 不还是0吗?

清零之后又给值了呀temp=LPTMR0->CNR给的是计数器的值
   
回复 支持 反对

使用道具 举报

1

主题

18

帖子

0

精华

注册会员

Rank: 2

积分
163
威望
96
贡献
43
兑换币
51
注册时间
2014-4-10
在线时间
12 小时
毕业学校
武汉纺织大学
6#
发表于 2014-7-6 20:42:49 | 只看该作者
可是这之间没有停顿啊,清0后马上给计数器的值,中间可能会没有来得及计数啊
回复 支持 反对

使用道具 举报

6

主题

214

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1647
威望
872
贡献
547
兑换币
571
注册时间
2014-6-19
在线时间
114 小时
毕业学校
河海
7#
发表于 2014-7-8 14:10:50 | 只看该作者
本帖最后由 吕江涛 于 2014-7-8 14:11 编辑


void Counter0_Init(void)
{
         /*First configure the pin of the module will be use*/
         SIM->SCGC5 |=(uint32_t)(0x1UL<<11);                        //open the clock of the PTC
         PORTC->PCR[5] &=~(uint32_t)(0x7UL<<8);
         PORTC->PCR[5] |=(uint32_t)(0x3UL<<8);        //PTC5 for ALT3(LPTMR_ALT2)

         /*Configure the module*/
         SIM->SCGC5 |=(uint32_t)(0x1UL<<0);                        //open the clock of the LPTMR0
         LPTMR0->CSR =0;
         LPTMR0->PSR        =0;
         LPTMR0->CMR        =0xFFFFUL;
         LPTMR0->PSR        |=(uint32_t)(0x1UL<<2);                //prescaler and glitch filter bypassed,if you want to use it,reference the book
         
         LPTMR0->CSR        &=~(uint32_t)(0x3UL<<4);
         LPTMR0->CSR |=(uint32_t)(0x2UL<<4);                //Select the LPTMR_ALT2 as the input clk
         LPTMR0->CSR |=(uint32_t)(0x1UL<<1);                //counter mode selected
         
         LPTMR0->CSR        |=(uint32_t)0x1UL;                        //enable the counter
}
uint32_t Counter0_Read(void)
  {
         uint32_t temp=0;
         LPTMR0->CNR =0x00;
         temp=LPTMR0->CNR;
         return temp;
}
void Counter0_Clear(void)
{
         LPTMR0->CSR =0;
         LPTMR0->PSR        =0;
   LPTMR0->CMR        =0xFFFFUL;
         LPTMR0->PSR        |=(uint32_t)(0x1UL<<2);                //prescaler and glitch filter bypassed,if you want to use it,reference the book
         
         LPTMR0->CSR        &=~(uint32_t)(0x3UL<<4);
         LPTMR0->CSR |=(uint32_t)(0x2UL<<4);                //Select the LPTMR_ALT2 as the input clk
         LPTMR0->CSR |=(uint32_t)(0x1UL<<1);                //counter mode selected
         
         LPTMR0->CSR        |=(uint32_t)0x1UL;                        //enable the counter
}


试过了行的,可以实现脉冲计数,但还有一路编码器计数怎么办


回复 支持 反对

使用道具 举报

17

主题

220

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1941

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

威望
1037
贡献
590
兑换币
653
注册时间
2014-2-26
在线时间
157 小时
8#
 楼主| 发表于 2014-7-18 12:06:42 | 只看该作者
可以引脚中断啊
回复 支持 反对

使用道具 举报

15

主题

107

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2212
威望
1132
贡献
682
兑换币
724
注册时间
2014-1-30
在线时间
199 小时
9#
发表于 2014-7-19 13:41:19 | 只看该作者
wsp1194409532 发表于 2014-7-18 12:06
可以引脚中断啊

大神有程序吗
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-6 18:32 , Processed in 0.053447 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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