智能车制作

标题: k60编码器测速模块,速度很慢是可以看到测得的速度,稍微快点LPTM中数据寄存器就是0了 [打印本页]

作者: 陌路樱花泪    时间: 2012-5-15 19:28
标题: k60编码器测速模块,速度很慢是可以看到测得的速度,稍微快点LPTM中数据寄存器就是0了
k60编码器测速模块,速度很慢是可以看到测得的速度,稍微快点LPTM中数据寄存器就是0了,主要是溢出,换时钟啥的都不行?高手指教下是什么原因啊?在PIT中断里测速,不多说了上程序
void PIT_init(){
         SIM_SCGC6|=SIM_SCGC6_PIT_MASK;
         PIT_MCR&=~PIT_MCR_MDIS_MASK;//定时器时钟使能
         PIT_MCR|=PIT_MCR_FRZ_MASK;//在调试模式下停止
         //PIT_MCR=0x00;
         PIT_LDVAL(0)=480;//周期设置
         PIT_TCTRL(0)|=PIT_TCTRL_TIE_MASK;//关中断
         enable_irq(68);
}
//LPTM初始化
  void LPTM_init(){
unsigned int cmp_value=65535;
          
           SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK | SIM_SCGC5_PORTB_MASK | SIM_SCGC5_PORTC_MASK | SIM_SCGC5_PORTD_MASK | SIM_SCGC5_PORTE_MASK;
           SIM_SCGC5|=SIM_SCGC5_LPTIMER_MASK;//开启LPTM模块时钟
           LPTMR0_CSR=0x00;  //清空寄存器
           LPTMR0_PSR=0x00;
           LPTMR0_CMR=0x00;
           SIM_SCGC5 |= SIM_SCGC5_PORTC_MASK; //设置PTC5为脉冲累加
           PORTC_PCR5=PORT_PCR_MUX(0x4); // PTC5       
           PORTC_PCR5|=PORT_PCR_PE_MASK;
           PORTC_PCR5|=(PORT_PCR_PS_MASK);//下拉电阻配置
            LPTMR0_PSR=LPTMR_PSR_PRESCALE(0x01);
                   LPTMR0_PSR|=LPTMR_PSR_PBYP_MASK; //LPO clock1KHZ的时钟 , 预分频绕道              
           LPTMR0_CMR=LPTMR_CMR_COMPARE(cmp_value);
           LPTMR0_CSR|=LPTMR_CSR_TPP_MASK;            //设置上升沿触发计数
           LPTMR0_CSR = LPTMR_CSR_TPS(0x2);//选择输入通道2 C5
           LPTMR0_CSR |=LPTMR_CSR_TMS_MASK;//设置为脉冲计数模式
           LPTMR0_CSR&=~LPTMR_CSR_TFC_MASK;//自由计数模式
          LPTMR0_CSR&=~LPTMR_CSR_TIE_MASK;//不使能中断
          LPTMR0_CSR|=LPTMR_CSR_TEN_MASK;             //开启模块

  }
void pit0_isr()
{   
                   GetFreq=(int16)LPTMR0_CNR;
                LPTMR0_CSR&=(~LPTMR_CSR_TEN_MASK);       //Reset LPTMR0
                        LPTMR0_CSR|=LPTMR_CSR_TEN_MASK;
  PIT_TCTRL(0)|=PIT_TFLG_TIF_MASK;//清中断标志位
}
int main(void)
{
        int counter = 0;//运行计数器
            DisableInterrupts ;
            System_init();
                     PIT_init();
                     LPTM_init();       
        EnableInterrupts ;//开总中断
        PIT_TCTRL(0)|=PIT_TCTRL_TEN_MASK;//开中断
                                             enable_irq(68);

        for(;;) {       
                       
                           counter++;
                        
                   }

        return 0;
}
作者: 野火    时间: 2012-5-15 21:26
溢出的话,lpt开中断,中断里,变量加1就搞定啦。

就是拓展计数位数
作者: 陌路樱花泪    时间: 2012-5-16 10:02
野火 发表于 2012-5-15 21:26
溢出的话,lpt开中断,中断里,变量加1就搞定啦。

就是拓展计数位数

帅哥,帮人帮到底啊,给点程序看看,不知道什么变量加1 啊?


作者: 浮华早逝    时间: 2015-3-8 20:36
野火 发表于 2012-5-15 21:26
溢出的话,lpt开中断,中断里,变量加1就搞定啦。

就是拓展计数位数

有K60 的ftm 模块可以么? 是用输入捕捉模块?




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