基于DSP芯片TMS320F240的步进电机调焦系统设计
F240初始化后,计时器的基本计时时间为0.1?s,考虑到F240定时器是16位计数器,这难以满足计算长时间的需求,所以采用通 过计算进入定时器中断的次数来计算长时间的方法。例如设置定时器周期寄存器值为800即*T1PR=800,那么进一次定时器中断时间为800*0.1= 80?s如果计时为1s的话,则只需进12500次中断即可,以此类推;故定义的数组内容表示如下:
int table[ ]= { 25,800,255, //第1行
. . . . . . } //第n行
其中25为电机步数;800为定时器周期寄存器值;255每两步间所要进入定时器中断的次数。实现准确地控制步进电机控制器关键在于由F240 I/O口产生规定的脉冲信号,提供给步进电机控制器从而驱动步进电机正确转动,程序中包括F240初始化、电机正转、等待、电机反转几个程序模块。程序流 程图如图2所示:
图2 程序流程图
以下是实现电机正转的程序。程序中变量解释:step:用于存储数组中电机步数;every step:用于存储数组中每两步间所要进定时中断的次数;flag:数组行数标志(程序假设需正转36组)。
void interrupt INT2_ISR()
{ while (*EVIVRA==0x0027) //是否是定时器中断
{ if(flag36) //用来完成正转
{
if (steptotal==step) //是否走完数组每行规定的步数
评论