智能车制作

标题: 若能解答,一身许之!!!!! [打印本页]

作者: sjl123    时间: 2013-6-22 17:23
标题: 若能解答,一身许之!!!!!
用野火的库,
ATD_Result[0]=ad_once(ADC1,SE8,ADC_12bit)//对电感1进行次采样求其平均值
ATD_Result[1]=ad_once(ADC1,SE9,ADC_12bit);//对电感2进行次采样求其平均值
这里没有任何问题,串口可以正常的接受数据,


但是!!!BUT!!!
当在别的函数部分我要去用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注释掉后,就可以正常接收AD后的值了,这是为什么???

作者: sjl123    时间: 2013-6-22 18:15
不要落了1!!!
作者: 1309430979    时间: 2013-6-22 18:21
当我把if注释掉后,就可以正常接收AD后的值了,这是为什么???

嘿嘿,说明((ATD_Result[0]>100)&&(ATD_Result[1]<90))这个条件从未实现过。
工作中ATD_Result[0] 始终<=100 或者 ATD_Result[1]始终>=90.

楼主自己好好检查下程序,是否有数据类型等错误。还有如果楼主如果是妹子的话,嘿嘿。。。我只交基友。

作者: sjl123    时间: 2013-6-22 18:38
1309430979 发表于 2013-6-22 18:21
当我把if注释掉后,就可以正常接收AD后的值了,这是为什么???

嘿嘿,说明((ATD_Result[0]>100)&&(ATD ...

我数据类型是正确的但是还是木有用的说,还有为什么有IF就不能串口通信了呢......{:soso_e109:}

作者: sjl123    时间: 2013-6-22 19:26
支援啊啊啊啊啊啊

作者: Αρηδ    时间: 2013-6-22 22:18
坐等灰原姐姐吐槽
作者: 寒冬的朝阳    时间: 2013-6-22 22:19


作者: 灰原姐姐    时间: 2013-6-22 23:57
Αρηδ 发表于 2013-6-22 22:18
坐等灰原姐姐吐槽

那我就不客气了。
咳咳。

这种代码问题,哪有贴出来让别人帮你debug的道理。
自己写的代码,自己最清楚,别人看要看到什么时候去了。
而且你只给了片段,一般bug都是有很长的因果链产生的最终症状的。
各个变量的类型,函数的定义,返回值类型什么的不说清楚,别人怎么知道是什么问题。
自己慢慢debug吧,加断点,输出,特殊情况判断,assert什么的,总能找出来的。

作者: sjl123    时间: 2013-6-23 00:39
灰原姐姐 发表于 2013-6-22 23:57
那我就不客气了。
咳咳。

恩,谢谢灰原姐

作者: ⊙Lin⊙    时间: 2013-6-23 10:21
灰原姐姐 发表于 2013-6-22 23:57
那我就不客气了。
咳咳。

果然来了。。。。。。

作者: LQ~少行    时间: 2013-6-23 10:38

作者: ivebeenready    时间: 2013-6-23 11:07
判断条件有问题
作者: sjl123    时间: 2013-6-23 16:38
ivebeenready 发表于 2013-6-23 11:07
判断条件有问题

我调试了,发现程序一直都是死在FTM_PWM_Duty(FTM0, CH0,speed);这里,然后我按暂停就跳到delay.c里面去了
  1.   speed = 300; //初始速度
  2.   steer = 70 ; //中心位置的舵机角度刚好是直线的
  3.   FTM_PWM_Duty(FTM0, CH0,speed);//电机速度输出,其中只改变steer值即可改变速度1001
  4.   a=5;
  5.   b=6;
复制代码



作者: sjl123    时间: 2013-6-23 16:39
灰原姐姐 发表于 2013-6-22 23:57
那我就不客气了。
咳咳。

我调试了,发现程序一直都是死在FTM_PWM_Duty(FTM0, CH0,speed);这里,然后我按暂停就跳到delay.c里面去了
  1.   speed = 300; //初始速度
  2. steer = 70 ; //中心位置的舵机角度刚好是直线的
  3. FTM_PWM_Duty(FTM0, CH0,speed);//电机速度输出,其中只改变steer值即可改变速度1001
  4. a=5;
  5. b=6;
复制代码
我用过最新的野火FTM.C的根正了,但是还是会死在那里



作者: sjl123    时间: 2013-6-23 16:54
灰原姐姐 发表于 2013-6-22 23:57
那我就不客气了。
咳咳。

灰原姐,别吐槽我,我发现哪个断言失败了,但是如何改正,不太会
[attach]47399[/attach][attach]47399[/attach]

作者: sjl123    时间: 2013-6-23 18:33
ivebeenready 发表于 2013-6-23 11:07
判断条件有问题

恩,果然是判断条件有问题!!!!!!
if ( Adv[0] > 0 ) ;Adv[0]的值是我的反馈值,这个值调试的时候都是100多,我不管怎么设置判断条件,都直接跳过if了

作者: 灰原姐姐    时间: 2013-6-23 19:56
sjl123 发表于 2013-6-23 16:54
灰原姐,别吐槽我,我发现哪个断言失败了,但是如何改正,不太会

很好,继续查下去,找到问题的原因,一定能解决的。

作者: sjl123    时间: 2013-6-23 21:08
灰原姐姐 发表于 2013-6-23 19:56
很好,继续查下去,找到问题的原因,一定能解决的。

谢谢灰原姐的鼓励~~~





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2