智能车制作

标题: 国赛前单片机死机又开始频繁出现 [打印本页]

作者: 海纳百川1    时间: 2015-8-21 17:34
标题: 国赛前单片机死机又开始频繁出现
单片机死机问题目前没有彻底解决。校赛前就已经开始出现间歇死机现象,幸亏比赛两次试跑都没死机逃过一劫。省赛预赛前一天试车又开始出现频繁死机,心想这下完蛋了。幸亏山科离我们学校很近,打的回学校,晚上加紧回实验室各种试,觉得肯定是硬件的问题。我们使用的是数字加速度计MMA8451,有两个供电端口3.3V和VCC_IN,最初我们使用的是前者接3.3V,那天我们尝试用5V接VCC_IN。结果晚上到预赛前试车以及预赛、决赛都没出现死机,以为问题彻底将解决了,有幸进入国赛,特别高兴。现在国赛前不到一周时间,又开始死机,现在正在测试中,不知道原因是啥,快跪了。小伙伴们有没有遇过类似的问题,跪求solution。

作者: 海纳百川1    时间: 2015-8-21 17:40
la9998372 发表于 2015-8-21 17:38
是不是ACK没有应答呀?

ACK没有应答是因为什么原因呢?加速度计坏了?还是供电不稳啥的。这个我就知道接上用。。。

作者: 海纳百川1    时间: 2015-8-21 17:52
la9998372 发表于 2015-8-21 17:48
不知道,我之前用MPU6050的时候单片机也经常死机,查了一下原因就是有的时候容易ACK没有应答,死在那里了 ...

哦哦 这样啊 那我也用了数字陀螺仪L3G4200 这个也可能会出现问题 我去试试看 多谢你了

作者: 海纳百川1    时间: 2015-8-21 18:03
la9998372 发表于 2015-8-21 17:53
不知道,我之前用MPU6050的时候单片机也经常死机,查了一下原因就是有的时候容易ACK没有应答,死在那里了 ...

还有我觉得我这种间歇性的问题,如果是软件原因的话,是不是车子每次就站不起来。我现在车时好时坏,好了,一个月都没问题,不行了,每次发车不出10m,准保持上次转速倒地,而且此时蓝牙也不发数了。我甚至怀疑,时间久了电路板老化了,什么供电不稳啊等等,我瞎猜的。

作者: 海纳百川1    时间: 2015-8-21 20:23
la9998372 发表于 2015-8-21 19:47
我们之前死机也是间歇性的,时好时坏的,有的时候跑几圈都不死机,点背了一圈都跑不下来。

哦哦 你的是ACK出问题了吗?就是出问题在while里面初始化行的吗?我现在应该没有中断打断它呀 配得中断时间都比它采集时间长 清标志在一开始清 难道要在中断结束时清吗

作者: 海纳百川1    时间: 2015-8-21 21:47
la9998372 发表于 2015-8-21 19:47
我们之前死机也是间歇性的,时好时坏的,有的时候跑几圈都不死机,点背了一圈都跑不下来。

我发现我程序里的ACK只是在程序初始化里面才有,采集函数里面没有。如果没有应答 就直接return;程序是这个
void i2c_write_reg(I2Cn_e i2cn, uint8 SlaveID, uint8 reg, uint8 Data)
{   
    i2c_Start(i2cn);                                    //发送启动信号
    i2c_write_byte(i2cn, ( SlaveID << 1 ) | MWSR);      //发送从机地址和写位
    i2c_Wait(i2cn);
      if(i2c_IsAsk(i2cn) == 0) return;                  //没有应答
    i2c_write_byte(i2cn, reg);                         //发送从机里的寄存器地址
    i2c_Wait(i2cn);
    i2c_write_byte(i2cn, Data);                         //发送需要写入的数据
    i2c_Wait(i2cn);
    i2c_Stop(i2cn);
    Pause();                                            //延时太短的话,可能写出错
}

你指的ACK没有应答是指没有应答初始化也会成功,但是到后来会影响采集吗?

作者: 海纳百川1    时间: 2015-8-21 21:48
la9998372 发表于 2015-8-21 21:43
啥标志位?

定时器  它  PIT_Flag_Clear(PIT0);         //清中断标志位

我刚才把它由中断服务函数的开始 放到了最后 也没用,还是会死机


作者: 海纳百川1    时间: 2015-8-21 22:00
la9998372 发表于 2015-8-21 21:43
啥标志位?

你好 我能加一下你的QQ吗

作者: 安安安然。    时间: 2015-8-22 17:23
1.超频了降低频率
2.换模拟i2c
作者: 安安安然。    时间: 2015-8-22 17:27
1.超频了降低频率
2.换模拟i2c
作者: BYu    时间: 2015-8-22 22:21
楼主,我们最近也遇到过这种问题,从传感器MMA8452和L3G4200D开始换,还是会死,换了主板还是会死,结果换了电机驱动板后就没有问题了,个人认为应该是电机驱动板产生的异常磁场信号干扰造成主板上软件死机。
作者: 海纳百川1    时间: 2015-8-23 14:00
安安安然。 发表于 2015-8-22 17:27
1.超频了降低频率
2.换模拟i2c

哦哦 现在是PLL220 要降低吗? 模拟IIC 没听说过 我查查

作者: 海纳百川1    时间: 2015-8-23 14:02
BYu 发表于 2015-8-22 22:21
楼主,我们最近也遇到过这种问题,从传感器MMA8452和L3G4200D开始换,还是会死,换了主板还是会死,结果换 ...

。。。驱动板通过什么会影响到单片机软件呢?电源线还是PWM线。这个还真么考虑过 多谢提醒

作者: sk703561068    时间: 2015-8-24 09:46
硬件IIC加超时,另外不要用杜邦线,用质量好的排线直接焊接上去;之前我用那种彩色的排线抗干扰能力很差,经常卡在ACK;后来换了一种白色的,就再也没出过问题
作者: 海纳百川1    时间: 2015-8-24 12:50
安安安然。 发表于 2015-8-22 17:27
1.超频了降低频率
2.换模拟i2c

我昨天换了模拟IIC 挺好的 到现在没出现过死机 还有我之前IIC采集时间1.2ms 我自己都特别纳闷为何时间这么长 现在换成模拟IIC采集400us左右 感觉挺好的 多谢提醒

作者: 海纳百川1    时间: 2015-8-24 12:53
sk703561068 发表于 2015-8-24 09:46
硬件IIC加超时,另外不要用杜邦线,用质量好的排线直接焊接上去;之前我用那种彩色的排线抗干扰能力很差, ...

恩 不知道为啥我之前的硬件IIC采集时间需要耗费1.2ms 我之前就把中断配成了1.5ms 昨天换成了模拟IIC 到现在还没出现过死机 而且采集时间缩短到400us 希望比赛也不会出问题 另外我渣渣现在还用杜邦线 明年让学弟学妹不再用杜邦线! 多谢提醒

作者: BYu    时间: 2015-8-24 16:26
海纳百川1 发表于 2015-8-23 14:02
。。。驱动板通过什么会影响到单片机软件呢?电源线还是PWM线。这个还真么考虑过 多谢提醒

我也不知道,换了以后就没问题了,山外论坛里也有人发过类似问题。个人认为应该是电机电流最大,散发的干扰磁场最大吧。

作者: 海纳百川1    时间: 2015-8-25 11:26
BYu 发表于 2015-8-24 16:26
我也不知道,换了以后就没问题了,山外论坛里也有人发过类似问题。个人认为应该是电机电流最大,散发的干 ...

哦哦 了解 thx 山大见!

作者: kinshen    时间: 2015-8-27 07:48
学习了,顶起
作者: blue@#!    时间: 2015-8-27 09:04
电源模块那块还是做好滤波,我的也是临比赛前各种死机,复位,加电容都好了
作者: 海纳百川1    时间: 2015-8-27 20:17
blue@#! 发表于 2015-8-27 09:04
电源模块那块还是做好滤波,我的也是临比赛前各种死机,复位,加电容都好了

哦哦 了解 多谢提醒 电源都是学长留下来的 应该没多大问题 我们也加电容了

作者: 海纳百川1    时间: 2015-8-27 20:17
kinshen 发表于 2015-8-27 07:48
学习了,顶起

半年的问题 到现在似乎是解决了

作者: 沉睡的牛仔    时间: 2015-9-1 10:27
海纳百川1 发表于 2015-8-27 20:17
半年的问题 到现在似乎是解决了

你好,我们也遇到了这个问题,单片机有时死机,有时又很好,请问你是怎么解决的?
我们用的是和你一样的加速度计和陀螺仪,用的是IIC通信协议

作者: 海纳百川1    时间: 2015-9-2 11:52
沉睡的牛仔 发表于 2015-9-1 10:27
你好,我们也遇到了这个问题,单片机有时死机,有时又很好,请问你是怎么解决的?
我们用的是和你一样的 ...

哦哦 一开始我用的是例程里面的硬件IIC 你是用的硬件IIC吗?你测过采集时间多长没?我测得是1.2ms左右 时间特别长 然后我借鉴学长的模拟IIC程序 换成了模拟IIC 采集时间缩短到400us 而且从那开始再也没有死机过 比赛试车都没有死机 觉得模拟IIC比硬件IIC采集时间更短吧 这样更好些

作者: 沉睡的牛仔    时间: 2015-9-12 10:08
海纳百川1 发表于 2015-9-2 11:52
哦哦 一开始我用的是例程里面的硬件IIC 你是用的硬件IIC吗?你测过采集时间多长没?我测得是1.2ms左右 时 ...

好的,谢谢

作者: WHUTERWZH    时间: 2016-2-23 20:02
最近我们加速度计也有时候卡在ACK里了,想请问前辈的400us指的是只采集加速度计的数据需要400us还是采集加速度计和陀螺仪两个的数据需要400us啊???
作者: 海纳百川1    时间: 2016-3-5 23:34
WHUTERWZH 发表于 2016-2-23 20:02
最近我们加速度计也有时候卡在ACK里了,想请问前辈的400us指的是只采集加速度计的数据需要400us还是采集加 ...

只采集其中一个需要400us。。。很长时间没来论坛看了
作者: WHUTERWZH    时间: 2016-3-6 00:26
海纳百川1 发表于 2016-3-5 23:34
只采集其中一个需要400us。。。很长时间没来论坛看了

谢谢前辈,我现在是采集两个大概400us,应该没什么大问题吧


作者: 海纳百川1    时间: 2016-3-6 10:26
WHUTERWZH 发表于 2016-3-6 00:26
谢谢前辈,我现在是采集两个大概400us,应该没什么大问题吧

没什么问题 时间更短了 好啊




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