www.mikrocontroller.net

Forum: Compiler & IDEs rechenungs problem atmega32


Autor: ROB (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Was ist loss mit diese program progn.c ?

Excakt.txt sind die correcte resultaten. Aber in progn.txt sind
resultaten
bekommen mit progn.c. Warum bleibt EL so lang constant um dan eine
sprung so machen ?

Ich compileer mit WinAVR 20040404 !! Brauche eine atmega32 - 8 Mhz.
Terminal 9600 baud,8 bits,parity none, flow control none, stopbit 1.

gr,

Rob

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf welchem Rechner wurden die Werte für 'excakt.txt'
berechnet?

Das Problem duerfte sein: Du betreibst da ziemlich
heftige Gleitkomma-arithmtik. Die ist an sich schon
problematisch durch die Rundungefehler die sich im Laufe
der Berechnung einschleichen. Erschwerend kommt auf einem
AVR hinzu, dass die Gleitkomma-Arithmetik lediglich eine
4-Byte Arithmetik ist, selbst wenn du den Datentyp 'double'
anforderst. 4-Byte ist nicht viel und die Rundungsfehler in
der Arithmetik schaukeln sich relativ schnell in Bereiche
hoch, die unsinnige Ergebnisse liefern.
Ich fürchte, dass du nur 3 Alternativen hast:
* Entweder einen Compiler besorgen, der 8-Byte double Typen
  besitzt
* Eine sehr sorgfältige Analyse des Codes und Umstrukturierung
  um die Rundungsfehler möglichst klein zu kriegen. Bei dem
  massiven Einsatz von Winkelfunktionen und deren Umkehrfunktionen,
  ist das aber ein in der Praxis sinnloses Unterfangen. Zumindest
  dann, wenn du so eine Analyse nicht schon mindestens einmal
  gemacht hast.
* Komplette Neuentwicklung, bei der vor allem auf eine wesentlich
  einfachere Berechnung Wert gelegt wird.

Autor: ROB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Karl,

Excakt.txt sind resultaten bekommen mit eine PC-program.

Wo ist eine compiler su finden mit 8-Byte double Typen besitzt ?

Gr,

Rob

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So etwas gibt es nicht. Es hindert dich aber keiner, so etwas in
Festkomma-Arithmetik umzusetzen, macht jedoch etwas Arbeit, die ich dir
nicht abnehmen werde.

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ROB,

das funktioniert mit 4Byte floats und mit 2 Byte ints aufm PC auch,
daran liegts also nich !?

Groatjes en tot ziens
Detlef

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.