历史上的今天
返回首页

历史上的今天

今天是: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;    

        }

    }    

}


推荐阅读

史海拾趣

EUCHNER公司的发展小趣事

EUCHNER公司的历史可追溯到1940年,由艾米·安士能先生创立的工程事务所。艾米·安士能先生是一位热衷于机械运动和系统工程领域的创新者。在1952年,他成功发明了世界上第一个组合行程开关,这一创新技术为公司的未来发展奠定了坚实的基础。1953年,EUCHNER公司正式成立,开始专注于机电控制产品的研究与开发。

Electronic Transistors Corp公司的发展小趣事

在电子行业的早期,ETC公司以其独特的技术创新能力在晶体管市场上崭露头角。公司创始人带领研发团队,通过不断的实验和改进,成功研发出一种新型的MOSFET晶体管,具有更高的性能和更低的功耗。这一创新成果迅速在市场上引起轰动,ETC公司的知名度也随之提升。随着产品销量的不断增长,ETC逐渐在电子行业中确立了其领导地位。

芯朋微电子(chipown)公司的发展小趣事

随着公司业务的不断发展,芯朋微电子开始布局国际市场。公司积极寻求与国际知名企业的合作,引进先进技术和管理经验,提升自身竞争力。同时,公司也加强了对海外市场的研究和拓展,努力将产品推向全球市场。

Forge Europa Ltd公司的发展小趣事

Forge Europa Ltd公司深知可持续发展对于企业和行业的重要性。因此,公司在生产过程中始终坚持绿色、环保的理念,致力于减少能源消耗和环境污染。公司采用了先进的生产技术和设备,提高了生产效率和资源利用率,同时加强了废弃物的处理和回收工作。此外,Forge Europa还积极参与各类环保活动,倡导绿色消费和低碳生活,为行业树立了可持续发展的典范。

CMD公司的发展小趣事

随着公司业务的不断拓展,CMD开始在全球范围内建立销售办事处。从最初的美国加利福尼亚州Irvine总部,逐渐扩展至加州、明尼苏达州、马萨诸塞州,甚至英国等地。这一布局不仅增强了公司的市场影响力,也为其提供了更多的商业合作机会。

Cembre SPA公司的发展小趣事

随着技术的不断进步,Cembre SPA不断加大对研发的投入,推出了一系列创新产品。其中,公司的电缆接头技术取得了重大突破,不仅提高了接头的可靠性和安全性,还降低了安装和维护的成本。这些技术创新使得Cembre SPA在市场中脱颖而出,成为行业的领导者。

问答坊 | AI 解惑

基于单片机IAP技术的LED显示屏控制系统

摘要 在研究现有LED显示屏电路的基础上,提出一种基于IAP单片机传送8位串行显示数据的LED显示控制系统。给出与基于该控制系统的数据组织方法相应的硬件电路。以256×64点阵双色LED显示屏为例说明其如何实际应用。同时给出相应的软件源程序;并对LED ...…

查看全部问答>

【藏书阁】小经验汇集 91个 20.8M

[ 本帖最后由 wzt 于 2010-3-12 16:24 编辑 ]…

查看全部问答>

专业术语解释

本帖最后由 paulhyde 于 2014-9-15 09:21 编辑 1、频率准确度:在规定条件下,晶振输出频率相对于标称频率的允许偏离值。常用其相对值表示。 2、频率稳定度:    2.1[时域表征]      ⑴ 在规定条件下,晶振内部元件由于老化而引起的输出 ...…

查看全部问答>

文件操作的问题

接手一活儿,.net平台下目标平台为windowsCE的一应用软件,就是扫描数据,然后修改到芯片,现在要把扫描的内容和修改的内容同时要保存下来,好让移动设备同PC端同步,请问保存该怎么保存呢?读写文件怎么读写呢?还有怎么放在指定文件夹下呢?一点 ...…

查看全部问答>

急咨询!!LED点阵64*16的电流有多大,如果用5V的电源,同一块板子上能否公用这个5V电源来为语音芯片供电,是否安全这样?

我在焊接板子上将点阵64*16LED模块的5V电源和另一个语音芯片的电源也是5V的共用,不知道这样是否安全,因为语音芯片的工作电流是25MA,而流经LED的电流肯定很大,不过这些大电流都只通过三极管和灯流入地,我猜想应该不会经过芯片吧,请问各位专业 ...…

查看全部问答>

那个更有前(钱)途

小弟研2,java,c#都是理论上看过教材,调过几个小程序,(不要笑话我),汇编也能编几个程序,以前本科也在混,我知道已经虚度了好几年了,现在不知该走哪条路,是深钻java呢?还是c#,是不是嵌入式比较热,将来更有前(钱)途,望高人指点迷津!!先谢谢了! 自己偏 ...…

查看全部问答>

寄存器输出出现数据不稳定!

将4位的输入 在时钟上升沿赋给输出寄存器,结果输出寄存器在数据稳定前 出现不该有的值!我又在输出和输入之间加入了一级中间寄存器,输入给中间寄存器,中间寄存器在给输出,结果中间寄存器的数据稳定变化,输出端不稳定。在加中间寄存器后,结果 ...…

查看全部问答>

求助:CCS3 .3编译错误:Don\'t know how to build file

初学DSP,在使用CCS3.3时,添加的头文件包含在Document里,怎么加到include里? 在网上找到的链接方法:“buildOptions-->(Tab)complier -->(Category) Preprocessor-->Include search path    把你头文件所在的目录粘贴进去,然后 ...…

查看全部问答>

LPC1114 定时器初值计算?

那位大哥知道LPC1114 定时器32初值计算是如何? 比如定时100ms,如何计算出定时器的初值啊?…

查看全部问答>

MSP430 Flash 问题

小菜刚开始接触单片机没多久,关于flash的理解,是一塌糊涂,请高手帮我讲解下flash,然后msp430 flash 的Main memory(64Kbyte) 即可以存代码,又可以做为eeprom使用,我怎样才能知道哪个地址里面存的是代码,哪个地址里面是我当做EEPROM可以使用的 ...…

查看全部问答>