智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1697|回复: 2
打印 上一主题 下一主题

求助 这个代码能用吗 舵机的倾角判断的 要怎么修改?

[复制链接]

4

主题

5

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
434
威望
255
贡献
81
兑换币
24
注册时间
2010-10-23
在线时间
49 小时
跳转到指定楼层
1#
发表于 2011-5-30 20:20:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 50572209 于 2011-5-30 20:21 编辑

#include <hidef.h>      /* common defines and macros */
#include "derivative.h"

signed char a[14];
signed char max,i;



//-----时钟初始化程序--------//
void PLL_Init(void)  
{
  REFDV=3;       //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)
  SYNR=7;        //锁相环时钟=2*16*(7+1)/(3+1)=64MHz
  while(!(CRGFLG&0x08));//busclock=64/2=32MHz  
  CLKSEL=0x80;   //选定锁相环时钟
}
void AD_Init(void)
   {
   
     
  ATD0CTL0=0x0e;
  ATD0CTL1=0x00;   //选择AD通道为外部触发,8位精度,采样前不放电  
  ATD0CTL2=0x40;   //标志位自动清零,禁止外部触发, 禁止中断     
  ATD0CTL3=0x80;   //右对齐无符号,每次转换16个序列, No FIFO, Freeze模式下继续转     
  ATD0CTL4=0x01;  //采样时间为4个AD时钟周期,PRS=1,ATDClock=6MHz  
  ATD0CTL5=0x31;   //特殊通道禁止,连续转换 ,多通道转换,起始通道为0转换4个通道  
  ATD0DIEN=0x00;   //禁止数字输入
        }

void IO_Init(void)   //IO PORT INITILIZATION
{
  DDRB = 0XFF;
  DDRA = 0XFF;
  PORTA=0Xff;
  PORTB=0Xff;      
  
  
}

void AD_GetValue(void)
{
  
while(ATD0STAT2_CCF0==0);a[0]=ATD0DR0L;  
while(ATD0STAT2_CCF1==0);a[1]=ATD0DR1L;               
while(ATD0STAT2_CCF2==0);a[2]=ATD0DR2L;
while(ATD0STAT2_CCF3==0); a[3]=ATD0DR3L;      
while(ATD0STAT2_CCF4==0); a[4]=ATD0DR4L;
while(ATD0STAT2_CCF5==0); a[5]=ATD0DR5L;
while(ATD0STAT2_CCF6==0); a[6]=ATD0DR6L;
  
while(ATD0STAT2_CCF8==0);a[7]=ATD0DR8L;
while(ATD0STAT2_CCF9==0);a[8]=ATD0DR9L;
while(ATD0STAT2_CCF10==0);a[9]=ATD0DR10L;
while(ATD0STAT2_CCF11==0);a[10]=ATD0DR11L;
while(ATD0STAT2_CCF12==0);a[11]=ATD0DR12L;
while(ATD0STAT2_CCF13==0);a[12]=ATD0DR13L;
while(ATD0STAT2_CCF14==0);a[13]=ATD0DR14L;

  

}
//-----PWM初始化程序------//
void PWM_Init(void)
{
  PWME = 0x00;            //pwm关闭
  PWMCTL_CON01=1;//通道01结连
  PWMPRCLK = 0x22; // clockA=clockB=busclock/4=32/4=8MHz
  PWMSCLA = 0x04;  //clockSA=clockA/(2*PWMSCLA)=8/8=1MHz
  PWMSCLB = 0x04;  //clockSA=clockA/(2*PWMSCLA)=8/8=1MHz
  PWMCLK = 0xff;   //时钟源选择SA,SB
  PWMPOL = 0xff;   //正极性脉冲
  PWMCAE = 0x00;   // 左对齐模式
  PWMPER01 = 20000;//舵机计数周期寄存器(20ms)  
  PWMDTY01 = 1500; //输出高电平时间1.4ms

  PWME= 0x07;      //输出PWM
  }
//-----主程序------//
void main(void)
{
  PLL_Init();
  IO_Init();
  AD_Init();
  PWM_Init();      
  EnableInterrupts;  
  for(;;)
  {
AD_GetValue();

max=a[0];
for(i=0;i<14;i++)
{
if(max<a)
max=a;
}

switch  (max)
       {
          case  0: PWMDTY01=1300; ;break;
          case  1: PWMDTY01=1350; ;break;
          case  2: PWMDTY01=1380; ;break;
          case  3: PWMDTY01=1400; ;break;
          case  4: PWMDTY01=1420; ;break;
          case  5: PWMDTY01=1470; ;break;
          case  6: PWMDTY01=1500; ;break;
          case  7: PWMDTY01=1500; ;break;
          case  8: PWMDTY01=1530; ;break;
          case  9: PWMDTY01=1580; ;break;
          case  10: PWMDTY01=1600; ;break;
          case  11: PWMDTY01=1620; ;break;
          case  12: PWMDTY01=1650; ;break;
          case  13: PWMDTY01=1700; ;break;
        
          default:break;
        }
      _FEED_COP();
   }
}

2

主题

28

帖子

0

精华

高级会员

Rank: 4

积分
602
威望
406
贡献
120
兑换币
58
注册时间
2011-3-10
在线时间
38 小时
2#
发表于 2011-7-29 14:35:18 | 只看该作者
you dian luan
回复 支持 反对

使用道具 举报

2

主题

27

帖子

0

精华

高级会员

Rank: 4

积分
500
威望
345
贡献
91
兑换币
0
注册时间
2011-3-30
在线时间
32 小时
3#
发表于 2011-7-29 16:20:00 | 只看该作者
可以试试在线调试
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-10-2 06:33 , Processed in 0.043121 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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