佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1913|回复: 2

Servo Motor - C programming

[复制链接]
发表于 8-5-2009 10:41 AM | 显示全部楼层 |阅读模式
我要做一个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...请各位相助。。。谢谢。。。
回复

使用道具 举报


ADVERTISEMENT

发表于 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;
  }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 8-1-2025 01:12 PM , Processed in 0.124794 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表