Skocz do zawartości

Co wybrać dla ESP32 - Arduino, czy IDF


Elvis

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.

Link do komentarza
Share on other sites

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...

Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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()? 

Link do komentarza
Share on other sites

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...

Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

 

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
Link do komentarza
Share on other sites

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😉

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.