Ziemliche Verwirrung bei Division und Cast AT32UC3C

OP #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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.