Omvandling mellan datatyper -=LÖST=-

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Jag förstår inte hur du kan skicka en float till en byte.....

Din tor = (int)tor är ju bara en "ta bort decimaler", tor är en float hur som helst. Testa PORTA = (char)tor;
Användarvisningsbild
DeVille
Inlägg: 2361
Blev medlem: 29 mars 2004, 15:04:22
Ort: Dalsländska skogen.
Kontakt:

Inlägg av DeVille »

Japp såg det.. men har åtgärdat, får fortfarande samma fel!
blir galen.. ska försöka skriva en funktion själv, som använder Taylorutveckling.
Rymdninja
Inlägg: 330
Blev medlem: 15 december 2003, 13:41:25
Ort: Göteborg

Inlägg av Rymdninja »

länkar du med mathlibet? om inte så skicka med -lm till kompileringen...
Användarvisningsbild
DeVille
Inlägg: 2361
Blev medlem: 29 mars 2004, 15:04:22
Ort: Dalsländska skogen.
Kontakt:

Inlägg av DeVille »

Jadå jag länkar..

det funkar ju om jag skickar en "lös" konstant, men inte om jag
försöker skicka någon som varit inne i sqrt funktionen.. blir helknäpp!
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Blir??? :vissla:

Testa att deklarera en char:
unsigned char X;
X = (unsigned char)tor;
PORTA = X;
Användarvisningsbild
DeVille
Inlägg: 2361
Blev medlem: 29 mars 2004, 15:04:22
Ort: Dalsländska skogen.
Kontakt:

Inlägg av DeVille »

hehe.. nä så många gånger jag blivt så borde det nog vara är..

Ok. jag testade det förut då fick jag koden nedan, samma resultat
undefined reference to sqrt();

Kod: Markera allt

int w;
float matemp;
float a,b,c,R,tor;
unsigned char testa;

a=-131.59;
b=761.25;
c=25.71;
R=125.50;


matemp=b-R;
matemp=sqrt(matemp);
matemp=matemp-c;
matemp=a*matemp;

//tor=a*(sqrt(b-R)-c);  //spelar ingen roll om man gör så här heller.

testa=(unsigned char)matemp;

	while (1)
	{
	PORTA=128;		//Placera coursor i början av Display.
	eclock();
	delay();
	
	PORTA=testa;	//****Skriv ut variablen testa på Display. ex om testa=65 så blir det A på displayen.
	e_rsclock();
	delay();
	delay();
	
		for(;;)	//Gör ingenting.
		{
		w++;
		}

	}
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Är du säker på att du länkar rätt, och att sqrt() verkligen finns i ditt m-lib?

Anledningen att du inte fick någon undefined reference när du tog bort raden PORTA=tor i ditt program tror jag helt enkelt beror på att utan den raden används inte resultatet från sqrt till något så det optimeras bort helt och hållet.

Undefined reference betyder att du inte har någon sqrt-funktion helt enkelt, blir inte bättre av att göra typomvandlingar och andra ändringar i koden.
Användarvisningsbild
DeVille
Inlägg: 2361
Blev medlem: 29 mars 2004, 15:04:22
Ort: Dalsländska skogen.
Kontakt:

Inlägg av DeVille »

:oops:

hade ett litet fel i makefilen..
:oops:

Edit: ändrade i rubriken
Skriv svar