- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 31

Thema: ESP32 berechnet floats falsch im Vergleich zu M4 und Due/M3

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    nannte sich ESP32 Dev Board ... aber das hat mit dem Board nix zu tun, der Chip ist der gleiche, nur der Flash Speicher ist mal größer und mal kleiner ^^

    as macht die Dinger ja so genial, nur ein Chip ... keine Peripherie Teile, kein Krimskrams ... einfach Chip drauf, PCB Antenne und Hühnerfutter für die Versorgung
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    @HaWe

    verwende doch mal ein long double als Datentyp, float und double weg. Da ich Dein Programm nicht kenne einmal der Hinweis: auch darauf achten, dass der mal nur mit long double - Werten rechnet und sich nicht was anderes in die Rechnung einmischt, wie int oder float oder double.

    Vielleicht macht auch der Compiler irgendwas merkwürdiges. Da müsste der Maschinencode überprüft werden, der für die Berechnungen produziert wird. Würde etwas mehr Licht ins Dunkel bringen.


    MfG
    Geändert von Moppi (01.05.2019 um 18:32 Uhr)

  3. #3
    HaWe
    Gast
    danke, aber das macht momentan keinen Sinn:
    Mega2560 kann nur fp32,
    M0 + M3 machen fp32 + fp64 per C++ Software,
    M4 macht fp32 per hardware-fpu und fp64 per C++ Software,

    nur der ESP32 macht irgendwas, aber immer anders...
    das muss als Vergleichsbasis reichen....

    Übrigens kennst du mein Programm, es ist im TOP gepostet!


    @Ceos:
    hat der ESP32 eigentlich auch hardware-fpus?

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Übrigens kennst du mein Programm, es ist im TOP gepostet!
    Schön, dort kann es auch noch viel länger stehen!

    Ich muss nicht zwangsweise alle Zeilen lesen. Ich weiß daher nicht, was Dein Programm tut.
    Habe momentan viel zu tun, daher auch nicht die Zeit, mich überall reinzufitzeln.

    Bin gespannt, was am Ende raus kommt!




    MfG

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    ja hat er und die FPU ist auch heiß diskutiert, da die verwendung unnötig viel maschinencode fabriziert .. das ding scheint fischig zu sein abre ich ha immer noch nichnt raus wie ich bei den baordfiles oder in arduino die FPU integration abschalte ... mein spinnensinn klingelt bei der FPU integration, wenn ich sie abschalten kann und die stnadard math verwenden könnte könnte man es ausschließen.
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  6. #6
    HaWe
    Gast
    Zitat Zitat von Ceos Beitrag anzeigen
    ja hat er und die FPU ist auch heiß diskutiert, da die verwendung unnötig viel maschinencode fabriziert .. das ding scheint fischig zu sein abre ich ha immer noch nichnt raus wie ich bei den baordfiles oder in arduino die FPU integration abschalte ... mein spinnensinn klingelt bei der FPU integration, wenn ich sie abschalten kann und die stnadard math verwenden könnte könnte man es ausschließen.
    ja, ich las gerade:
    5.9.6 Floating Point Aritmetic
    The ESP32 supports hardware acceleration of single precision floating point arithmetic (float) via Floating Point
    Units (FPU, also known as coprocessors) attached to each core. The use of the FPUs imposes some behavioral
    restrictions on ESP-IDF FreeRTOS.
    ESP-IDF FreeRTOS implements Lazy Context Switching for FPUs. In other words, the state of a core's FPU registers
    are not immediately saved when a context switch occurs. Therefore, tasks that utilize float must be pinned to a
    particular core upon creation. If not, ESP-IDF FreeRTOS will automatically pin the task in question to whichever core
    the task was running on upon the task's first use of float. Likewise due to Lazy Context Switching, interrupt service
    routines must also not use float.
    allerdings tritt der Fehler ja auch bei fp64 auf, was die 32bit-FPU nicht betreffen würde.... :

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    Ich würde es gerne dennoch ausschließen, komme aber mit Sicherheit nicht vor dem Wochenende dran mich mit den Boardfiles und den innereien von Arduino zu beschäftigen um die Verwendung der "unmodifizierten" math library zu erzwingen ... es kann ja auch sein, dass in der Math Lib Variante für den ESP32 ein grundlegender Fehler existiert ... um für den ESP12 zu compilen benötigt man ja das Espressive Framework und da steckt ziemlich viel code drin der Fehlerbehaftet sein kann
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

Ähnliche Themen

  1. Integer oder Floats in Bytes auftrennen
    Von ElchiMtr im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 30.05.2013, 20:52
  2. Wie berechnet man das Haltemoment?
    Von Elvid im Forum Motoren
    Antworten: 5
    Letzter Beitrag: 08.11.2012, 10:08
  3. Antworten: 5
    Letzter Beitrag: 07.08.2008, 16:38
  4. Wie wurde der Spannungsverdoppler berechnet?
    Von Charly_cs im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 31.08.2005, 12:19
  5. Wie berechnet man Geschwindigkeit
    Von Alexander im Forum Mechanik
    Antworten: 6
    Letzter Beitrag: 28.02.2004, 22:06

Berechtigungen

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

12V Akku bauen