mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Integer als Ergebnis mit Float berechnen


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
unsigned long int ist_frequenz;
float ist_frequ_tmp;

ist_frequenz=freq_overfl_cnt_tmp*(unsigned long int)0xFFFF;
ist_frequenz+= (unsigned long int)TCNT1_tmp-20;


ist_frequ_tmp=(float)ist_frequenz / (float)8000000;

ist_frequ_tmp = 1/ist_frequ_tmp;
>>ist_frequenz=ist_frequ_tmp*32;<<
--------

Hallo,
ich habe oben geposteten Code. Sobald die mit ">>...<<" markierte Zeile 
eingefügt wird, wird der Code plötzlich 4-fach so groß wie zuvor -> also 
hoher Rechenaufwand für die Berechnung.
Es bringt auch nichts mit casten etc. deshalb denke ich dass irgendwo 
ein grundsätzlicher Fehler vorliegt, aber WO?
Für nen Tipp wäre ich dankbar!

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast wrote:
> Es bringt auch nichts mit casten etc. deshalb denke ich dass irgendwo
> ein grundsätzlicher Fehler vorliegt, aber WO?
> Für nen Tipp wäre ich dankbar!

Dein absolut grundsätzlicher Fehler: Floats. Floats sind so ein 
Spielzeug, das viele Spielkinder anzieht und dass viele auf Biegen und 
Brechen benutzen wollen. Eigentlich braucht kein Schwein 
Fließkommazahlen, selbst moderne Sternwarten kommen komplett ohne aus.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das ist mir klar. Grundsätzlich versuche ich floats auch zu umgehen, 
aber hier häng ich grad irgendwie und mir fällt keine nicht-float-Lösung 
ein....

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Problem gelöst! :-)

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie denn? Und: Warum gehts nicht ohne Float? Alles mal 1000 nehmen und 
nacher das Komma wieder setzen...?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.