智能车制作

 找回密码
 注册

扫一扫,访问微社区

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

路径检测程序问题求助

[复制链接]

16

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1408
威望
756
贡献
362
兑换币
369
注册时间
2012-11-3
在线时间
145 小时
跳转到指定楼层
1#
发表于 2013-3-13 20:58:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

我想通过赛道检测来使舵机能够简单的左右摆,下面这程序问题出在哪,一点反应都没有啊,有没大神能帮忙看看啊,ad虽然设置了8个通道,不过我只用了0和1 来做简单那检测

#include <hidef.h>      /* common defines and macros */
#include <MC9S12XS128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"


#define uint  unsigned int
#define uchar unsigned char

uchar ad_result[8]; //AD转换数值


int road;
int dd=200;
uint ref=3000;
uint OUTPUT;


/////////////////////////////
void ADInit(void)
{
   ATD0CTL1=0x00;
   ATD0CTL2=0X40;           /*  使能AD,清除标志  */
   ATD0CTL3=0XB0;    /*  队列长度为6,依次存入结果寄存器,继续转换 */
   ATD0CTL4=0X05;   /*  8位精度,总线频率32分频 */
   ATD0CTL5=0X30;  /*  ,多通道,连续,从AD0开始转换*/
   ATD0DIEN=0x00;   //禁止数字输入
  
}
////////////////////////////////
//**************************************************************************
//
//获取AD转换数值的函数
//
//**************************************************************************
  void Rd_Ad_Value(void)
{
   
    while(!ATD0STAT0_SCF);  //等待转换完成
                          // ATD0STAT0 ATD转换状态寄存器0
                          // SCF - ETORF FIFOR CC3 CC2 CC1 CC0
                          // SCF: 转换序列完成标志,=1,转换完成,写ATD0CTL5被清0
                          // ETORF: 外部边沿触发溢出标志位。ETIGLE=0时,当ATD转换正在进行过程中检测到外部边沿触发信号,该位被置1
                          // FIFOR: 先入先出溢出标志位
                          // [CC3:0]: 转换计数,表示当前转换的结果将要写入的结果寄存器的编号。
                          //          ATD0CTL3_FIFO=0时,在转换开始和转换结束时候[CC3:0]都会被初始化为0
   
    //一次过取出八个通道的AD值
    ad_result[0]=ATD0DR0L;
    ad_result[1]=ATD0DR1L;    //演示时使用【正中间】的传感器
    ad_result[2]=ATD0DR2L;
    ad_result[3]=ATD0DR3L;
    ad_result[4]=ATD0DR4L;
    ad_result[5]=ATD0DR5L;
    ad_result[6]=ATD0DR6L;
    ad_result[7]=ATD0DR7L;
}
/*****舵机方向信号源pwm如下*************************/


//  pwm通道23级联

void init_PWM()
{
    PWME_PWME3=0;//关闭3通道   
    PWMCTL_CON23=1;//23级联  
    PWMCLK_PCLK3=1;//设0,1通道SB为其时钟源  
    PWMPRCLK=0x08;//对总线时钟进行预分频,总线时钟为32M,分频后为32M/2=16M
    PWMSCLB=0X08;//8位 clock SB=Clock B/(2*PWMSCLA)    clock SB=16M/(2*8)=1M
    PWMPOL_PPOL3=1;//起始时为高电平
    PWMCAE_CAE3=0;//左对齐
    PWMPER23=20000;//输出频率为50HZ,周期20ms
   
    PWME_PWME3=1;//通道使能  
}

void set_road(void)

{
if(ad_result[0]<ad_result[1])  
road=0;
    else
        if(ad_result[0]>ad_result[1])  
          road=1;
           else
               if(ad_result[0]=ad_result[1])   
                 road=2;

}
   
void set_direction(void)
{
  set_road();

  switch(road)
  
  {
  //////////////////////////////////////////////////
    case 0: OUTPUT=ref+dd ;
      
    break;
    ////////////////////////////////////////////////
   
    case 1:
    OUTPUT=ref-dd;
    break;
    ////////////////////////////////////////////////////////////////
    case 2:
   OUTPUT=ref;
     break;
  }
   
   
    PWMDTY23 = OUTPUT;
  
}
////////////////////////////////////////////////////////////////////////////////////  
//*******************************

void SetBusCLK_32M(void)
{   
    CLKSEL=0X00;                                // disengage PLL to system
    PLLCTL_PLLON=1;                        // turn on PLL
    SYNR =0x40 | 0x03;  // pllclock=2*osc*(1+SYNR)/(1+REFDV)=64MHz;                     
    REFDV=0x80 | 0x01;
    POSTDIV=0x00;  
    _asm(nop);          // BUS CLOCK=32M
    _asm(nop);
    while(!(CRGFLG_LOCK==1));          //when pll is steady ,then use it;
    CLKSEL_PLLSEL =1;                        //engage PLL to system;
}






   
void main(void)
{
   
   
    SetBusCLK_32M();
    ADInit()  ;
    Rd_Ad_Value() ;
    init_PWM();  
    for(;;)
   {
         
      set_direction()  ;
      
     
    }


}

3

主题

63

帖子

0

精华

高级会员

Rank: 4

积分
535
威望
330
贡献
137
兑换币
135
注册时间
2011-8-30
在线时间
34 小时
2#
发表于 2013-3-27 19:56:59 | 只看该作者
PWM的占空比没设置啊
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

高级会员

Rank: 4

积分
546
威望
280
贡献
146
兑换币
168
注册时间
2013-11-27
在线时间
60 小时
毕业学校
士大夫但是
3#
发表于 2014-3-24 22:48:49 | 只看该作者
楼主略逗,占空比都忘了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-7 06:29 , Processed in 0.108844 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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