4、电动执行器硬件
MCUez集成应用图形开发环境是68HC12的软件开发平台,它分为Motpad文本编辑程序,Assembler编译程序,DEBUG调试程序和Linker连接程序4部分。其中,最为重要的它的DEBUG调试程序,该程序的源代码窗口,汇编代码窗口,数据窗口,命令行窗口,寄存器窗口和内存窗口,可以对用户程序完成断点跟踪,单步调试,全速运行等多种调试功能。该工具结合串行调试接口(SDI)共同完成对MCU程序的调试工作。
整个软件的设计完全由汇编语言写成,贯彻了自顶向下和模块化的原则,主要包括主程序,中断服务程序,A/D转换子程序,LCD显示子程序,执行器驱动输出子程序和以上提到的通信库等几个部分以及辅助的写FLASH程序和写EEPROM程序。MICROFIP的变量与消息的管理都依靠中断来完成,机制简述如下:MICROFIP满足一定条件时会从它的IRQ0N管脚给出中断信号,这时MCU内部的程序跳转到中断服务程序,通过读MICROFIP内部的IRQSA寄存器,可以知道究竟是什么原因触发了中断,并给标志字节INT_FLAG置位,而主程序中在初始化后则进入死循环,在循环内反复读该标志字节,从而跳转到相应的处理程序,图5为中断处理程序流程图。
1、角反馈位置子程序。68HC12片上提供了一个8路10位的A/D转换器,由于其简单易用,可靠性高,因此本设计中,应用该A/D转换器来完成位置信号的反馈。在本设计中,ATDCTL2赋值80H,允许A/D功能。正常清除A/D转换标志,不允许中断。ATDCTL3赋值00H,选择连续转换模式,不许冻结。ATDCTL4赋值01H,分频因子为4,采样时间为2个A/D时钟。A/D转换完毕后,就可以得到当前角位置反馈,然后将该值存入数据缓冲区,供执行器驱动子程序、向总线仲裁器发送的变量写子程序和LCD显示子程序使用。
2、执行器输出驱动子程序。由于执行器的正反转输出由MCU上的两个I/O口进行控制,所以对其控制比较简单,在此不作详细叙述。值得一提的是本设计中将死区嵌入了对到达指定位置判断的子程序中,执行器正转时,反馈值不能大于指定值加1(指定值为0~100%开度),反转时,反馈值不能小于指定值减1。即死区被定为1%。
图5中断处理程序流程图
3、LCD显示子程序。本设计使用的LCD控制器HD44780必须进行初始化,否则模块可能无法正常显示,一般通过软件复位程序来完成其初始化。将LCD设置为8位数据接口,2行显示,5×7点阵,显示开,光标关,闪烁关,无移位。第一行地址80H,第二行地址C0H。在对LCD初始化结束后,可以对LCD进行读写操作。LCD的读写操作都是在E管脚的下降沿有效,所以读写前要确保数据准备好,先将E置高,再将其置低,完成读写操作。
4、软件的固化。软件调试完毕后需要把程序固化到MCU68HC12的FLASH中,68HC12的FLASH控制寄存器共有4个,它们是:FEELCK,FEEMCR,FEETST和FEECTL。FEELCK等于01H时将禁止FLASH,FEEMCR等于01H时将擦除和编程FLASH的启动块,FEETST主要用来进行测试,而FEECTL则具体控制FLASH的读写编程。