智能车制作

标题: kl25脉冲计数 [打印本页]

作者: wsp1194409532    时间: 2014-5-18 21:06
标题: kl25脉冲计数
各位车友,你们都是怎么弄的编码器测速模块啊?用lptmr还是tpm输入捕捉,kl25不带ftm后续的超声波蔽障也需要输入捕捉,四路输入捕捉,加上本身的电机舵机的pwm,tpm够用吗?求解决办法。。。希望附带程序
作者: delay_18    时间: 2014-6-11 20:56
请问脉冲计数你解决了吗,,,想请教

作者: 綿婲/ka餹    时间: 2014-6-11 21:16
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脉冲技数另一路用引脚中断

作者: 魔血染天    时间: 2014-7-3 22:05
綿婲/ka餹 发表于 2014-6-11 21:16
void LPTMR_init()
{
                        SIM->SCGC5|=SIM_SCGC5_PORTC_MASK;

请问读取计数值的时候 ,先请了0 再读出来 temp 不还是0吗?

作者: 綿婲/ka餹    时间: 2014-7-5 23:32
魔血染天 发表于 2014-7-3 22:05
请问读取计数值的时候 ,先请了0 再读出来 temp 不还是0吗?

清零之后又给值了呀temp=LPTMR0->CNR给的是计数器的值
   
作者: 魔血染天    时间: 2014-7-6 20:42
可是这之间没有停顿啊,清0后马上给计数器的值,中间可能会没有来得及计数啊
作者: 吕江涛    时间: 2014-7-8 14:10
本帖最后由 吕江涛 于 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
}


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



作者: wsp1194409532    时间: 2014-7-18 12:06
可以引脚中断啊

作者: 綿婲/ka餹    时间: 2014-7-19 13:41
wsp1194409532 发表于 2014-7-18 12:06
可以引脚中断啊

大神有程序吗





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2