Skocz do zawartości

Co wybrać dla ESP32 - Arduino, czy IDF


Pomocna odpowiedź

Jak dla mnie to użycie IDF było najlepszą opcją. ESP32 ma sprzętowy moduł, który idealnie pasuje do sterowania ws2812b. Kod może nie idealny, bo dużo ramu marnuje, ale można napisać w moment, u mnie 300 diodek działa teraz bez problemu 🙂 A do bibliotek mam uraz i to coraz większy.

  • 2 lat(a) później...

Tez mam pewne pytanie, mianowicie...czy da sie uruchomic dwa rdzenie bez korzystania z freeRTOS w Arduino IDE? w takim sensie ze mam kod podzielony na dwa bloki no i wiadomo...jeden rdzen jeden blok i drugi rdzen analogicznie piszac to standardowo jak na Ardu...pytanie moze banalne, ale nie znalazlem odpowiedzi...

Możesz wyjaśnić dokładniej o co chodzi? Framework Arduino na ESP to nakładka na FreeRTOS i chąc nie chcąc z niego korzystasz. Jeśli dobrze zrozumiałem chcesz mieć coś w stylu dwóch niezależnych "loop" ale zanim zacznę coś wyjaśniać wolę się upewnić.

  • Lubię! 1

W programach dla esp32 tworzonych w Arduino IDE zawsze jest zawarty freeRtos, nawet jak użytkowmnik w sposób jawny z niego nie korzysta. Funkcje setup() czy loop() są uruchamiane jako zadania freeRTOS.

 

  • Pomogłeś! 1
Przed chwilą, ethanak napisał:

Jeśli dobrze zrozumiałem chcesz mieć coś w stylu dwóch niezależnych "loop" 

Dokladnie tak...

 

1 minutę temu, ethanak napisał:

Framework Arduino na ESP to nakładka na FreeRTOS i chąc nie chcąc z niego korzystasz.

Mam to rozumiec ze musze pisac kod jak pod freertos obowiazkowo? Czy dalej moge tradycyjnie jak kod dla Ardu z "wielozadaniowoscia" z millis()? 

3 minuty temu, jand napisał:

W programach dla esp32 tworzonych w Arduino IDE zawsze jest zawarty freeRtos, nawet jak użytkowmnik w sposób jawny z niego nie korzysta. Funkcje setup() czy loop() są uruchamiane jako zadania freeRTOS.

 

No to teraz kapuje...ale pytanie pozostaje w kwestii dwoch rdzeni...nie to zebym narzekal na freertos bo z opini jasno wynika ze meczarnia to jest wlasnie bez niego, ale jako ze jestem przyzwyczajony do zwyklych Arduinek to wiadomo ze na poczatek nie jest mi ten freertos potrzebny...

5 minut temu, farmaceuta napisał:

Czy dalej moge tradycyjnie jak kod dla Ardu z "wielozadaniowoscia" z millis()? 

To można zawsze.

Na pociechę mogę dodać, że drugi rdzeń też zwykle pracuje: na jednym aplikacja, na drugim zadania związane z utrzymywaniem połączenia wifi.

  • Pomogłeś! 1
(edytowany)
void core2Task(void *parametr)
{
  setup2();
  for (;;) {
    loop2();
    delay(0);
  }
}


void setup()
{
  // coś tam co robisz normalnie w setupie
  xTaskCreatePinnedToCore(
                    core2Task,  /* Funkcja obsługi tasku */
                    "Task2", 	/* Nazwa tasku */
                    10000,      /* Wielkość stosu w słowach */
                    NULL,       /* Parametr dla funkcji core2Task */
                    0,          /* Priorytet */
                    NULL,       /* Task handle - na razie nie musisz się martwić */
                    0);  		/* Numer rdzenia */
}

Możesz pisać dokładnie tak jak jesteś przyzwyczajony (z jedną uwagą, że nie możesz za długo blokować procesora bez wyskoczenia z loop lub wywołania delay/yield bo watchdog zrobi reset).Co do dwóch loopów - coś w stylu jak wyżej.

Oczywiście setup() i loop2() to już sobie napiszesz

Aha, główny setup/loop odpala się na rdzeniu numer 1. Proponuję wypróbować odpalenie dwóch tasków na jednym rdzeniu.

No i pozostaje pytanie - dlaczego jadąc motocyklem odpychasz się nogami zamiast włączyć silnik? Rozumiem, że początki., że przyzwyczajony (no tak, paręnaście lat w Arduino IDE siedzisz i ciężko się przestawić, ale lepiej zacząć od razu, szczególnie że to mniej boli niż używanie millis() do czegoś innego niż mierzenie czasu.

 

 

 

Edytowano przez ethanak
  • Pomogłeś! 1

No dobra, powiedzmy że znam takich (na tym forum nawet) co nie lubią mutexów (choć podobno umieją z nich korzystać)...

No ale oprócz biegów i takich tam to jednak człowiek się mniej męczy jak włączy silnik.

(Kawału o syberyjskich drwalach i Husqvarnie poszukajcie sobie w sieci sami)

  • Lubię! 1

 

13 minut temu, ethanak napisał:

człowiek się mniej męczy jak włączy silnik

Jak jest zawodowym kierowcą, to pewnie każde ułatwienie jest ważne.

A jak jedzie z narzeczoną na pinik za miasto, to chyba niekoniecznie.🤨

  • Lubię! 1
24 minuty temu, jand napisał:

A ja rozumiem @farmaceuta.

Uruchomienie zadania to pikuś, a potem zaczynają się: kolejki, mutex'y, semafory - a przy millis() to wszystko jest pod osobistym nadzorem  😜.

Dokladnie tak...😉 o ile jakies proste rzeczy idzie latwo zrobic spogladajac na przyklady, to jakies takie np. analogiczne if'y z millis w if'ach z millis juz ciezej mi sobie wyobrazic, odpalanie "podprogramow" etc...no nic konkretnego a jednak juz sie czlowiek drapie po glowie, gdzie tradycyjnie piszac nie ma sie co drapac..wystarczy napisac..😉

 

53 minuty temu, ethanak napisał:

Aha, główny setup/loop odpala się na rdzeniu numer 1

Tak tak, to juz doczytalem...a wifi chodzi na 0..

 

54 minuty temu, ethanak napisał:

dlaczego jadąc motocyklem odpychasz się nogami zamiast włączyć silnik? 

Napewno zdarzylo Ci sie jezdzic w zyciu komarkami i wsk'ami...nie daj Boze "wiatrem" zakupionym od malolatow z zaplonem "klockowym"...tu niestety nie raz bez uzycia nog nie dalo rady jechac...😂 (choc akurat  komary i wski po moich remontach chodzily u mnie jak zloto..😉)

 

1 godzinę temu, ethanak napisał:

 Rozumiem, że początki., że przyzwyczajony

Otoz to...choc to nie jedyny powod...wiadomo ze jak ktos siedzi w temacie 10-20 lat to mu duzo szybciej do glowy wchodzi bo to w sumie tylko kwestia zapamietania funkcjonalnosci, ktore z reguly czlowiek z takim stazem rozumie bez zajakniecia po jednorazowej lekturze...a ja to taki "malutki" jestem puki co i trzeba powoli, ale oczywiscie wezme sie za ten temat bo troche juz czytalem o rtos i szczerze? Nieznalazlem jednej negatywnej opinii..tylko pozytywy a to o czyms swiadczy😉

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...