历史上的今天
今天是:2024年09月08日(星期日)
2020年09月08日 | 减法要用 signed
2020-09-08 来源:eefocus
今天调试一个程序,因为Feedback是电流采样值,Setpoint是PWM值,这两个不可能是负值。所以以为Setpoint和Feedback这两个变量都可以设置为u16型(unsigned int),结果悲催了,CPU总是跑飞。导致LED暴亮,差点烧掉。。。
原因是两个unsigned型数据相减后不能为负值。如: PIdata->Setpoint - PIdata->Feedback
所以,要保证其中有一个是signed 型,系统就默认相减的结果为signed型,程序可以正常运行。
typedef struct {
u16 Kp;
u16 Ki;
u8 OutMax;
signed long Setpoint;
u16 Feedback;
signed long Error;
signed long Integral;
signed long Output;
u8 Saturated;
}tPIParams;
tPIParams Current;
void CalcPI(tPIParams *PIdata)
{
PIdata->Error = PIdata->Setpoint - PIdata->Feedback;
// Deadband -- If the magnitude of the error is less than a limit,
// then don't calculate the PI routine at all. This saves
// processor time and avoids oscillation problems.
if((PIdata->Error > 2) || (PIdata->Error < -2))
{
// Now, calculate the actual PI function here.
PIdata->Output += (PIdata->Error * PIdata->Kp )/10;
// Perform boundary checks on the PI controller output. If the
// output limits are exceeded, then set output to the limit
// and set flag.
if(PIdata->Output > PIdata->OutMax)
{
PIdata->Output = PIdata->OutMax;
}else if(PIdata->Output < 0)
{
//PIdata->Saturated = 1;
PIdata->Output = 0;
}
}
}
史海拾趣
|
摘要 在研究现有LED显示屏电路的基础上,提出一种基于IAP单片机传送8位串行显示数据的LED显示控制系统。给出与基于该控制系统的数据组织方法相应的硬件电路。以256×64点阵双色LED显示屏为例说明其如何实际应用。同时给出相应的软件源程序;并对LED ...… 查看全部问答> |
|
急咨询!!LED点阵64*16的电流有多大,如果用5V的电源,同一块板子上能否公用这个5V电源来为语音芯片供电,是否安全这样? 我在焊接板子上将点阵64*16LED模块的5V电源和另一个语音芯片的电源也是5V的共用,不知道这样是否安全,因为语音芯片的工作电流是25MA,而流经LED的电流肯定很大,不过这些大电流都只通过三极管和灯流入地,我猜想应该不会经过芯片吧,请问各位专业 ...… 查看全部问答> |
|
将4位的输入 在时钟上升沿赋给输出寄存器,结果输出寄存器在数据稳定前 出现不该有的值!我又在输出和输入之间加入了一级中间寄存器,输入给中间寄存器,中间寄存器在给输出,结果中间寄存器的数据稳定变化,输出端不稳定。在加中间寄存器后,结果 ...… 查看全部问答> |
|
求助:CCS3 .3编译错误:Don\'t know how to build file 初学DSP,在使用CCS3.3时,添加的头文件包含在Document里,怎么加到include里? 在网上找到的链接方法:“buildOptions-->(Tab)complier -->(Category) Preprocessor-->Include search path 把你头文件所在的目录粘贴进去,然后 ...… 查看全部问答> |
|
小菜刚开始接触单片机没多久,关于flash的理解,是一塌糊涂,请高手帮我讲解下flash,然后msp430 flash 的Main memory(64Kbyte) 即可以存代码,又可以做为eeprom使用,我怎样才能知道哪个地址里面存的是代码,哪个地址里面是我当做EEPROM可以使用的 ...… 查看全部问答> |




