Не могу найти ошибку (AVR IAR) (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено PILOTIK 13 декабря 2004 г. 14:50

Warning[w6]: Type conflict for external/entry "TTriStateReg::TTriStateReg()", in module init against external/entry in module rc; function return types
are different; class/struct/union field names do not match: r28 vs YL

Появилась после разделени файла .cpp и .h (Ранье и объявления и классы в одной куче были)

Вот .h
_____________________________________
struct T_YHL // ñòðóêòóðà äëÿ âûõîäíûõ óïðàâëÿþùèõ ñèãíàëîâ êëàññà TTriSateReg
{
char YL;
char YH;
};

enum TGyst {neutral,minus,plus};// òèï äëÿ õðàíåíèÿ òåêóùåãî ïîëîæåíèÿ ðåã-ðà

class T_RC //êëàññ rc-öåïî÷êè
{
public:
float iteration_step;
float tau_z;
float tau_r;
float ec;
float uc;
void init(float t_z,float t_r,float ec0,float uc0,float i_s);
void do_iteration(char fzr);
};

class TTriStateReg // êëàññ òðåõïîçèöèîííûé ðåãóëÿòîð
{
private:
TGyst Gyst;
public:
TTriStateReg(void);
char YL;
char YH;
float Razb;
float Mup;
float Mdown;
float Pup;
float Pdown;
float Ecmax;
T_RC rc;
void init(float t_z,float t_r,float ec0,float uc0,float i_s,float Mu,float Md,float Pu,float Pd, float Ecm,float Razb,TGyst G);
void analyze(void);
void do_rc_step(void);
};

А вот .cpp
_________________________________________________
#include "rc.h"

/*****************************************************************************
Ôóíêöèè êëàññà T_RC
*****************************************************************************/
void T_RC::init(float t_z,float t_r,float ec0,float uc0,float i_s)
{
tau_z=t_z;
tau_r=t_r;
ec=ec0;
uc=uc0;
iteration_step=i_s;
}

void T_RC::do_iteration(char fzr)
{
if(!fzr)//åñëè ðàçðÿä
{
uc=uc+(iteration_step/tau_r)*(ec-uc);
}
else //åñëè çàðÿä
{
uc=uc+(iteration_step/tau_z)*(ec-uc);
}
}

/*****************************************************************************
Ôóíêöèè êëàññà TTriStateReg
*****************************************************************************/
TTriStateReg::TTriStateReg(void)// êîíñòðóêòîð
{
// YL=0;
// YH=0;
}

void TTriStateReg::init(float t_z,float t_r,float ec0,float uc0,float i_s,float Mu,float Md,float Pu,float Pd, float Ecm,float R,TGyst G)
{
YL=0;
YH=0;
Razb=R;
Gyst=G;
rc.init(t_z,t_r,ec0,uc0,i_s);
Mup=Mu;
Mdown=Md;
Pup=Pu;
Pdown=Pd;
Ecmax=Ecm;
}

void TTriStateReg::analyze(void)
{
switch(Gyst)
{
case neutral:
if((Razb-rc.uc)>Pup)
{
Gyst=plus;
rc.ec=Ecmax;
YH=1;
YL=0;
}
else
{
if((Razb-rc.uc) {
Gyst=plus;
rc.ec=-Ecmax;
YH=0;
YL=1;
}
}
break;
case plus:
if((Razb-rc.uc) {
Gyst=neutral;
rc.ec=0;
YH=0;
YL=0;
}
break;
case minus:
if((Razb-rc.uc)>Mdown)
{
Gyst=neutral;
rc.ec=0;
YH=0;
YL=0;
}
break;
}
}

void TTriStateReg::do_rc_step(void)
{
rc.do_iteration((char)Gyst);
}


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru