- LiTime Speicher und Akkus         
Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 31

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

  1. #21
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    Anzeige

    Praxistest und DIY Projekte
    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. #22
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.643
    @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 19:32 Uhr)

  3. #23
    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. #24
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.643
    Ü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. #25
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    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. #26
    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. #27
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    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.

  8. #28
    HaWe
    Gast
    Zitat Zitat von Ceos Beitrag anzeigen
    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
    klar, perfekt wenn du darüber was rauskriegst!

  9. #29
    HaWe
    Gast
    Ein User aus dem Arduino Forum hat die Ursache gefunden!
    Es lag an der Funktion abs()
    Bei Arduino kann die auch auf float angewendet werden, bei ESP32 aber nicht, hier muss man fabsf() für float bzw. fabs() für double verwenden.
    http://forum.arduino.cc/index.php?to...633#msg4158633
    Nun kommen endlich auch die ESP- und die Linux-Astronauten-Crews an der Tranquiity Base an!
    Geändert von HaWe (02.05.2019 um 21:27 Uhr)

  10. #30
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    das sind die Details die ich meine ... bei einem Pic kann man einfach "int32 / int8" rechnen und bekommt ein speicherfressendes befehlsmonster vom compiler oder aber man nimmt die spezielle Funktion nur für den Pic und bekommt eine schlanke Operation die ohne zusätzlichen Speicher auskommt und in nur ein paar Takten abgeschlossen ist

    interessant aber dass abs tatsächlich nur für int definiert ist (was ich auf die schnelle aus 3 referenzen rausgelesen habe)
    arduino das aber absolut typlos dokumentiert
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Ä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, 21:52
  2. Wie berechnet man das Haltemoment?
    Von Elvid im Forum Motoren
    Antworten: 5
    Letzter Beitrag: 08.11.2012, 11:08
  3. Antworten: 5
    Letzter Beitrag: 07.08.2008, 17:38
  4. Wie wurde der Spannungsverdoppler berechnet?
    Von Charly_cs im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 31.08.2005, 13:19
  5. [ERLEDIGT] Wie berechnet man Geschwindigkeit
    Von Alexander im Forum Mechanik
    Antworten: 6
    Letzter Beitrag: 28.02.2004, 23:06

Berechtigungen

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

LiTime Speicher und Akkus