Ziemliche Verwirrung bei Division und Cast AT32UC3C

#3762919
Lesenswert?

Hallo Miteinander,

im Moment bin ich ziemlich am Zweifeln meiner Fähigkeiten und ersuche 
nun Rat bei Euch! Kurz vorweg, ich verwende den Mikrocontroller 
AT32UC3C0512C und programmiere mit Atmel Studio 6.2 und nutze den 
AVR32/GNU C Compiler.

Folgendes Problem:

Zur Interpolation zwischen zwei Messpunkten führe ich zunächst eine 
Berechnung der Steigung zwischen diesen durch. Dafür ist eine Division 
nötig.

float m = 0.0;
int dy = bla;
int dx = blabla;
m = (float)dy/(float)dx;


Gewünscht wäre zum Beispiel m = 1.0 / 13.0;
Um eine Kommazahl zu erlangen, verwende ich den float - Cast. Meine 
Erwartung war natürlich eine Kommazahl in m.
Irgendwo hatte ich gelesen, dass eine Division auf einem AVR32 
Controller für Kommazahlen nicht unterstützt wird. Aus diesem Grund habe 
ich einfach meine Int-Werte vergrößert, bei denen die Division 
durchgeführt wird und wollte danach den Cast auf float durchführen um 
dann mit einem Faktor von z.B. 0.0001 zu multiplizieren.

Jedoch funktioniert der cast nicht. In der Variablen steht beim debuggen 
nach dem cast jedesmal eine willkürliche Zahl drin!

Debug:

int k = 13;
float l = 0.0;

.
.
.

l = (float) k;  // erwarteter Wert = 13.0 // Wert laut Debugger = 
1324132542

Ist da grundsätzlich etwas verkehrt? Gibt es ne andere Möglichkeit zu 
dividieren?

Grüße
#3764128
Lesenswert?

Tino Wolf schrieb:
> Irgendwo hatte ich gelesen, dass eine Division auf einem AVR32
> Controller für Kommazahlen nicht unterstützt wird.

Wo C ist, da gibt es die Division. Die Frage ist nur, womit sie 
durchgeführt wird. In Hardware oder in Software.

Wenn du Fliesskommatypen verwendest und die Hardware das nicht kann, 
dann macht es Software. Was bei 32-Bittern so katastrophal nicht 
ausfällt.

Aber wenn du jegliche solche Fliess- oder Gleitkommarechnung in Software 
vermeiden willst, dann bleibt Festkommaarithmetik.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren