注册 登录
查看: 633|回复: 7

[智能车] 谁能救我,一身许之,

[复制链接]
发表于 2013-6-22 16:57:59 | 显示全部楼层 |阅读模式
我AD后的值可以从串口软件显示出来,但是我用AD后的值进行比较的时候出问题了
AD的函数如下
void senddate(u16 sum){
  u16 count;
  u16 datecacha0[2]={0};
  u16 datecacha1[2]={0};
  for(count=0;count<sum;count++){
    datecacha0[count]=ATD_Result[count];
    datecacha1[count]=ATD_Result[count]>>8;
  }
  uart_putchar (UART5,0xa5);
  for(count=0;count<sum;count++){
    uart_putchar (UART5,datecacha0[count]);
    //Dly_ms(1000);
    uart_putchar (UART5,datecacha1[count]);
  }
  uart_putchar (UART5,0xaa);
}

void Get_Average(void)   
  {  


   ATD_Result[0]=ad_once(ADC1,SE8,ADC_12bit)//对电感1进行次采样求其平均值


   ATD_Result[1]=ad_once(ADC1,SE9,ADC_12bit);//对电感2进行次采样求其平均值
   senddate(2);

}

然后我在别的函数里用ATD_Result[0]和ATD_Result[1]做一些判断来改变电机比如
if ((ATD_Result[0]>100)&&(ATD_Result[1]<90))
    {
                        FTM_PWM_Duty(FTM1, CH1,70);//角度为0度,也就是正前方
                        FTM_PWM_Duty(FTM0, CH0,80);//现在理论速度为400

    }

发现电机舵机无变化,最后用串口一看发现没有值了,最后试了一下将这个if注释了以后,串口才能再接收值,这是为什么呢
回复

使用道具 举报

发表于 2013-6-22 21:48:36 | 显示全部楼层
论坛有专门代码的控件的,你直接贴代码,看得太痛苦了
回复 支持 反对

使用道具 举报

发表于 2013-6-22 21:52:42 | 显示全部楼层
  1. ((ATD_Result[0]>100)&&(ATD_Result[1]<90))


这个条件肯定是 一直 都失败啊,所以才跑不进去 if 里,你可以用串口来看到那个值是否在这个范围内啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-22 22:02:56 | 显示全部楼层
功率谱 发表于 2013-6-22 21:52
这个条件肯定是 一直 都失败啊,所以才跑不进去 if 里,你可以用串口来看到那个值是否在这个范围内啊

恩,我想问个问题,就是
ATD_Result[1]=ad_ave(ADC1,SE9, ADC_12bit,10);之后,
我用if判断 ATD_Result[1],的时候发先 ATD_Result[1]没有起作用,这是怎么回事呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-22 22:05:13 | 显示全部楼层
功率谱 发表于 2013-6-22 21:52
这个条件肯定是 一直 都失败啊,所以才跑不进去 if 里,你可以用串口来看到那个值是否在这个范围内啊

补充一下,
speed = 300; //初始速度
  steer = 70 ; //中心位置的舵机角度刚好是直线的
  //FTM_PWM_Duty(FTM0, CH0,speed);//电机速度输出,其中只改变steer值即可改变速度1001
  //FTM_PWM_Duty(FTM1, CH1,steer);//电机速度输出,其中只改变speed值即可改变速度
  if ((ATD_Result[0] >504 ) || (ATD_Result[1] > 504))//当左边电感满足中心位置时条件时,开始的中间位置时加速100,当在直线里面出现小偏差时以小角度改变
    {
                        FTM_PWM_Duty(FTM1, CH1,(int)steer);//角度为0度,也就是正前方
                        FTM_PWM_Duty(FTM0, CH0,(int)speed);//现在理论速度为400
                }
之后我将在电机和舵机放在跑道外,但是还是执行了
FTM_PWM_Duty(FTM1, CH1,(int)steer);//角度为0度,也就是正前方
                        FTM_PWM_Duty(FTM0, CH0,(int)speed);//现在理论速度为400
这两句话
回复 支持 反对

使用道具 举报

发表于 2013-6-22 23:17:10 | 显示全部楼层
sjl123 发表于 2013-6-22 22:05
补充一下,
speed = 300; //初始速度
  steer = 70 ; //中心位置的舵机角度刚好是直线的

没人愿意看你的代码的,自己研究吧
你一大堆代码发上来,还不高亮显示的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-23 16:28:58 | 显示全部楼层
功率谱 发表于 2013-6-22 23:17
没人愿意看你的代码的,自己研究吧
你一大堆代码发上来,还不高亮显示的

恩,我找到问题了,我发现程序一直都是死在 FTM_PWM_Duty里面,但是我改了最新的FTM.c了,还是这个问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-23 16:29:14 | 显示全部楼层
说不得 发表于 2013-6-22 21:48
论坛有专门代码的控件的,你直接贴代码,看得太痛苦了

我才发现,呵呵,谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

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