مثلا شمارش مقدار و اجرای برنامه ی روشن کردن چراغ همزمان
در واقع منظورم چند نخی یا multi-thread-programming هست.
لطفا آردوینو های پشتیبانی کننده رو هم ذکر کنید.
با تشکر
مثلا شمارش مقدار و اجرای برنامه ی روشن کردن چراغ همزمان
در واقع منظورم چند نخی یا multi-thread-programming هست.
لطفا آردوینو های پشتیبانی کننده رو هم ذکر کنید.
با تشکر
ویرایش توسط nimaxxx : 05-09-2016 در ساعت 08:40 PM
موضوع خیلی جالبی بود
برداشت من از سرچی که الان انجام دادم :
از اونجایی که آردوینو تک هسته س و در هر لحظه فقط یه برنامه رو میتونه پردازش کنه multitasking و multithreading امکان پذیر نیست
اما protothreading که چند کار رو به قطعات ریز تقسیم میکنه و در بازه های کوتاه و تقریبا همزمان انجامشون میده رو میشه انجام داد
من هم منتظر توضیحات بقیه دوستان هستم
تفاوت بین multi-programming , multi-tasking , multi-processing و multi-threading
https://gabrieletolomei.wordpress.co...ultithreading/
البته روایت های مختلف در مورد multi-threading زیاد بود!
و اینگه یکی در مورد تفاوت multi-tasking و multi-threading توضیح بده لطفا!
برای من هم جالب بود
متاسفانه این عدم توانایی به AVR بر می گرده که نمیتونه چند تا LOOP رو با هم انجام بده
ولی خب تا جایی که من خوندم میشه یه جورایی این کار رو کرد که مطمئن هستم خودتون هم میدونید و اون استفاده از اینتراپته .
Multithreading (Parallel loops) on an Arduino
اما یه چیز جالب وجود داره به نام Plumbing
http://blog.generaleccentric.net/?p=836
یه چیزی شبیه پارالل پروگرامینگه ولی برای میکروها
یک تکنیک برنامه نویسی هست به نام RTOS مثلا یک میکروکنترلر 3 تا تایمر داره
شما باید به نحوی وقفه این تایمر ها رو تنظیم کنید که با سرعت بالایی خواسته شما رو انجام بدن در وقفه تایمر
ضمن اینکه وقفه های تایمر برای خود CPU ارجحیت بندی شده.
هنگامی که وقفه تایمری رخ داد و شما محاسباتتون انجام دادید باید در نظر بگیرید که متغیر مقدار خودشو از دست نده و وقفه وارد LOOP نشه ...
در واقع چون CPU AVR تک هسته هست و بر مبنای ترتیبی کار میکنه ، هرگز نمیشه همزمان برنامه هایی رو اجرا کرد اما با شیوه هایی میشه اختلاف همزمانی اجرا رو کاهش داد.(کارهای سبک)
اما!
ARM های سری کرتکس مثلا LPC1768 Cortex-M3 این میتونید تا 4 تا برنامه هم زمان اجرا کنید ! CPU مثلا 120 MHZ هست. میتونید 4 تا برنامه با کلاک 120 مگاهرتز هم زمان اجرا کنید
FPGA هم که کلا REAL TIME هست برای اجرای هم زمان هیچ محدودیتی نداره..مثلا 256 تا همزمان میتونه کار انجام بده که اغلب برای کارای گرافیکی ازش استفاده میشه.یعنی میان ترتیبیش میکنن !
پیرو RTOS لینکهای زیر ببینید:
بوت های تحت RTOS
RTuinOS: A Real Time Operating System (RTOS) for Arduino 1.0.1
A tiny RTOS for Arduino AVR boards
FreeRTOS 8.2.3 Arduino Libraries
ویرایش توسط shobeir90 : 05-10-2016 در ساعت 09:43 AM
تابع millis مگه برای این نیست که 50 روز رو میشماره بعد مجددا صفر میشه ؟
چطور با STACK وقفه مطابقت داره ؟
البته دنبال جواب سوالمم میگردم همچنان !
----------------------------------------------------------------------------------------------
رفرنس
پیرو مطلب دوست عزیز ، درباره پلومبینگ یا لوله کشی:
با سختی و مشقت فراوان تونستم کد برنامه موازی برای چشمک زدن هم زمان دو ال ای دی بنویسم. البته کاری بسیار طاقت فرسا و همراه ریسک!
اول برنامه jedit رو نصب کردم بعد فریمور آردوینو رو با این برنامه آپدیت کردم و در آخر هم کد مربوطه رو آپلود کردم! البته ناگفته نمانه که کد نوشته شده بوسیله ی زبان occcam-pi هست و متاسفانه زبان بسیار قدیمی و متفاوت با سی هستش که اگه قرار بر یاد گیری اون باشه باید زمان زیادی صرف بشه و اگه بگیم زمان برابر پول باشه اونوقت خرید دو سه تا آردوینو معقول تر به نظر میرسه!
اینکه دو تا cpu همزمان کار کنن ؛ کاربردش مثلا در ساخت ترانزیستور های متمم هست.مثلاbd139 و bd140 در شرایط کاملا یکسان همزمان در یک لحظه ... یا ساخت آی سی های خاص ...
البته کاربردهای دیگه هم هست ...
ولی باید اول ارزش هدف رو سنجید ...