Forum: Mikrocontroller und Digitale Elektronik E Funktion und Ln Funktion bei C167?!?


von Baggacfreak B. (baggacfreaks)


Lesenswert?

Hi,

ich bräuchte sowohl die E Funktion, als auch deren Gegenspieler Ln.
Gibt es für den C167 mit dem Keil Compiler überhaupt die math.h zum
Einbinden? Oder muss man sich die Funktionen selber programmieren?
Außerdem würde mich interessieren wie Float bei diesem Prozessor
umgesetz wird. Intern arbeitet er ja nur mit integer Werten!

CU!

von High Performer (Gast)


Lesenswert?

> Gibt es für den C167 mit dem Keil Compiler überhaupt die math.h

Die Antwort müsste im Verzeichniss Keil..../inc/..  stehen!

von Microman (Gast)


Lesenswert?

Hallo Andreas,

soweit ich weiss wird der Datentyp "float" über Integer emuliert, was
aber ein größerer Aufwand ist und wir deshalb wenn es geht darauf
verzichten, bis jetzt erfolgreich ;-).

Microman

von Rainer (Gast)


Lesenswert?

Hallo Andreas!

Wie Microman schon meinte, float nach Möglichkeiten vermeiden. Sollte
dann uVision dennoch keine ln oder exp-Funktionen anbieten, dann musst
Du diese selber z.B. über Reihenentwicklungen umsetzen.

Gruß,
Rainer

von sous (Gast)


Lesenswert?

Ich selbst habe schon Software für den C167 gebaut, die mit float und
double gerechnet hat (Transzendente Funktionen a la 'e' und 'ln'
inklusive). Das ging gut.

Wir haben damals den Tasking-Compiler benutzt, ich wage aber zu
behaupten, dass jeder anständige Compiler eine Library im Schlepptau
hat, die float/double & co unterstützt. Sowas geht schließlich sogar
auf dem AVR (8-bit-Controller).

Ich kenne Keil nur aus Prospekten (immer, wenn ich den Preis sehe, ist
die Durchsicht für mich beendet :)  ), kann mir aber nicht vorstellen,
dass ein so teueres Werkzeug etwas so elementares nicht unterstützt.

von Schoasch (Gast)


Lesenswert?

Hast du es schon mal mit der math.h probiert?
Da wirst du wunderschöne funktionen finden ;-)

extern float exp   (float val);
extern float log   (float val);
extern float log10 (float val);

Und eine float.h gibts auch noch. Schau doch einfach einmal etwas im
inc-Ordner deiner Installation herum.

von johnny.m (Gast)


Lesenswert?

Hast Du die Vollversion von µVision? Wenn nicht, dann gibt das mit float
eh nix. Fließkomma-Arithmetik wird afaik nur von der Vollversion
unterstützt.

von Thomas (Gast)


Lesenswert?

von der Keil HP:
C166 Evaluation Tools
You may not use the Evaluation Version of the µVision IDE/Debugger to
create commercial products.
The C166 compiler, assembler, and linker are limited to 4K Bytes of
object code. Source code may be of any size.
Programs that generate more than 4K Bytes of object code will not
compile, assemble, or link.
The debugger supports programs that are 8K Bytes or smaller.

da steht nix von Einschränkungen bei Float nur der C51 Compiler kann in
der Eval Version kein Float
Thomas

von baggacfreaks (Gast)


Lesenswert?

Hi,

naja in der Schule haben wir Vollversion und ich hab inzwischen eine
andere Lösung gefunden. Konnte mit Parallelwiderstand die Kurve fast zu
einer Gerade bringen. Daher kann ich die Funktionen umgehen. Ob nun
Float oder nich sind unsere Lehrer sich nicht ganz einig. Fakt ist,
dass der Lehrer, der für die Programmierennote zuständig ist,  nix
gegen Float hat. Das Problem ist mir aber bekannt und das is denke ich
wichtiger.

MfG, sorry find mein Passwort grad nich!

P.S.:
Wie könnte man die Funktionen mit Integer annähern?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.