- 12V Akku mit 280 Ah bauen         
Seite 1 von 2 12 LetzteLetzte
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
    18.03.2018
    Beiträge
    2.674
    Blog-Einträge
    1
    Zitat Zitat von HaWe Beitrag anzeigen
    hi,
    Mein ESP32 berechnet floats in einem Programm falsch im Vergleich zu meinem M4 und meinem M3 / Due
    (Arduino IDE 1.8.8 )

    nach einer langen Berechnung (1264 Schritte) durch den M4 erhalte ich das Ergebnis 32.843750,
    während der ESP32 54196.625 berechnet
    Ich habe das auch mit dem Due nochmals getestet und hier bekomme ich auch das Ergebnis 32.843750, genau wie beim M4.
    nach einer langen Berechnung (1264 Schritte) durch den M4 erhalte ich das Ergebnis 32.843750,
    während der ESP32 54196.625 berechnet

    Ergebnis(e) in welcher(n) Variable(n)?

    Eventuell gibt es Unterschiede. Zuerst würde ich prüfen, ob alle Datentypen identisch sind, auf den unterschiedlichen Systemen. Ein Beispiel dazu, wie das geht gibts hier im Thread: https://www.arduinoforum.de/arduino-...n-beim-ESP8266

    Wenn es Unterschiede gibt, gilt es zu überlegen, welche Auswirkungen dies bei langen rekursiven Berechnungen hat. Also welche Fehlergröße sich einschleichen könnte.

    Da der Unterschied aber enorm ist, wäre auch denkbar, dass es ein systemspezifisches Problem gibt, indem Code erzeugt wird, der ein anderes Ergebnis liefert.
    Wenn gar nichts hilft, kann man das Programm Schritt um Schritt neu aufbauen, um irgendwann an den Punkt zu kommen, wo es nicht mehr funktioniert, also das Ergebnis auf den Systemen unterschiedlich ist. Dann hat man einen weiteren Anhaltspunkt.


    MfG

  2. #2
    HaWe
    Gast
    ja, die Datentypen sind völlig identisch.
    fp32 ist überall fp32, aber ich erwähnte ja bereits, dass auch ein Wechsel zu fp64 nichts ändert.
    Alles andere steht im TOP.
    Aber zurück zum Ausgangsproblem: hier hat doch sicher jemand einen M3, M4 und/oder (vor allem auch) einen ESP32 zum Austesten meines Programms bei sich selber zuhause?
    Zunächst mal wäre es nämlich auch wichtig, das eine oder andere Ergebnis überhaupt einmal (v.a. per Arduino IDE) zu bestätigen.

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.674
    Blog-Einträge
    1
    Das wäre auch mein nächster Vorschlag. Man muss mal sehen, was dabei herauskommen sollte. Dazu gehe ich gerne Programme von Hand durch, nehme mir Zettel und Bleistift und rechne das mit Taschenrechner nach. Dazu gehe ich den gesamten Programmablauf durch, Befehl für Befehl.

    MfG

  4. #4
    HaWe
    Gast
    Zitat Zitat von Moppi Beitrag anzeigen
    Das wäre auch mein nächster Vorschlag. Man muss mal sehen, was dabei herauskommen sollte. Dazu gehe ich gerne Programme von Hand durch, nehme mir Zettel und Bleistift und rechne das mit Taschenrechner nach. Dazu gehe ich den gesamten Programmablauf durch, Befehl für Befehl.

    MfG
    Moppi, bitte keine Allgemeinplätze. Das Programm ist dasselbe auf allen Plattformen, also kein Unterschied, alle Variablen werden identisch auf M3,M4 und ESP32 definiert. Trotzdem ein Ausreißer-Ergebnis ausschließlich auf ESP32.
    Bitte antworte nur exakt auf meine exakten Fragen.

    Also zurück zum Ausgangsproblem: hier hat doch sicher jemand einen M3, M4 und/oder (vor allem auch) einen ESP32 zum Austesten meines Programms bei sich selber zuhause?
    Zunächst mal wäre es nämlich auch wichtig, das eine oder andere Ergebnis überhaupt einmal (v.a. per Arduino IDE) zu bestätigen.

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.674
    Blog-Einträge
    1
    Ich dachte, Du wolltest Fehler finden.
    Dann bin ich mal wieder raus.


    MfG

  6. #6
    HaWe
    Gast
    Zitat Zitat von Moppi Beitrag anzeigen
    Ich dachte, Du wolltest Fehler finden.
    Dann bin ich mal wieder raus.


    MfG
    ja, vielen Dank, ich wollte den Fehler auf dem ESP32 (!!) finden. Auf M3 und M4 gibt es keinen Fehler.

    Daher meine Anfrage:
    Hat jemand so etwas schon einmal gehört oder gelesen und kann die Rechenergebnisse ggf nachprüfen bzw für M3, M4 und ESP32-Plattformen bestätigen?

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    ich habe mir leider nur meinen ESP8266 mitgenommen und habs gerade mal damit ausprobiert, seltsamerweise funktionierts damit auch
    Chip mäßig sind die relativ ähnlich, muss wohl wirklich was ESP32 mäßiges sein, heute Nachmittag bin ich wieder zu Hause und kanns mal mit meinem 32er testen

    aber da stimmt wirklich was mit den ausgaben nicht im programm er wandelt die floats nicht richtig um bei mir,d as sieht alles etwas kryptisch aus, aber wenigstens landet er ordentlich
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  8. #8
    HaWe
    Gast
    sonst niemand hier, der einen Arduino-kompatiblen ESP32 hat und evtl sogar gegen einen Due oder einen Arduino-kompatiblen M4 testen kann?

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    der Espressiv Server hat scheinbar noch ein 56k Modem für den Upload -.-

    Code:
    t.sec  hi.m vVert vHoriz   Burn tilt    brake acc  Fuel TBase.m
    776.0     0    0     1      33%    0     2.1 -0.5   481 54197.343750
    
    t.sec  hi.m vVert vHoriz   Burn tilt    brake acc  Fuel TBase.m
    776.5    -1    1     1       0%    0     0.0  1.6   481 54196.625000
    
    
    Very good but way off!
    Geändert von Ceos (30.04.2019 um 19:22 Uhr)
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  10. #10
    HaWe
    Gast
    ist ja irre!
    derselbe Fehler!

    Jetzt pass mal auf:
    schau dir mal Zeile 109 an:

    if( sHorzm<15600.0) burnPerc=0; // sHorzm<15600

    hast du die gefunden?

    umändern in:
    if( sHorzm<=0) burnPerc=0; // oder ganz auskommentieren

    ergibt: beim ESP32
    69359.656250

    Due und M4 (und sogar der Mega2560!) aber rechnen hier aus:
    15197.906250


    kann doch nicht sein, oder?

    PS,
    welches ESP32 modul has du verwendet?
    Geändert von HaWe (01.05.2019 um 07:12 Uhr) Grund: gekürzt

Seite 1 von 2 12 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, 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. [ERLEDIGT] 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
  •  

LiFePO4 Speicher Test