查看: 1913|回复: 2
|
Servo Motor - C programming
[复制链接]
|
|
我要做一个robotic arm...function 不需要太precise...lecturer 说只要看到 pitch, roll and yaw motion 就行了
Servo: Cytron C36R (0.9-2.1ms)
Compiler: MikroC
Language: C
MCU: PIC16F877A
Osillator: 4Mhz
int i;
void Delay2(){
PORTB=0b00000000;
for(i=0;i<200;i++)
{
Delay_us(15000);
}
}
void main() {
PORTB = 0; // Initialize PORTB
TRISB = 0; // Configure PORTB as output
while(1) {
PORTB = 0b00000001; // toggle PORTB
Delay_us(1500);
Delay2;
PORTB=0b00000010;
Delay_us(2000);
Delay2;
PORTB=0b00000011;
Delay_us(1700);
Delay2;
}
}
上面的code纯粹只是为了testing servo 的position. 可是,不管我的delay value 是什么数字, sevo 都会转去 maximum position...会是因为PIC是20MHz的关系吗?
我应该如何告诉PIC用4Mhz?
我的programming 只懂皮毛而已...也不想用TIMER...请各位相助。。。谢谢。。。 |
|
|
|
|
|
|
|
发表于 10-5-2009 08:07 PM
|
显示全部楼层
#use delay (clock = 4000000) //clock frequency as 4MHZ |
|
|
|
|
|
|
|
发表于 11-5-2009 10:55 PM
|
显示全部楼层
为什么你用delay2的function?
试试只用一个pulse time,例如delay_us(1500);
不要用 delay2 function.
void main() {
PORTB = 0; // Initialize PORTB
TRISB = 0; // Configure PORTB as output
while(1) {
PORTB = 0b00000001; // toggle PORTB
Delay_us(1500);
PORTB = 0b00000000;
}
} |
|
|
|
|
|
|
| |
本周最热论坛帖子
|