Skocz do zawartości

Wielozadaniowość - jak to zrealizować i wykorzystać


Pomocna odpowiedź

Napisano

Witam wszystkich.

Chciałbym napisać cykl artykułów na temat realizacji prostej wielozadaniowości w mikroprocesorze i wykorzystaniu tego w projektach. Chcę zacząć od kursu Arduino II pozycja 9, gdzie jest opisany bardzo prosty przykład takiego rozwiązania. Zamierzam rozbudować ten przykład o jednoczesną obsługę peryferiów procesora i komunikację (COM, I2C, SPI) celem połaczenia procka ze światem zewnętrznym (stacja robocza, inne procki w okolicy, moduły zewnętrzne we/wy). Na przykład na początek zmieniać częstotliwość migania diody i odczytywać stan przycisku ze stacji roboczej, a potem rozbudowywać projekt dalej, np w kierunku laboratorium pomiarowego. Nie mam zamiaru korzystać z bibliotek implementujących system operacyjny (np RTOS). Ma to działać na różnych rodzinach procesorów: ATMega (Arduino), STM32, ESP32, RP2040, CH32V00?.

Czy temat jest interesujący?

  • Lubię! 1

@Kogut007 Dla mnie bardzo interesujący, sam sobie łamałem głowę jak to zrobić. Wcale ten RTOS , nie jest taki dobry (według mojej opinii) dla Arduino. Jak masz dobry pomysł to pisz !

16 minut temu, Santiago napisał:

Wcale ten RTOS , nie jest taki dobry (według mojej opinii) dla Arduino.

FreeRTOS jest bardzo dobry, ale jednak potrzebuje sensownego scalaka (ESP32, STM32). Stare AVRy są za to dużo lepsze do zastosowań, gdzie ważna jest niezawodność i łatwość implementacji, bo większość zasilaczy USB jednak daje 5V, a nie 3.3V 😉 Chociaż CH32 mają pełną kompatybilność z logiką 5V.

Dodatkowo RTOSy wymagają trochę wiedzy z zakresu tego jak przekazywać dane między wątkami, by uniknąć "nieprzewidzianych" skutków ubocznych. Nie są takie proste jak programowanie czegoś na jednym wątku w Arduino 😉 

  • Lubię! 1
6 minut temu, Santiago napisał:

Tak na marginesie to kiedy wyprodukują ten sam układ na napięcie 3,3... 

Jaki układ? ATMega328 działa zarówno na 5V jak i 3.3V (jeżeli chodzi o sam układ) 😉 Jedyny mankament jest taki, że (o ile dobrze pamiętam) przy 3.3V nie da się wyciągnąć maksymalnego taktowania.

No tak, znowu zapomniałem ... 🙂 , z taktowaniem to maż rację bo o ile pamiętam chyba tylko 8, albo 4 (?) , ale też  chodzi o prądożerność itp. - ktoś tutaj kiedyś napisał, że po prostu im się to nie opłaca zejść o parę poziomów niżej. A szkoda bo proste i coś co w miarę rozumiem .

3 godziny temu, Santiago napisał:

@Kogut007 Dla mnie bardzo interesujący, sam sobie łamałem głowę jak to zrobić. Wcale ten RTOS , nie jest taki dobry (według mojej opinii) dla Arduino. Jak masz dobry pomysł to pisz !

Pomysł mam. Punkt startowy wskazałem. Pytanie, jak to napisać i dostarczyć do zainteresowanych? Bedzie to długie, wieloczęściowe, zawierające kody i wątki uboczne - np środowisko, podział zadań między sprzęt i oprogramowanie (np na ATmega można skonstruować odbiornik krótkofalowy SDR czy oscyloskop przebiegów okresowych do 2 MHZ - wiem - częstotliwość próbkowania atmegi to 60 kHz; STM32 są znacznie mocniejsze, ale oprogramowanie powinno być podobne).  RTOS to jest dla małych procesorów maszyna do zabijania much. Z dwoma rdzeniami też można sobie poradzić bez RTOS-a. Mastępnie mechanika - jak zmontować - montaż też ma wpływ na działanie. Koszty - ileto będzie kosztować, skąd wziąć materiały i przyrządy. Zatem forma:  Blog? Własna strona? inny sposób?  Czy może tylko coś stanowiące punkt startowy dla Was? Proszę o opinie.

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