飞思卡尔HCS12智能车测速程序实现与解析
4星 · 超过85%的资源 需积分: 12 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. **编码器测速原理**:编码器通常会产生与车轮转动相应的脉冲信号,通过计数这些脉冲,可以计算出车轮的转速,进而推算出车辆的行驶速度。
这个程序的核心是利用编码器的脉冲信号和精确的定时器中断,实现了对智能车速度的实时监测。通过对中断服务例程的优化和系统时钟的精确控制,能够确保测速的准确性和稳定性。
2023-06-28 上传
2023-09-30 上传
2023-05-18 上传
2023-08-14 上传
2023-12-25 上传
2023-10-03 上传
2023-05-22 上传
shijieshang129
- 粉丝: 3
- 资源: 24
最新资源
- IPQ4019 QSDK开源代码资源包发布
- 高频组电赛必备:掌握数字频率合成模块要点
- ThinkPHP开发的仿微博系统功能解析
- 掌握Objective-C并发编程:NSOperation与NSOperationQueue精讲
- Navicat160 Premium 安装教程与说明
- SpringBoot+Vue开发的休闲娱乐票务代理平台
- 数据库课程设计:实现与优化方法探讨
- 电赛高频模块攻略:掌握移相网络的关键技术
- PHP简易简历系统教程与源码分享
- Java聊天室程序设计:实现用户互动与服务器监控
- Bootstrap后台管理页面模板(纯前端实现)
- 校园订餐系统项目源码解析:深入Spring框架核心原理
- 探索Spring核心原理的JavaWeb校园管理系统源码
- ios苹果APP从开发到上架的完整流程指南
- 深入理解Spring核心原理与源码解析
- 掌握Python函数与模块使用技巧