برنامه نویسی ESP32 بدون RTOS

سلام وقت بخیر.
من با esp-idf و eclipse کار میکنم. قراره یک پایه وقتی تریگ داد بلافاصله یه عملیات اجرا بشه. چون عملیات ممکنه زمانبر باشه ، امکان اینکه توی روتین اینتراپت اجراش کنم نیست. پس باید توی main اجرا بشه. منتی به خاطر RTOS باید توی حلقه main یک تاخیر ۱۰ میلی ثانیه داشته باشیم. میشه این ۱۰ میلی ثانیه رو کمترش کرد ولی نمیشه حذفش کرد.
بنابراین با فرض همین ۱۰ میلی ثانیه ممکنه بین زمان رخدادن اینترا\ت و اجرای عملیات . ۱۰ میلی ثانیه اختلاف باشه که برای من خیلی زیاده.

راهکار چیه؟

سلام دوست عزیز، شما وقتی از RTOS استفاده میکنید، محدود هستید به systick timer که معمولا ۱۰ میلی ثانیه هست.
برای اینکه بتونید اینتراپت واقعی داشته باشید، یا از یک میکرو در کنار اون استفاده کنید که راه حل رایجی هست. به این صورت که میکروی دوم، یک میکروی بدون سیستم عامل معمولا ارزان قیمت هست که فقط کارش این هست که اینتراپت رو تشخیص بده و به esp32 خبر بده.
راه حل دوم کمی پیچیده تر هست و نیاز هست که معماری esp32 رو خیلی خوب بلد باشید و همینطور بتونید کمی اسمبلی هم کد بزنید. esp32 دو هسته هست. شما میتونید هسته ثانویه اون رو از RTOS جدا کنید و روی اون به عنوان یک هسته مجزا کد بزنید. در اینترنت اگر سرچ کنید، نمونه هایی پیدا میکنید از اینکار. ولی راه حل پیشرفته ای هست و ممکنه خیلی طول بکشه تا بتونید اجراش کنید.

1 پسندیده