/***************************************************************************
文件名称: dm_motor_ae250b.c
作者: Andy
版本: 0.1
创建时间 : 2007-04
描述:
文件实现了ADSP-BF533及DM_KIT_SSK上模块的头文件定义
修改历史:
****************************************************************************/
#include "dm_bf5xx.h"
#include "dm_types.h"
/****************************************************************************
* 名称 : Disable_Motor
* 功能 : 电机控制端不允许
* 入口参数 :无
* 出口参数 :无
****************************************************************************/
void Disable_Motor()
{
*pCtrOut_Flag_OE =(Out_Flag_OE|MOTOR_OE);
*pCtrOut_Flag_A = 0x0;
}
/****************************************************************************
* 名称 : Disable_Motor
* 功能 : 电机控制端允许
* 入口参数 :无
* 出口参数 :无
****************************************************************************/
void Eable_Motor()
{
*pCtrOut_Flag_A = 0x0;
*pCtrOut_Flag_OE = (Out_Flag_OE&(~MOTOR_OE));
}
/****************************************************************************
* 名称 : DC_Motor_Enable
* 功能 : 直流电机控制函数
* 入口参数 :Direction 直流电机方向控制 为 0 正转 为 1 反转
* 出口参数 :无
****************************************************************************/
void DC_Motor_Enable (uint8_t Direction)
{
Eable_Motor();
if( Direction==0)
{
*pCtrOut_Flag_A = Out_Flag_A |MOTOR_A|MOTOR_C;
}
if( Direction==1)
{
*pCtrOut_Flag_A = Out_Flag_A |MOTOR_B|MOTOR_D;
}
}
/****************************************************************************
* 名称 : Step_motor
* 功能 : 步进电机控制函数
* 入口参数 :Direction 步进电机方向控制 为 0 正转 为 1 反转
* 出口参数 :无
****************************************************************************/
#define DELAY_US 20000
void Step_motor(int Direction)
{
uint8_t test;
if(Direction==0)
*pCtrOut_Flag_A = 0;
if(Direction==1)
{
*pCtrOut_Flag_A = MOTOR_A;//A
udelay(DELAY_US);
*pCtrOut_Flag_A = 0;
*pCtrOut_Flag_A = MOTOR_C;//C udelay(0xfff);
udelay(DELAY_US);
*pCtrOut_Flag_A = 0;
*pCtrOut_Flag_A = MOTOR_B;//B
udelay(DELAY_US);
*pCtrOut_Flag_A = 0;
*pCtrOut_Flag_A = MOTOR_D;//D
udelay(DELAY_US);
*pCtrOut_Flag_A = 0;
}
if(Direction==2)
{
*pCtrOut_Flag_A = MOTOR_D;//D
udelay(DELAY_US);
*pCtrOut_Flag_A = 0;
*pCtrOut_Flag_A = MOTOR_B;//B udelay(0xfff);
udelay(DELAY_US);
*pCtrOut_Flag_A = 0;
*pCtrOut_Flag_A = MOTOR_C;//C
udelay(DELAY_US);
*pCtrOut_Flag_A = 0;
*pCtrOut_Flag_A = MOTOR_A;//A
udelay(DELAY_US);
*pCtrOut_Flag_A = 0;
}
}
/****************************************************************************
* 名称 : DC_motor1
* 功能 : 直流电机1 控制函数
* 入口参数 :Direction 步进电机方向控制 为 0 正转 为 1 反转
* 出口参数 :无
****************************************************************************/
void DC_motor1(int Direction)
{
if(Direction==0)
*pCtrOut_Flag_A = 0;
if(Direction==1)
*pCtrOut_Flag_A = MOTOR_A;
if(Direction==2)
*pCtrOut_Flag_A = MOTOR_B;
}
/****************************************************************************
* 名称 : DC_motor2
* 功能 : 直流电机2 控制函数
* 入口参数 :Direction 步进电机方向控制 为 0 正转 为 1 反转
* 出口参数 :无
****************************************************************************/
void DC_motor2(int Direction)
{
if(Direction==0)
*pCtrOut_Flag_A = 0;
if(Direction==1)
*pCtrOut_Flag_A = MOTOR_C;
if(Direction==2)
*pCtrOut_Flag_A = MOTOR_D;
}