Hallo fredyxx ,
Zitat Zitat von fredyxx Beitrag anzeigen
wenn ich mir eine float-Variable auf dem Seriellen Monitor ansehe, die aber aus einer nicht möglichen Rechnung, z.B acos (1.2) entstanden ist, wird als Wert "nan" ausgegeben.
Wie kann ich diesen Wert, der ja kein float ist, in einem Arduino-Programm abfragen und als Fehler auswerten?
Eigentlich sollte man VOR der Berechnung eine Plausibiltätsprüfung der Parameter vornehmen.
Da muss irgend etwas schief gegangen sein, wenn z.B. ein Divisor 0 ist.

Bei Ganzzahlrechnungen muss man auch aufpassen, dass Zwischenprodukte nicht überlaufen.

Grundsätzlich sind Fliesskomma-Berechnungen langsam. Bei vorhandener FPU etwa 2-5 mal langsamer als Integer-Berechnungen. Muss die FPU emuliert werden, ist man etwa 100x langsamer als eine FPU. Hinzu kommt noch der Speicherplatz für die Bibliothek.

In meinen µC-Projekten konnte ich FP immer umgehen, z.B. kann man Temperaturen in 1/100 Grad speichern, dann kann man alles mit Ganzzahlen berechnen und muss nur bei der Ausgabe das Komma reinflicken.
Für gebrochene Zahlen kann man Brüche verwenden. Anstatt
x*0.75 was FP benötigt
Kann man
(x*3)/4 rechnen, was dann mit Ganzzahlen geht. Aufpassen muss man nur, dass (x*3) keinen Überlauf erzeugt.

Bei Seriengeräten kann dies dann einiges ausmachen, wenn man einen kleineren und günstigeren µC einsetzen kann.

Auch komplizierte Berechnungen wie die Linearisierung eines NTCs und damit eines Feuchtesensors habe ich ganz ohne FP hin bekommen. OK, hat mich eine halben Tag Zeit gekostet um die Formeln entsprechend anzupassen, aber auf 1'000 Geräte umgelegt und beim µC gespart ...

MfG Peter(TOO)