- Reichelt Elektronik    Werbung      
Ergebnis 1 bis 10 von 25

Thema: Ergebnis einer ungültiger Rechnung erkennen?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    68
    Beiträge
    2.435
    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)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  2. #2
    HaWe
    Gast
    fredyxx ist Anfänger, aber wer sagt, dass er Geschwindigkeitsprobleme hat und nicht vlt sogar einen Arduino mit ARM-cpu hat, wo die float-Performance gar keine Rolle spielt?
    Aber das ist ja eigentlich auch OT, denn die Frage war ja der Umgang mit NANs.
    Und da braucht man entweder eine Programmiersprache, die die Fehler per Handles abfängt (C++ exceptions, geht aber wohl / ggf nicht bei Arduino) - oder man muss es korrekt selber machen, wie ich schon sagte:
    denn eine Funktion ist mathematisch immer nur auf einem bestimmten Wertebereich definiert, und der muss dann durch das eigene Programm eben eingrenzt werden (ungleich Null, größergleich Null, ungleich pi/2 oder pi/4, kleiner 1 oder was auch immer).

Ähnliche Themen

  1. Methoden zum Erkennen einer Fehlerbedingung in Microcontroller-Systemen
    Von Dirk im Forum Software, Algorithmen und KI
    Antworten: 23
    Letzter Beitrag: 24.03.2016, 20:01
  2. Sensor oder Schalter zum erkennen einer PokerKarte
    Von Andreas1984 im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 1
    Letzter Beitrag: 25.12.2013, 01:17
  3. Division mit Nachkommastellen als Ergebnis???
    Von erik_wolfram im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 22.08.2011, 16:13
  4. Beenden einer ISR erkennen
    Von hacker im Forum C - Programmierung (GCC u.a.)
    Antworten: 12
    Letzter Beitrag: 12.08.2009, 17:34
  5. Wie Abzweigung einer Linie erkennen?
    Von p_mork im Forum Software, Algorithmen und KI
    Antworten: 2
    Letzter Beitrag: 16.08.2007, 10:39

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

    Werbung      fchao-Sinus-Wechselrichter AliExpress