打印
[AVR单片机]

用GCC-AVR三年了,终于发现了一个 BUG

[复制链接]
2758|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wenming|  楼主 | 2007-10-15 14:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ATmega16| | 2007-10-15 15:23 | 只看该作者

根本就不是BUG

根本就不是BUG

因为包含的头文件有对SP的宏定义
int SP被替换成int (*(volatile uint8_t *)(0x5D)) 语法不通。

加上
#ifdef SP
#undef SP
#endif
int SP;
就行了。

使用特权

评论回复
板凳
John_Lee| | 2007-10-15 16:25 | 只看该作者

三年啦,终于发现了SP,呵呵

使用特权

评论回复
地板
wenming|  楼主 | 2007-10-15 16:55 | 只看该作者

明白了 ,没有仔细读头文件

不好意思。开始的 时候以为是 GCC对C99的关键字做了扩展

使用特权

评论回复
5
wenfengcom| | 2007-10-15 18:43 | 只看该作者

PID

能不能把PID程序贴出来学习一下啊,一直不怎么明白PID的运算输出结果怎么换算成执行机构的控制量,例如通过PWM控制电机的转速,很多书上都讲PID,但是没发现PID的运算结果怎么处理,

使用特权

评论回复
6
wenfengcom| | 2007-10-15 18:50 | 只看该作者

补充

能不能把PID程序贴出来学习一下啊,一直不怎么明白PID的运算输出结果怎么换算成执行机构的控制量,例如通过PWM控制电机的转速,很多书上都讲PID,但是从来没发现仔细讲清PID的运算结果怎么处理换算成实际的控制量,例如电机转速控制,通过PID计算得到一个结果R,怎么把R转换成占空比(0~100%)去控制电机?

使用特权

评论回复
7
已注册| | 2007-10-16 08:40 | 只看该作者

这样行不行?

PWM控制电机速度:

设置速度Vset对应的输入电压为Vs(注意和VCC的关系)
实际速度Vtrue对应的输入电压为Vr(注意和VCC的关系)

求得的三个偏差则都是以电压为单位,再分别和P/I/D参数运算得到的计算值Vout也是以电压为单位,如果PWM占空比为100%的时候,PWM的控制极电压=VCC,那么Vout/VCC就是PWM此时的输出占空比,有了PWM占空比,MCU该怎么计算就容易了。


我是这么认为的……

问一个PID的小知识:如果一个系统基本确定了P的大小,是否意味着已经基本确定了这个系统的控制范围?
例如:一个温度控制系统,测量范围0~200度,假设此时要求在100度的控制,如果此时P已经确定,例如P=3,则比例带对应的温度范围是多少?

使用特权

评论回复
8
huangqi412| | 2007-10-16 16:22 | 只看该作者

使用特权

评论回复
9
dudongdao| | 2007-10-16 23:30 | 只看该作者

" 终于发现了"不容易啊兄弟~~~

   

使用特权

评论回复
10
qjy_dali| | 2007-10-18 02:20 | 只看该作者

大家发现了BUG要向GCC组织报告,也好改进

使用特权

评论回复
11
mxh0506| | 2007-10-18 12:57 | 只看该作者

呵呵,搞单片机应该认识SP啊

使用特权

评论回复
12
brotherwen| | 2007-11-15 13:08 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

108

主题

779

帖子

12

粉丝