智能车制作
标题:
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