gpt4 book ai didi

c - mikroC 中的浮点到短转换错误

转载 作者:行者123 更新时间:2023-11-30 17:20:15 24 4
gpt4 key购买 nike

我在 mikroc 中编写了一段代码,其中 pwm 信号应用于电机。现在,由于传递给 PWM 内置函数的占空比需要是短数据类型,并且我的 pid 输出是 float 类型,因此我将 float 类型转换为短类型。但问题是,对于小于或等于 100 的值,转换可以正确完成,而对于超过 100 的值,则可以正确完成转换。给出诸如 65535 之类的值。例如:如果 float 值为 255,则 Short 等于 65535 和如果 float 值为 100,则 Short 等于 100我无法弄清楚错误是什么?

下面是我的代码,仅包含主函数和 UART 函数

主要功能

  void main() {
UART1_Init(9600);
pro=5,i=0,der=0;
setPoint=100,sel=1;
actualOut=80;
pOut=0,iOut=0,dOut=0;
out=16;
error=0,lastError=0;
OPTION_REG=0;
T1CON=0;
INTCON=0;
ADCON0=0;
CMCON = 0x07;
TRISC.RC0=1;
TRISC.RC2=0;
TRISC.RC6=0;
PORTC=0;
while(1){
out = pid(actualOut);
duty=(short)out; out is float type and duty is short
Uart1_Intout_ReturnInt(duty);
UART1_Write(13); // newline
pwm(duty);
actualOut = feedback();

}
}

UART功能

 Uart1_Intout_ReturnInt(unsigned i) {
char puf[6]; //for max 5 digits and the end-sign
WordToStr(i, puf); // in "Conversions" library
UART1_Write_Text(puf);
return i;
}

使用虚拟终端和uart在proteus中显示值请帮助我

最佳答案

我发现解决方案类型转换需要按以下方式完成

unsigned short duty=(unsigned short)out;

-直流电机

关于c - mikroC 中的浮点到短转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28645770/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com