各位大佬我又來了,這次是遇到的問題是這樣,使用比較器輸出固定的頻率和占空比驅(qū)動舵機,按照查到的資料設(shè)置頻率和占空比后舵機只有在2.5%,10%的時候才會動,而且動的角度也有問題,按照舵機的資料對應(yīng)的占空比應(yīng)該是0.5MS->25%, 1MS->5%, 1.5ms->7.5%,2MS->10%,2.5MS->12.5%,由于才開始摸這個芯片不是很了解,請各位大佬賜教。頻率設(shè)置的是20毫秒,單片機程序如下:
#include "STC8H.h"
void pwma_init(unsigned long f_pwm_set);
void main()
{
pwma_init(480000); // 24M,設(shè)置50HZ頻率(24000000)*(1/50) = 480000
while(1)
{
}
}
void CH1_PWM_SET(unsigned long f_set_ch1,float duty_ch1) //設(shè)置占空比
{
float a;
a = duty_ch1 * f_set_ch1;
P_SW2 |= 0x80;
PWMA_CCR1H = ((unsigned int)(a))/256;
PWMA_CCR1L = ((unsigned int)(a))%256;
PWMA_CCMR1 = 0x60;
PWMA_CCER1 &= 0xFD;
PWMA_CCER1 |= 0x01;
PWMA_OISR |=0x01;
PWMA_ENO |= 0x01;
P_SW2 &= 0x7f;
}
void pwma_init(unsigned long f_pwm_set) //頻率設(shè)置
{
P1M0 = 0xfe;
P1M1 = 0xfe;
P_SW2 |= 0x80;
PWMA_CR1 &=0xfe;
PWMA_ARRH = f_pwm_set/256;
PWMA_ARRL = f_pwm_set%256;
PWMA_CR1 &= 0x8f;
P_SW2 &= 0x7f;
CH1_PWM_SET(f_pwm_set,2.5); 占空比2.5%
P_SW2 |= 0x80;
PWMA_BKR = 0x80;
PWMA_CR1 |= 0x01;
P_SW2 &= 0x7F;
}
|