نمایش نتایج: از 1 به 10 از 10
Like Tree15 لایک
  • 1 Post By nimaxxx
  • 2 Post By siib
  • 1 Post By siib
  • 3 Post By magmagmary
  • 1 Post By siib
  • 2 Post By shobeir90
  • 1 Post By magmagmary
  • 1 Post By shobeir90
  • 1 Post By nimaxxx
  • 2 Post By shobeir90

موضوع: آیا آردوینو قابلیت اجرا چند برنامه به صورت همزمان رو داره؟

  1. #1
    Member
    تاریخ عضویت
    Feb 2015
    نوشته ها
    34

    آیا آردوینو قابلیت اجرا چند برنامه به صورت همزمان رو داره؟

    مثلا شمارش مقدار و اجرای برنامه ی روشن کردن چراغ همزمان
    در واقع منظورم چند نخی یا multi-thread-programming هست.
    لطفا آردوینو های پشتیبانی کننده رو هم ذکر کنید.
    با تشکر
    ویرایش توسط nimaxxx : 05-09-2016 در ساعت 08:40 PM
    لایک کردن

  2. #2
    Senior Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    229
    نقل قول نوشته اصلی توسط nimaxxx نمایش پست ها
    مثلا شمارش مقدار و اجرای برنامه ی روشن کردن چراغ همزمان
    در واقع منظورم چند نخی یا multi-thread-programming هست.
    لطفا آردوینو های پشتیبانی کننده رو هم ذکر کنید.
    با تشکر
    موضوع خیلی جالبی بود
    برداشت من از سرچی که الان انجام دادم :
    از اونجایی که آردوینو تک هسته س و در هر لحظه فقط یه برنامه رو میتونه پردازش کنه multitasking و multithreading امکان پذیر نیست
    اما protothreading که چند کار رو به قطعات ریز تقسیم میکنه و در بازه های کوتاه و تقریبا همزمان انجامشون میده رو میشه انجام داد
    من هم منتظر توضیحات بقیه دوستان هستم

  3. #3
    Senior Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    229
    تفاوت بین multi-programming , multi-tasking , multi-processing و multi-threading
    https://gabrieletolomei.wordpress.co...ultithreading/
    البته روایت های مختلف در مورد multi-threading زیاد بود!
    و اینگه یکی در مورد تفاوت multi-tasking و multi-threading توضیح بده لطفا!
    لایک کردن

  4. #4
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط nimaxxx نمایش پست ها
    مثلا شمارش مقدار و اجرای برنامه ی روشن کردن چراغ همزمان
    در واقع منظورم چند نخی یا multi-thread-programming هست.
    لطفا آردوینو های پشتیبانی کننده رو هم ذکر کنید.
    با تشکر

    برای من هم جالب بود
    متاسفانه این عدم توانایی به AVR بر می گرده که نمیتونه چند تا LOOP رو با هم انجام بده
    ولی خب تا جایی که من خوندم میشه یه جورایی این کار رو کرد که مطمئن هستم خودتون هم میدونید و اون استفاده از اینتراپته .
    Multithreading (Parallel loops) on an Arduino



    اما یه چیز جالب وجود داره به نام Plumbing
    http://blog.generaleccentric.net/?p=836
    یه چیزی شبیه پارالل پروگرامینگه ولی برای میکروها

  5. #5
    Senior Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    229
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    برای من هم جالب بود
    متاسفانه این عدم توانایی به AVR بر می گرده که نمیتونه چند تا LOOP رو با هم انجام بده
    ولی خب تا جایی که من خوندم میشه یه جورایی این کار رو کرد که مطمئن هستم خودتون هم میدونید و اون استفاده از اینتراپته .
    Multithreading (Parallel loops) on an Arduino



    اما یه چیز جالب وجود داره به نام Plumbing
    http://blog.generaleccentric.net/?p=836
    یه چیزی شبیه پارالل پروگرامینگه ولی برای میکروها
    اگه یه حلقه تکرار داشته باشیم که محاسبات ریاضی داره و مثلا 5 ثانیه طول بکشه تا این محاسبات انجام بشه ، اما بعد از گذشت 2.5 ثانیه وقفه ایجاد بشه و پروسسور مجبور شه بره سراغ قسمت دیگه ای ؛ بعد از انجام اون قسمت و برگشت به حلقه تکرار محاسبات باید از سر گرفته بشن؟!
    لایک کردن

  6. #6
    مدیر ویژه
    تاریخ عضویت
    Mar 2014
    نوشته ها
    586
    یک تکنیک برنامه نویسی هست به نام 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

  7. #7
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط siib نمایش پست ها
    اگه یه حلقه تکرار داشته باشیم که محاسبات ریاضی داره و مثلا 5 ثانیه طول بکشه تا این محاسبات انجام بشه ، اما بعد از گذشت 2.5 ثانیه وقفه ایجاد بشه و پروسسور مجبور شه بره سراغ قسمت دیگه ای ؛ بعد از انجام اون قسمت و برگشت به حلقه تکرار محاسبات باید از سر گرفته بشن؟!

    اگه با تابع millis نوشته شده باشه
    بله
    لایک کردن

  8. #8
    مدیر ویژه
    تاریخ عضویت
    Mar 2014
    نوشته ها
    586
    تابع millis مگه برای این نیست که 50 روز رو میشماره بعد مجددا صفر میشه ؟
    چطور با STACK وقفه مطابقت داره ؟
    البته دنبال جواب سوالمم میگردم همچنان !
    ----------------------------------------------------------------------------------------------
    رفرنس
    لایک کردن

  9. #9
    Member
    تاریخ عضویت
    Feb 2015
    نوشته ها
    34
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    ولی خب تا جایی که من خوندم میشه یه جورایی این کار رو کرد که مطمئن هستم خودتون هم میدونید و اون استفاده از

    اما یه چیز جالب وجود داره به نام plumbing
    http://blog.generaleccentric.net/?p=836
    یه چیزی شبیه پارالل پروگرامینگه ولی برای میکروها
    پیرو مطلب دوست عزیز ، درباره پلومبینگ یا لوله کشی:
    با سختی و مشقت فراوان تونستم کد برنامه موازی برای چشمک زدن هم زمان دو ال ای دی بنویسم. البته کاری بسیار طاقت فرسا و همراه ریسک!
    اول برنامه jedit رو نصب کردم بعد فریمور آردوینو رو با این برنامه آپدیت کردم و در آخر هم کد مربوطه رو آپلود کردم! البته ناگفته نمانه که کد نوشته شده بوسیله ی زبان occcam-pi هست و متاسفانه زبان بسیار قدیمی و متفاوت با سی هستش که اگه قرار بر یاد گیری اون باشه باید زمان زیادی صرف بشه و اگه بگیم زمان برابر پول باشه اونوقت خرید دو سه تا آردوینو معقول تر به نظر میرسه!
    لایک کردن

  10. #10
    مدیر ویژه
    تاریخ عضویت
    Mar 2014
    نوشته ها
    586
    اینکه دو تا cpu همزمان کار کنن ؛ کاربردش مثلا در ساخت ترانزیستور های متمم هست.مثلاbd139 و bd140 در شرایط کاملا یکسان همزمان در یک لحظه ... یا ساخت آی سی های خاص ...
    البته کاربردهای دیگه هم هست ...
    ولی باید اول ارزش هدف رو سنجید ...

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO