- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 35

Thema: std::thread für ESP32 unter Arduino IDE zum Laufen zu kriegen...?

  1. #11
    HaWe
    Gast
    Anzeige

    Praxistest und DIY Projekte
    ist immer noch der von #7 !

    - - - Aktualisiert - - -

    gerade getestet:
    thread_local uint32_t counter = 0;
    macht hier auch keinen Unterschied

  2. #12
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    ja ... sorry ... hab ich nicht gesehen

    interessante ausgabe, gebe ich zu ... es wäre mal interessant zu erfahren wie der zeitliche ablauf bei der ausgabe aussieht! ich vermute hier das problem!

    benutze mal irgend einen timer mit einer auflösung im wenigstens 100tel Sekunden bereich und speichere vor und nach jedem sleep jeweils einmal die zeit und gib die zeiten plus die aktuelle zeit auch als print aus

    also quasi print("Jetzt: %d Vorher: %d Nachher %d",timer.now(), beforesleep, aftersleep)

    so kann man erstmal prüfen ob der sleep vernünftig funktioniert und dann ob der print hier irgendwelche delays verursacht

    ich denke dass die ausgaben bei dir nicht chronologisch korrekt ausgegeben werden
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  3. #13
    HaWe
    Gast
    hmmm... könnte vlt...
    andererseits wird in den blinker_thread zwischen dem ON/OFF-Paar gar nicht inkrementiert, also egal, wann das ausgegeben wird, es müsste 1 ON/OFF-Paar IMO erwartungsgemäß IMMER mit demselben gemeinsamen counter-Wert erscheinen...
    ...oder?

  4. #14
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    nicht zwingend, deswegen meinte ich ja ich vermute hier eine sogenannte race condition, ich würde gerne ausschließen dass der print hier dazwischen funkt und daher wollte ich auch dass du in einer print funktion gleichzeitig variablen und einen funktionsaufruf nutzt um mal einen einblick auf den ablauf zu bekommen und das sleep gleichzeitg zu testen (zwei sleeps in einem thread können je nach architektur lustige effekte haben)

    und mit architektur meine ich das thread handling und den "sheduler"
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  5. #15
    HaWe
    Gast
    ok, aber ich verstehe deinen code-Vorschlag noch nicht exakt.

    Könntest du das bitte mal in den ino-Code genau hineinschreiben, fertig compilierbar?

  6. #16
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    sorry, da müsste ich erstmal selber was probieren, hab keinen plan wie man auf die schnelle bei arduino nen timer hinbastelt
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  7. #17
    HaWe
    Gast
    Zitat Zitat von Ceos Beitrag anzeigen
    sorry, da müsste ich erstmal selber was probieren, hab keinen plan wie man auf die schnelle bei arduino nen timer hinbastelt
    reicht dir millis()
    oder float secs = millis/1000.0 ?

  8. #18
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    völlig, nur irgend eine Zeitreferenz

    Code:
    uint64_t vorher, nachher;  //ich nehme einfach mal an dass millis uint64 ist
    vorher= millis();
    std::this_thread::sleep_for(one_sec);
    nachher = millis;
    
    Serial.println("sleep1:");
    Serial.println(vorher);
    Serial.println(nachher);
    Serial.println(millis);
    soll natürlich jeweils für jeden sleep dann sleep1 sleep2 und sleep3 heißen damit man weis welcher gerade ausgegeben wird

    meine Vermutung ist, dass zwischen vorher und nachher immer rund 1000 Differenz ist, aber der 3te Wert zwischen den Sleeps vorwärts und rückwärts springt

    oder, da wir neuen Code reinbringen, der counter plötzlich anfängt richtig zu zählen weil wir die racing condition brechen
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  9. #19
    HaWe
    Gast
    danke,
    und wie jetzt wo hin kopiert?

  10. #20
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    jeweils um die 3 Zeilen mit
    "std::this_thread::sleep_for(one_sec);"

    herum nur eben für jede ein anderes "sleep1" "sleep2" "sleep3"
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

Seite 2 von 4 ErsteErste 1234 LetzteLetzte

Ähnliche Themen

  1. Esp32 a2dp in arduino IDE
    Von Flos6323 im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 27.06.2018, 15:28
  2. Installation des Arduino Core für ESP32 ohne GIT
    Von mischaka im Forum NodeMCU-Board und ESP8266, ESP32-Serie
    Antworten: 0
    Letzter Beitrag: 26.04.2018, 07:20
  3. Arduino Cinque: RISC-V-Prozessor und ESP32 auf einem Board vereint
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 1
    Letzter Beitrag: 22.05.2017, 16:29
  4. Display für esp32?
    Von NotEvil im Forum NodeMCU-Board und ESP8266, ESP32-Serie
    Antworten: 7
    Letzter Beitrag: 04.12.2016, 16:37
  5. Kugelgelenke - woher kriegen?
    Von Gottfreak im Forum Mechanik
    Antworten: 15
    Letzter Beitrag: 04.01.2005, 17:56

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress