Я написал код для управления скоростью двигателя постоянного тока в Mikroc Но во время сборки он дает ошибку как «необъявленный идентификатор» для всех переменных. Может ли кто-нибудь помочь мне в чем проблема в коде. я использовал pic18f8722. Я сделал кодирование в Java, но очень мало кодирования в c Есть ли проблема в объявлении переменных и функций? Ниже приведен код ....Объявление функции в Mikroc
float pid(int actualOut){
error=setPoint-actualOut;
pOut=error*p;
iOut=iOut+error*i;
if(iOut>255)
iOut=255;
else if(iOut<0)
iOut=0;
dOut=(error-lastError)*d;
out = pOut+iOut+dOut;
lastError=error;
if(out>255)
out=255;
else if(out<0)
out=0;
return out;
}
void pwm(short duty){
short dutyCycle=duty;
PWM1_Init(5000);
PWM1_Start();
PWM1_Set_Duty(dutyCycle);
delay_ms(500);
}
Int feedback(){
T0CON=0xC2;
TMR0l=193;
INTCON=0xA0;
TMR1l=0;
TMR1H=0;
T1CON=0x87;
s=1;
while(s==1){}
actualOut=(60*2*TMR1L)/24;
return actualOut;
}
void interrupt(){
T1CON=0x00;
s=0;
}
void main() {
float p=100,i=200,d=10;
int setPoint=100,s=1;
int actualOut=0;
float pOut=0,iOut=0,dOut=0;
float out=16;
int error=0,lastError=0;
short duty;
TRISC = 1;
TRISG = 0;
while(1){
float out = pid(actualOut);
duty=(short)out;
pwm(duty);
int actualOut = feedback();
}
}
Казалось бы, вам не хватает нескольких вещей. Как список '# include' и некоторые объявления переменных. И вы знаете, когда вы это делаете: 'error = setPoint-actualOut' в функции' pid', что 'main()' объявляет 'setPoint', не означает, что он магически существует как допустимый идентификатор в' pid() ', right ? Исправительная книга на C объяснит все это. – WhozCraig
Этот код написан на Mikroc для микроконцеллеров pic. Нет необходимости в #include – user4380889
Фантастический. Обновите теги вопросов, чтобы включить определенную платформу, а вторая половина моего предыдущего комментария все еще стоит. – WhozCraig