速度,舵机测试,专为舵机调中值

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//-----------------------主函数------------------------------------------------------------
//-----------------------------------------------------------------------------------------
if(PWΒιβλιοθήκη BaiduDTY01>1200)
PWMDTY01=1200;
if(PWMDTY45>1200)
PWMDTY45=1200;
}
//-----------------------------------------------------------------------------------------
PTS_PTS1=1;
Set_CLK_48M ();
PWM_Init(); //初始化PWM
for(;;)
{
SteerTest();
SpeedTest();//
}
}
PWME=0xff;//使能PWM
}
/**/
void SteerTest(void)
{
PWMDTY67= STEER_MID
-(PORTB_PB3*8+PORTB_PB2*4+PORTB_PB1*2+PORTB_PB0)*STEER_ADJUST
+(PORTB_PB7*8+PORTB_PB6*4+PORTB_PB5*2+PORTB_PB4)*STEER_ADJUST;
#define STEER_ADJUST 1
#define SPEED_ADD 10
#define SPEED_BASE 300
#define BTS7960 2
#define MC33886 1
#define SP30 0
int CurrentSpeed;
//uint DriverType=MC33886; //驱动方式,1对应33886,0对应SP30
PWMSCLA = 24; //SA=A/2/24=500KHz
//BTS7960左
PWMPER45 =1200; //PWM45=A/1200=20kHz
PWMDTY45 =0;
PWMPER3 =25; //PWM3=SB/25=500k/25=20k
PWMDTY3 =0;
//BTS7960右
PWMPER01 =1200; //PWM01=A/1200=20kHz
//uint DriverType=SP30; //驱动方式,1对应33886,0对应SP30
//uint DriverType=BTS7960;
uint Counter;
void PWM_Init(void)
{
PWMCTL = 0xd0; //con67=1,con45=1,con23=1.con01=1;
}
void SpeedTest(void)
{
PWMDTY01=SPEED_BASE;//+SPEED_ADD*(PORTA_PA4+PORTA_PA5*2+PORTA_PA6*4+PORTA_PA7*8);
PWMDTY45=SPEED_BASE;//+SPEED_ADD*(PORTA_PA4+PORTA_PA5*2+PORTA_PA6*4+PORTA_PA7*8);
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
#include "userhead.h"
#define STEER_MID 748
/***********************************************************************/
//功能:舵机和电机测试程序
//运行条件:16MHz晶振
//注意:运行前在程序里设置DriverType的值选择对应的驱动模块
/***********************************************************************/
PWMDTY01 =0; //PWM01正转
PWMPER2 =25; //PWM2=SB/25=500k/25=20kHz
PWMDTY2 =0;
//舵机
PWMPER67 = 5000; //40ms PWM45=SB/5000=500000/5000=100Hz
//0.01s = 10ms
PWMDTY67 = STEER_MID; // 600=1.2ms
void main(void)
{
uchar i,j;
DDRB = 0x00;
PUCR_PUPBE = 1;
DDRA = 0x00;
PUCR_PUPAE = 1;
DDRP = 0xff;
DDRM=0xff;
PTM_PTM0=1; //右电机使能
PTM_PTM1=1;
DDRS=0xff;
PTS_PTS0=1; //左电机使能
PWMCAE = 0x00; //输出左对齐
PWMPOL = 0xff; //正极性输出
PWMCLK = 0xcc; //6、7为SB,4、5为A,2、3为SB,0、1为A
PWMPRCLK = 0x11; //A=B=BusClock=24MHz
PWMSCLB = 24; //SB=B/2/24=500KHz
相关文档
最新文档