智能车制作

标题: 速度 [打印本页]

作者: 我是一只胖海燕    时间: 2016-5-21 19:35
标题: 速度
撞车之后速度疯涨是因为程序跑飞吗?还是碰到编码器了,找不到原因。请各位大神指教

作者: 哈哈某人用菊花    时间: 2016-5-22 09:50
我觉得并不存在程序跑飞,而是程序出错。比如进入断言函数,进入硬件上访错误函数,
下面说说我的想法:
进入硬件上访错误,所有引脚保持原来的状态,即你PWM如果停下来那一刻是高电平,那进入硬件上访错误函数里面的时候,它就一直是高电平,相当于满的PWM,所以电机撸全速,断言函数应该也是一样。
解决办法就是找到硬件上访错误函数,还有断言保护函数,手动在里面的while(1)里面添加电机保护函数,
硬件上访错误可能是你数组越界了,一般是访问了不该访问的内存,这个你仔细检测代码。
断言函数就是你输入的参数不符合规定,这个规定在库里面体现是个枚举,自己研究下就能明白的。
还有就是你说的编码器问题,这个你也可以自己写个代码保护一下(比如当我跑车的时候,如果编码器脉冲为0,但是我程序又不是给0,这就说明跑着跑着编码器就出问题了,然后我就进入这个条件,让程序停下来,让PWM输出为0)。
其他可能存在的问题还没想到-。-
作者: 我是一只胖海燕    时间: 2016-5-24 09:20
我以下问的问题可能比较LOW,还请大神不吝赐教,关于你说的数组越界是怎么回事儿,我不太明白,能解释一下吗?数组指的是什么程序中定义数组吗?还有存放的空间又怎么知道是不是访问了不该访问的内存?

作者: 我是一只胖海燕    时间: 2016-6-24 11:36
哈哈某人用菊花 发表于 2016-5-22 09:50
我觉得并不存在程序跑飞,而是程序出错。比如进入断言函数,进入硬件上访错误函数,
下面说说我的想法:
...

我以下问的问题可能比较LOW,还请大神不吝赐教,关于你说的数组越界是怎么回事儿,我不太明白,能解释一下吗?数组指的是什么程序中定义数组吗?还有存放的空间又怎么知道是不是访问了不该访问的内存?
作者: 哈哈某人用菊花    时间: 2016-7-3 09:38
我是一只胖海燕 发表于 2016-6-24 11:36
我以下问的问题可能比较LOW,还请大神不吝赐教,关于你说的数组越界是怎么回事儿,我不太明白,能解释一 ...

单片机会给你的变量分配你指定的内存,比如我char a[10],单片机会分配10个字节长度的内存给你。比如单片机分配了 0xFF000000~0xFF000009(起始地址我随便写得,这不是重点,重点是长度,你自己算下)的内存空间给你,那就说明了你只能对这段地址进行读写,比如我往 0xFF000001写了一个八位的数据(一个字节);但是如果你不在这个区间内写数据,比如0xFF00000A写了数据,那可能会造成内存访问错误(即硬件上访错误,因为内存就是硬件),为什么说可能呢,因为单片机规定用户绝对不能允许访问特定的地址空间,我忘记是什么地址空间了,如果你一旦访问了,那就一定会进入到硬件上访错误里面去的。





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