07-05-2020, 20:42
(07-05-2020, 19:57)kaczakat napisał(a): STM, STM32 i ESP32 to różne rodziny uC. Pewnie są jakieś STM dwurdzeniowe, ale ja się nimi średnio interesuję. Z ESP32 właśnie tak się robi i jest sporo przykładów jak to wykonać, tylko trzeba uważać, tak by rdzeń główny nie był obciążony w 100%. Poza tym każdy uC jest wielozadaniowy, natomiast w jednordzeniowym masz pewność, że jak masz w loop instrukcje jedna po drugiej, to zostaną zrobione w tej kolejności. Przy wielu rdzeniach ESP32 trzeba się zagłębić w RTOS jeśli operacje w rdzeniach są ze sobą powiązane.1. Co to znaczy że rdzeń będzie obciążony w 100%? Nie za bardzo to rozumiem bo gdy mikrokontroler kończy jakieś zadanie to po prostu zaczyna następne - więc praktycznie ciągle jest zajęty.
W sumie to ESP32 ma trzy rdzenie, trzeci to jakiś ultra low power działający na wybranych pinach i mający własny RAM, można go użyć do przechowania danych na czas uśpienia. ESP ma tą dziwną/ułomną właściwość, że by go wybudzić (z najoszczędniejszego trybu) trzeba go zresetować. AVR nawet po power down rusza z miejsca gdzie go uśpiono z całą zawartością programu.
2. A masz jakieś dobre przykłady multitaskingu w ESP32? Bo generalnie chciałbym z jednego rdzenia nadawać ciągły sygnał do wyświetlacza LCD (który tego wymaga) a na drugim wykonywać różnorakie czynności. Nie za bardzo wyobrażam sobie jak to zapisać, że te polecenia są dla rdzenia 0 a te dla 1 i jeszcze żeby wykonywało się to jednocześnie. Ja sobie to wyobrażałem tak, że są jakby 2 programy oddzielnie dla rdzeni, ale pewnie wygląda to trochę inaczej.