- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 35

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

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    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 ?

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    41
    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.

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

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    41
    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.

  5. #5
    HaWe
    Gast
    sei doch bitte so nett und schreib das mal komplett als thread, nicht dass ich es falsch versteh und dann nur Mist raus
    kommt.

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    41
    Beiträge
    3.416
    Code:
    void counter_loop() {
        static thread_local uint32_t counter = 0;
        thread_local uint64_t vorher1, nachher1;
        while(true) {
            Serial.print("counter_loop: ");
            Serial.println(counter);
            vorher1 = millis();
            std::this_thread::sleep_for(one_sec);
            nachher1 = millis();
            println("Sleep1:");
            println(vorher1);
            println(nachher1);
            println(millis());
        }
    }
    
    void blinker_loop() {
        static thread_local uint32_t counter = 0;
        thread_local uint64_t vorher2, nachher2, vorher3, nachher3;
        while(true) {
            digitalWrite(LED_BUILTIN, HIGH);
            Serial.print("blinker_loop (HIGH) counter: ");
            Serial.println(counter);
            vorher2 = millis();
            std::this_thread::sleep_for(one_sec);
            nachher2 = millis();
            println("Sleep2:");
            println(vorher2);
            println(nachher2);
            println(millis());
            
            digitalWrite(LED_BUILTIN, LOW);
            Serial.print("blinker_loop (LOW) counter: ");
            Serial.println(counter);
            vorher3 = millis();
            std::this_thread::sleep_for(one_sec);
            nachher3 = millis();
            println("Sleep3:");
            println(vorher3);
            println(nachher3);
            println(millis());
        }
    }
    ich habe mal noch explizit die Variablen getrennt um irgendwelche Phänomene auszuschließen
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  7. #7
    HaWe
    Gast
    ah, ok....!
    Man merkt: kein Arduinorianer...

    print geht nicht, nur Serial.print,
    und Serial.print geht nicht mit uint64_t

    habe es geändert, das Ergebnis sieht aber ziemlich wirr aus...:

    Code:
    // std::thread for ESP32, Arduino IDE
    
    // https://www.roboternetz.de/community/threads/73446-std-thread-f%C3%BCr-ESP32-unter-Arduino-IDE-zum-Laufen-zu-kriegen?p=652309&viewfull=1#post652309  
    
    // https://github.com/espressif/arduino-esp32/issues/2814#issuecomment-495525603  
    
    
    #include <Arduino.h>
    #include <thread>
    #include <chrono>
    
    #ifndef LED_BUILTIN
    #define LED_BUILTIN 13
    #endif
    
    const auto one_sec = std::chrono::seconds
    {
        1
    };
    
    void counter_loop() {
        static thread_local uint32_t counter = 0;
        thread_local uint32_t vorher1, nachher1;
        while(true) {
            Serial.print("counter_loop: ");
            Serial.println(counter);
            vorher1 = millis();
            std::this_thread::sleep_for(one_sec);
            nachher1 = millis();
            Serial.println("Sleep1:");
            Serial.println(vorher1);
            Serial.println(nachher1);
            Serial.println(millis());
        }
    }
    
    void blinker_loop() {
        static thread_local uint32_t counter = 0;
        thread_local uint32_t vorher2, nachher2, vorher3, nachher3;
        while(true) {
            digitalWrite(LED_BUILTIN, HIGH);
            Serial.print("blinker_loop (HIGH) counter: ");
            Serial.println(counter);
            vorher2 = millis();
            std::this_thread::sleep_for(one_sec);
            nachher2 = millis();
            Serial.println("Sleep2:");
            Serial.println(vorher2);
            Serial.println(nachher2);
            Serial.println(millis());
            
            digitalWrite(LED_BUILTIN, LOW);
            Serial.print("blinker_loop (LOW) counter: ");
            Serial.println(counter);
            vorher3 = millis();
            std::this_thread::sleep_for(one_sec);
            nachher3 = millis();
            Serial.println("Sleep3:");
            Serial.println(vorher3);
            Serial.println(nachher3);
            Serial.println(millis());
        }
    }
    
    
    
    
    std::thread counter_loop_thread(counter_loop);
    std::thread blinker_loop_thread(blinker_loop);
        
    void setup() {
        Serial.begin(115200);
        pinMode(LED_BUILTIN, OUTPUT);
        
    }
    
    uint32_t main_loop_counter = 0;
    void loop() {
        main_loop_counter++;
        Serial.print("main loop: ");
        Serial.println(main_loop_counter);
        delay(10000);
    }
    Code:
    main loop: 1
    Sleep1:
    1
    1001
    1001
    counter_loop: 0
    Sleep2:
    1
    1001
    1001
    blinker_loop (LOW) counter: 0
    Sleep3:
    1001
    2001
    2001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    1001
    2001
    2001
    counter_loop: 0
    Sleep1:
    2001
    3001
    3001
    counter_loop: 0
    Sleep2:
    2001
    3001
    3001
    blinker_loop (LOW) counter: 0
    Sleep3:
    3001
    4001
    4001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    3001
    4001
    4001
    counter_loop: 0
    Sleep1:
    4001
    5001
    5001
    counter_loop: 0
    Sleep2:
    4001
    5001
    5001
    blinker_loop (LOW) counter: 0
    Sleep3:
    5001
    6001
    6001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    5001
    6001
    6001
    counter_loop: 0
    Sleep1:
    6001
    7001
    7001
    counter_loop: 0
    Sleep2:
    6001
    7001
    7001
    blinker_loop (LOW) counter: 0
    Sleep3:
    7001
    8001
    8001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    7001
    8001
    8001
    counter_loop: 0
    Sleep1:
    8001
    9001
    9001
    counter_loop: 0
    Sleep2:
    8001
    9001
    9001
    blinker_loop (LOW) counter: 0
    Sleep3:
    9001
    10001
    10001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    9001
    10001
    10001
    counter_loop: 0
    main loop: 2
    Sleep1:
    10001
    11001
    11001
    counter_loop: 0
    Sleep2:
    10001
    11001
    11001
    blinker_loop (LOW) counter: 0
    Sleep3:
    11001
    12001
    12001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    11001
    12001
    12001
    counter_loop: 0
    Sleep1:
    12001
    13001
    13001
    counter_loop: 0
    Sleep2:
    12001
    13001
    13001
    blinker_loop (LOW) counter: 0
    Sleep3:
    13001
    14001
    14001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    13001
    14001
    14001
    counter_loop: 0
    Sleep1:
    14001
    15001
    15001
    counter_loop: 0
    Sleep2:
    14001
    15001
    15001
    blinker_loop (LOW) counter: 0
    Sleep3:
    15001
    16001
    16001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    15001
    16001
    16001
    counter_loop: 0
    Sleep1:
    16001
    17001
    17001
    counter_loop: 0
    Sleep2:
    16001
    17001
    17001
    blinker_loop (LOW) counter: 0
    Sleep3:
    17001
    18001
    18001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    17001
    18001
    18001
    counter_loop: 0
    Sleep1:
    18001
    19001
    19001
    counter_loop: 0
    Sleep2:
    18001
    19001
    19001
    blinker_loop (LOW) counter: 0
    Sleep3:
    19001
    20001
    20001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    19001
    20001
    20001
    counter_loop: 0
    main loop: 3
    Sleep1:
    20001
    21001
    21001
    counter_loop: 0
    Sleep2:
    20001
    21001
    21001
    blinker_loop (LOW) counter: 0
    Sleep3:
    21001
    22001
    22001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    21001
    22001
    22001
    counter_loop: 0
    Sleep1:
    22001
    23001
    23001
    counter_loop: 0
    Sleep2:
    22001
    23001
    23001
    blinker_loop (LOW) counter: 0
    Sleep3:
    23001
    24001
    24001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    23001
    24001
    24001
    counter_loop: 0
    Sleep1:
    24001
    25001
    25001
    counter_loop: 0
    Sleep2:
    24001
    25001
    25001
    blinker_loop (LOW) counter: 0
    Sleep3:
    25001
    26001
    26001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    25001
    26001
    26001
    counter_loop: 0
    Sleep1:
    26001
    27001
    27001
    counter_loop: 0
    Sleep2:
    26001
    27001
    27001
    blinker_loop (LOW) counter: 0
    Sleep3:
    27001
    28001
    28001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    27001
    28001
    28001
    counter_loop: 0
    Sleep1:
    28001
    29001
    29001
    counter_loop: 0
    Sleep2:
    28001
    29001
    29001
    blinker_loop (LOW) counter: 0
    Sleep3:
    29001
    30001
    30001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    29001
    30001
    30001
    counter_loop: 0
    main loop: 4
    Sleep1:
    30001
    31001
    31001
    counter_loop: 0
    Sleep2:
    30001
    31001
    31001
    blinker_loop (LOW) counter: 0
    Sleep3:
    31001
    32001
    32001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    31001
    32001
    32001
    counter_loop: 0
    Sleep1:
    32001
    33001
    33001
    counter_loop: 0
    Sleep2:
    32001
    33001
    33001
    blinker_loop (LOW) counter: 0
    Sleep3:
    33001
    34001
    34001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    33001
    34001
    34001
    counter_loop: 0
    Sleep1:
    34001
    35001
    35001
    counter_loop: 0
    Sleep2:
    34001
    35001
    35001
    blinker_loop (LOW) counter: 0
    Sleep3:
    35001
    36001
    36001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    35001
    36001
    36001
    counter_loop: 0
    Sleep1:
    36001
    37001
    37001
    counter_loop: 0
    Sleep2:
    36001
    37001
    37001
    blinker_loop (LOW) counter: 0
    Sleep3:
    37001
    38001
    38001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    37001
    38001
    38001
    counter_loop: 0
    Sleep1:
    38001
    39001
    39001
    counter_loop: 0
    Sleep2:
    38001
    39001
    39001
    blinker_loop (LOW) counter: 0
    Sleep3:
    39001
    40001
    40001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    39001
    40001
    40001
    counter_loop: 0
    main loop: 5
    Sleep1:
    40001
    41001
    41001
    counter_loop: 0
    Sleep2:
    40001
    41001
    41001
    blinker_loop (LOW) counter: 0
    Sleep3:
    41001
    42001
    42001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    41001
    42001
    42001
    counter_loop: 0
    Sleep1:
    42001
    43001
    43001
    counter_loop: 0
    Sleep2:
    42001
    43001
    43001
    blinker_loop (LOW) counter: 0
    Sleep3:
    43001
    44001
    44001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    43001
    44001
    44001
    counter_loop: 0
    Sleep1:
    44001
    45001
    45001
    counter_loop: 0
    Sleep2:
    44001
    45001
    45001
    blinker_loop (LOW) counter: 0
    Sleep3:
    45001
    46001
    46001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    45001
    46001
    46001
    counter_loop: 0
    Sleep1:
    46001
    47001
    47001
    counter_loop: 0
    Sleep2:
    46001
    47001
    47001
    blinker_loop (LOW) counter: 0
    Sleep3:
    47001
    48001
    48001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    47001
    48001
    48001
    counter_loop: 0
    Sleep1:
    48001
    49001
    49001
    counter_loop: 0
    Sleep2:
    48001
    49001
    49001
    blinker_loop (LOW) counter: 0
    Sleep3:
    49001
    50001
    50001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    49001
    50001
    50001
    counter_loop: 0
    main loop: 6
    Sleep1:
    50001
    51001
    51001
    counter_loop: 0
    Sleep2:
    50001
    51001
    51001
    blinker_loop (LOW) counter: 0
    Sleep3:
    51001
    52001
    52001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    51001
    52001
    52001
    counter_loop: 0
    Sleep1:
    52001
    53001
    53001
    counter_loop: 0
    Sleep2:
    52001
    53001
    53001
    blinker_loop (LOW) counter: 0
    Sleep3:
    53001
    54001
    54001
    blinker_loop (HIGH) counter: 0
    Sleep1:
    53001
    54001
    54001
    counter_loop: 0
    - - - Aktualisiert - - -

    lad dir doch mal ne "portable" Arduino IDE herunter...
    Geändert von HaWe (24.05.2019 um 17:18 Uhr)

Ähnliche Themen

  1. Esp32 a2dp in arduino IDE
    Von Flos6323 im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 27.06.2018, 16: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, 08: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, 17:29
  4. Display für esp32?
    Von NotEvil im Forum NodeMCU-Board und ESP8266, ESP32-Serie
    Antworten: 7
    Letzter Beitrag: 04.12.2016, 17:37
  5. Kugelgelenke - woher kriegen?
    Von Gottfreak im Forum Mechanik
    Antworten: 15
    Letzter Beitrag: 04.01.2005, 18:56

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress