飞思卡尔HCS12智能车测速程序实现与解析

4星 · 超过85%的资源 需积分: 12 10 下载量 76 浏览量 更新于2024-09-17 1 收藏 2KB TXT 举报
"该资源是关于飞思卡尔HCS12系列微控制器的智能车测速程序,利用编码器进行速度检测。程序中涉及到的主要功能包括初始化 PLL(锁相环)以提高系统时钟频率、配置 PACB(脉冲宽度调制)模块用于外部中断以及设置电机控制定时器(MCTimer,MDC)来实现精确的时间间隔测量。" 在飞思卡尔HCS12智能车测速程序中,主要涉及以下几个关键知识点: 1. **锁相环(PLL)初始化**:通过`Start_PLL()`函数,设置了REFDV和SYNR寄存器来调整PLL的工作状态,将系统时钟提升到32MHz的两倍,即64MHz。这一步对于高速数据处理和实时响应至关重要。 2. **PACB(外围接口控制器B)初始化**:`PACBInit()`函数配置了TCTL4寄存器,启动定时器并设置PBCTL寄存器,将PAC0和PAC1配置为8位模式,同时设置ICPAR寄存器,选择用途为编码器输入。PACB在这里用作编码器的中断触发源,以检测车轮的转动。 3. **电机控制定时器(MDC)初始化**:`MDCInit()`函数首先清除MCCTL寄存器中的某些位,然后设置电机控制定时器的工作模式,使其在每个主时钟周期内计数16次,从而得到1ms的定时精度。MCCNT寄存器被设置为2000,表示1ms的定时周期。 4. **中断服务程序(ISR)**:`interrupt26MDC_ISR()`是电机控制定时器中断服务例程,每当定时器溢出时(即1ms过去)执行。中断服务例程中,静态变量`number_count`用于计数,当达到预设的`TIME_INTER`(1000ms)时,记录PACN10寄存器的值作为脉冲数,这代表了车轮转过的圈数。 5. **主程序(main)**:主循环中,先禁用全局中断,然后依次初始化PLL、PACB和MDC,最后开启全局中断。程序进入无限循环,等待中断事件发生。 6. **编码器测速原理**:编码器通常会产生与车轮转动相应的脉冲信号,通过计数这些脉冲,可以计算出车轮的转速,进而推算出车辆的行驶速度。 这个程序的核心是利用编码器的脉冲信号和精确的定时器中断,实现了对智能车速度的实时监测。通过对中断服务例程的优化和系统时钟的精确控制,能够确保测速的准确性和稳定性。