• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
ESP32 Dual Core watchdogs
#7
Czytam i czytam o FreeRTOS ale to nie dla mnie Wink ja dopiero początkujący ledwo ogarniam arduino podstawy a gdzie zajmować się wielowątkowością.

Ze względu że chciałem tylko aby na Core1 był mniejszy  kod który pisze  szybszy i będę dopisywał wiec trochę przerzucić na Core0 bo po co się ma nudzić skoro jest no ale on mi fiksował bo na nim jest WDT jak i obsługa stosu Wifi  , nie wiem czy skojarzysz jak sie kiedyś pytałem o kolejność loop? (przepis itd.). Wiec wykorzystałem to że już tak pisałem (definicje funkcji)  i było podzielone wiec utworzyłem zadania ich wywołanie "xTaskCreatePinnedToCore"  jest możliwość przypisania tego "przepisu" gdzie ma sie wykonać i funkcja vTaskDelay() określam co ile ten przepis ma się wykonywać 

Ten void loop() to jest po staremu jak było bez FreeRTOS
Myślałem pierw o jednym zadaniu na Core0 (tak jak mam na Core1) i dać minimalny zakres vTaskDelay dla wszystkich ale niektóre nie potrzebują tak częstego powtarzania.

Jak myślisz sporo w tym błędów??
Jeszcze może wiesz czy lepiej zapis do UDP wykonywać na jednym rdzeniu czy może być na dwóch? bo mam obawy czy zapis do UDP z core0 nie zakłuć zapis do UDP core1 gdy czasowo się pokryją.

Ale jeszcze zmienię bo wyczytałem że vTaskDelayUntil jest dokładniejsze niż vTaskDelay

Kod:
 xTaskCreatePinnedToCore( WiFi_conect_Core_0, "CPU_0", 10000, NULL, 1, &CPU_0, 0);            
 xTaskCreatePinnedToCore( AC_data_Core_0, "CPU_0", 10000, NULL, 1, &CPU_0, 0);
 xTaskCreatePinnedToCore(
                   Core_1,   /* Task function. */
                   "CPU_1",     /* name of task. */
                   10000,       /* Stack size of task */
                   NULL,        /* parameter of the task */
                   1,           /* priority of the task */
                   &CPU_1,      /* Task handle to keep track of created task */
                   1);          /* pin task to core 1 */
}

void WiFi_conect_Core_0 ( void * pvParameters ){
 for(;;){
   WiFi_conect();
//    AC_data();
   vTaskDelay(1000);
 }
}

void AC_data_Core_0 ( void * pvParameters ){
 for(;;){
//    WiFi_conect();
   AC_data();
   vTaskDelay(50);
 }
}
void Core_1( void * pvParameters ){

   for(;;){
   recvWithEndMarker();         // loop odczytu z Serial2
   showNewData();               // loop zapisu serial2 do UDP
   showUdpData();               // loop odczytu udp i zapisu do Serial2
   AC_data_send();
   nexLoop(nex_listen_list);    // loop wyswietlacza Nextion
  }
 
}


void loop () {

//  WiFi_conect();
//  nexLoop(nex_listen_list);    // loop wyswietlacza Nextion
//  recvWithEndMarker();         // loop odczytu z Serial2
//  showNewData();               // loop zapisu serial2 do UDP
//  showUdpData();               // loop odczytu udp i zapisu do Serial2
//  AC_data();
//  AC_data_send();
}
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
  


Wiadomości w tym wątku
ESP32 Dual Core watchdogs - przez Jarewa0606 - 14-03-2019, 22:47
RE: ESP32 Dual Core watchdogs - przez kaczakat - 15-03-2019, 00:04
RE: ESP32 Dual Core watchdogs - przez Jarewa0606 - 15-03-2019, 14:55
RE: ESP32 Dual Core watchdogs - przez kaczakat - 15-03-2019, 15:16
RE: ESP32 Dual Core watchdogs - przez Jarewa0606 - 17-03-2019, 08:46
RE: ESP32 Dual Core watchdogs - przez kaczakat - 17-03-2019, 12:32
RE: ESP32 Dual Core watchdogs - przez Jarewa0606 - 17-03-2019, 21:01
RE: ESP32 Dual Core watchdogs - przez kaczakat - 17-03-2019, 23:37

Skocz do:


Przeglądający: 1 gości