金牌会员
- 积分
- 1408
- 威望
- 756
- 贡献
- 362
- 兑换币
- 369
- 注册时间
- 2012-11-3
- 在线时间
- 145 小时
|
电机改了占空比速度也没变化,降不下来,占空比改了好多次了啊,有没碰到相同问题的,求助啊
把系统板拿下来测引脚也没有变化啊,电压都是在4.5左右,正转时用了PP4口输出。
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
#define uint unsigned int
#define uchar unsigned char
void SetBusCLK_32M(void)
{
CLKSEL=0X00; // disengage PLL to system
PLLCTL_PLLON=1; // turn on PLL
SYNR =0x40 | 0x03; // pllclock=2*osc*(1+SYNR)/(1+REFDV)=64MHz;
REFDV=0x80 | 0x01;
POSTDIV=0x00;
_asm(nop); // BUS CLOCK=32M
_asm(nop);
while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;
CLKSEL_PLLSEL =1; //engage PLL to system;
}
/***********************
//功能:PWM(脉宽调制模块)初始化,这里配置4号通道,即PWM4.
//入口参数:无
//出口参数:无
************************/
void PWMInit(){
PWME=0x00;//关闭全部通道。
PWMCTL=0x00;//不级联(Not Cascade)。
PWMPRCLK = 0x00; // 设置预分频寄存器,ClockA=BusClock/1=32/1=32MHz。
//这里注意BusClock为32MHz,多说一句:系统时钟由晶振频率(16MHz)二分频而得。
PWMSCLA = 0x05; //设置分频因子,在上述基础上再分频,ClockSA=ClockA/(2*PWMSCLA)=32/32=1MHz
PWMCLK = 0x30; //4,5通道选择SA作为时钟源
//这里注意0、1、4、5选用A或SA作为时钟源,2、3、6、7选用B或SB作为时钟源。
PWMPOL = 0x30; //4,5通道设置为正极性脉冲,即先输出高电平,再输出低电平。
PWMCAE = 0x00; //4,5通道选用左对齐输出模式
//请考虑两种对齐方式对PWM signal 周期的影响。
PWMPER4=100;//设置4通道周期寄存器。1/1MHz*100=0.1ms(即10KHz)。
//注意:这里给的是十进制数。请考虑这个值的给定范围。
PWMPER5=100;//设置5通道周期寄存器
DDRP_DDRP1=1;
PTP_PTP1 = 1;//打开PP1口
}
/*************************************************************************
//功 能:直流电动机正转
//入口参数:unsigned int duty,占空比值
//出口参数:无
*************************************************************************/
void Motor_forward (uint duty4)
{
PWME_PWME4 = 1; // 使能IN1
PWME_PWME5 = 0; // 禁止IN2
DDRP_DDRP5 = 1; // PTP_PTP3为输出
PTP_PTP5 = 0; // 输出0
PWMDTY4 = duty4;
}
/*************************************************************************
//功 能:直流电动机反转
//入口参数:unsigned int duty,占空比值
//出口参数:无
*************************************************************************/
void Motor_back(uint duty5)
{
PWME_PWME5 = 1;
PWME_PWME4 = 0;
DDRP_DDRP4 = 1;
PTP_PTP4 = 0;
PWMDTY5 = duty5;
}
/***********************
//功能:输出一个固定占空比的方波。
//入口参数:无
//出口参数:无
************************/
void main(void) {
SetBusCLK_32M();
PWMInit();
Motor_forward (50) ;
for(;;) {
_FEED_COP(); /* feeds the dog */
} /* loop forever */
/* please make sure that you never leave main */
}
|
|