搞飞机设计的新手求教搞四轴如何学习?
大家好,本菜鸟大学学的是飞机设计,对单片机一窍不通,昨天刚调通了一个控制舵机的小程序(不是用的定时器,纯延时产生的pwm波,效率很低,自汗一个,主要是因为那个定时器还没搞明白),俺也打算做个四轴玩玩,机架部分没问题,主要是控制这块想请教各位该如何入门,该学习些什么,请各位赐教! 我写的低效程序#include <iom16v.h>
#include <macros.h>
void main(void)
{
unsigned int t, i;
DDRB=0xFF;
PORTB=0xFF;
while(1)
{for(i=1;i<=100;i++)
{
PORTB=(1<<PB5);
delay(i*10/99+10-10/99);
PORTB=(0<<PB5);
delay(200-(i*10/99+10-10/99));
}
}
}
void delay(t)
{
unsigned int j;
for(t;t>=1;t--)
for(j=1;j<=10;j++)
;
} 呵呵,建议LZ把语文学好先! ls的兄弟说的对,不过还请回答下我的问题,我是来此虚心学习的,谢谢! #include <iom16v.h>
#include <macros.h>
void delay_MS(unsigned int i)
{unsigned int j;
for (;i!=0;i--)
{
for (j=500;j!=0;j--)
;
}
}
void main()
{
unsigned int i=15;
DDRD|=BIT(PD5); //设置输出,OC1A
TCCR1A=0x82; //10位快速PWM,且OC1A输出反向
TCCR1B=0x1B; //设置10位快速PWM,且64分频
ICR1H=0x01; //设置ICR1值为311,调节PWM波周期为20ms
ICR1L=0x37;
while(1)
{
while(31-i) //脉宽从1ms往上加 注释(1) 15/311=1/20(ms)
{
OCR1AH=0;
OCR1AL=i;
delay_MS(10);
i++;
}
while(i-15) //脉宽从2ms往下减注释(2)
{
OCR1AH=0;
OCR1AL=i;
delay_MS(10);
i--;
}
}
}
费了一天的劲,终于学会了用T/C1生成PWM波,已经测试,可以控制舵机正常运转了(本程序从前辈的程序改进而来,区别是可以调节PWM波的周期),自己摸索效率实在太低了,后悔大学没好好学习啊!
页:
[1]