基于DSP芯片TMS320F240的步进电机的调焦系统设计
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) //是否走完数组每行规定的步数
{ flag++; //数组行标志加1
steptotal=0; //电机转动步数清零
step=table[++j]; //更新电机运行步数数据
*T1PR=table[++j]; //更新定时器定时周期
everystep=table[++j]; //更新需要进入定时器中断次数
*T1CNT=0; } //从零开始计时,启动定时器
i++; //循环标志位加1
if(i==1) *PADATDIR=0xff05; // 提供下降沿,正转,不脱机
else{ if (i==everystep)
评论