امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
انجام دسترات در background
نویسنده پیام
فروم باز آفلاین
در حال پیشرفت
***

ارسال‌ها: 480
موضوع‌ها: 122
تاریخ عضویت: دى ۱۳۸۷

تشکرها : 321
( 107 تشکر در 72 ارسال )
ارسال: #1
انجام دسترات در background
با سلام 

میخواستم بدونم میشه تو میکرو avr یه تابع تعریف کرد که همیشه اجرا بشه؟

یعنی تو بک گراند برنامه اجرا بشه ، همزمان با دستورات دیگه که دارن اجرا میشن؟

میشه همچین کاری با میکرو؟

--------------------
علی شیرمحمدی
--------------------
(آخرین ویرایش در این ارسال: ۰۷-دى-۱۳۹۴, ۲۰:۰۵:۱۹، توسط فروم باز.)
۰۷-دى-۱۳۹۴, ۲۰:۰۴:۵۴
ارسال‌ها
پاسخ
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #2
RE: انجام دسترات در background
سلام.

بله. می شه ، برای اجرای هر task بایستی زمانی مشخص تخصیص بدید. طبیعیه که میکرو در هر لحظه تنها یک کار رو می تونه انجام بده.
باید یه درک پایه ای از نحوه ی عملکرد سیستم عامل داشته باشید.

موفق باشید.

۰۷-دى-۱۳۹۴, ۲۱:۰۹:۳۱
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : فروم باز
فروم باز آفلاین
در حال پیشرفت
***

ارسال‌ها: 480
موضوع‌ها: 122
تاریخ عضویت: دى ۱۳۸۷

تشکرها : 321
( 107 تشکر در 72 ارسال )
ارسال: #3
RE: انجام دسترات در background
میشه یه کم توضیح بدید؟
چند تا رفرنس هم معرفی کنید ممنون میشم انگلیسی و فارسی فرقی نمیکنه البته فارسی باشه بهتره.

با تشکر.

--------------------
علی شیرمحمدی
--------------------
۰۸-دى-۱۳۹۴, ۱۲:۴۳:۲۳
ارسال‌ها
پاسخ
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #4
RE: انجام دسترات در background
چیز خاصی مد نظرم نیست، سرچ بزنید مطلب هست.
برای اینکه قدری به چالش کشیده بشید، یه برنامه بدون استفاده از delay بنویسید، ببینید چطور امکان پذیره ...!

۰۸-دى-۱۳۹۴, ۱۳:۳۲:۲۶
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : فروم باز
antegral00 آفلاین
تازه وارد

ارسال‌ها: 11
موضوع‌ها: 2
تاریخ عضویت: آبان ۱۳۹۴

تشکرها : 4
( 20 تشکر در 9 ارسال )
ارسال: #5
RE: انجام دسترات در background
اگه میخواین هم زمان با برنامه ی اصلی این برنامه اجرا شه به نظرم بهترین راه اینه که از تامیر استفاده کنید و بگید واسه هر بار سرریز بره و اون تابع یا  برنامه ی مد نظرتونو انجام بده  
من با کامپایلر بسکام کار میکنم یه نمونه ی کوچیک مینویسم  البته یه تیکه بزنامه اس نه  یه برنامه  ی کامل 
مثلا قبل  از تابع اصلی تایمرو اینجوری فعال میکنی 

کد php:
config timer0=timer,prescale=8
enable intrupts
enable timer0
enable ovf0
on ovf0 barname
start timer0
خب تا اینجا که تعریف تامیر میشه 
do 
تابه اصلی رو داخل این مینویسیم 
loop 

حالا برنامه ای که میخواین  در حین انجام برنامه  ی اصلی هم  زمان انجام  بشه رو اینجا مینویسیم من اسمشو گذاشتم barname 

کد php:
:barname
حالا اینجا برنامه ای که میخواین تکرار شه مینویسیم مثلا من نوشتم  یه پین رو خاموش روشن کنه 
 toggle portd.0

waitms 200

return 

کلمه ی return رو  حتما نباید فراموش کنید چون ارور میده  در ضمن اینی که من نوشتم با نرم افزار بسکامه و یه زیر برنامه  اس نه برنامه ی اصلی 
(آخرین ویرایش در این ارسال: ۰۹-دى-۱۳۹۴, ۱۹:۳۴:۰۴، توسط sharin.)
۰۹-دى-۱۳۹۴, ۱۸:۳۳:۴۶
ارسال‌ها
پاسخ
تشکر شده توسط : sharin, فروم باز
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #6
RE: انجام دسترات در background
@antegral00
برای گذاشتن کد می تونید از tag های code و یا php استفاده کنید که جلوه ی بهتری داشته باشه. ویرایشش کردم.

ایده ی مطرح شده برای شروع ، ایده ی خوبیه ...

۰۹-دى-۱۳۹۴, ۱۹:۳۷:۴۱
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : antegral00, فروم باز
saeedsmk آفلاین
مدیر بخش کرک و کامپیوتر
*****

ارسال‌ها: 506
موضوع‌ها: 74
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 677
( 1179 تشکر در 348 ارسال )
ارسال: #7
RE: انجام دسترات در background
سلام 
خوب هستيد اين توضيح را كه مي خواهم بدهم در واقع در مورد نحوه كار هر پردازشگره :
كلا چند قانون در مورد سيستم پردازشگر وجود داره ( سيستم تك هسته اي )
1- در يك زمان مشخص كه ما به آن كلاك يا پالس مي گويم فقط يك دستور در ان واحد انجام مي شود
2- حافظه اي وجود دارد كه اطلاعات هر پردازش درون ان ذخيره مي شود .
3- پالس بايد منظم باشد 
با يك مثال روش كار يك پروسسگر را ، شبيه سازي مي كنيم  
فرض كنيم مي خواهيم يك تصوير را با يك صفحه ماتريكس 10 در 10 سياه و سفيد نشان بديم براي اين كار صرف نظر از پروسه هاي قبلي براي خواندن تصوير و .... براي نمايش تصوير روي اين ماتريس چند روش وجود داره 
1- تمامي نقاط روشن و خاموش رو با هم روشن كنيم 
2- دانه دانه هر نقطه رو بر اساس روشن و خاموش بودن روشن و خاموش كنيم به ترتيب 
روش اول عملا براي تعداد نقطه زياد عملي نيست  چون حافظه زيادي مصرف مي شود . 
روش دوم عملي است اما داراي يك  مشكل است و ان هم اينكه تصوير تشكيل نمي شود.
روش دوم در عمل انجام مي شود براي اين كار سرعت را بايد زياد كنيم و از يك خاصيت چشم استفاده مي شود. اينكه تصوير اي كه ديده شود براي مدت كوتاهي باقي ميماند  اگر سرعت روشن و خاموش كردن براي كل صفحه نقاط ماتريكس كمتر از اين زمان باقي ماندن باشد ما تصوير رو كامل ميبينيم . به اين كار روبش گفته مي شود.

فرض كنيم دو عدد  پروسس داريم كه ميخواهيم با هم انجام شود . پروسس 1 و 2 داري چندين دستور هستند كه مجموع انها مي شود پروسس ما . اگر در ان واحد هر دفعه يك دستور از هر پروسس انجام بشه در سرعت پايين بنظر مي رسد كه پروسس جدا گانه انجام مي شود . ( قانون يك ) اگر سرعت انجام كار  بالا برود دقيقا مثل مثال بالا بنظر مي رسد كه همزمان دو پرسس انجام شده و مولتي تكس به وقوع مي پيوند. براي اين كار نياز به حافظه براي ذخيره جايي كه پروسس انجام شده وجود دارد ( قانون دوم ). براي سرعت بايد پالس ها منظم و يكنواخت باشند ( قانون سوم ) تا مولتي تكس يكنواخت انجام گيرد

اميدوارم كمك كنه

در دنياي كه مرگ شكارچي ان است بايد شكارچي بود - تعليمات دون خوان نوشته كارلوس كاستاندار
(آخرین ویرایش در این ارسال: ۰۹-دى-۱۳۹۴, ۲۳:۴۳:۰۴، توسط saeedsmk.)
۰۹-دى-۱۳۹۴, ۲۳:۳۷:۲۶
ارسال‌ها
پاسخ
تشکر شده توسط : sharin, فروم باز
antegral00 آفلاین
تازه وارد

ارسال‌ها: 11
موضوع‌ها: 2
تاریخ عضویت: آبان ۱۳۹۴

تشکرها : 4
( 20 تشکر در 9 ارسال )
ارسال: #8
RE: انجام دسترات در background
(۰۹-دى-۱۳۹۴, ۱۹:۳۷:۴۱)sharin نوشته است: @antegral00
برای گذاشتن کد می تونید از tag های code و یا php استفاده کنید که جلوه ی بهتری داشته باشه. ویرایشش کردم.

ایده ی مطرح شده برای شروع ، ایده ی خوبیه ...

سلام من  تازه عضو شدم خیلی اشنایی نداشتم  
اون که  نوشتم  فقط یه مثال بود واسه اینکه  بیشتر  متوجه شن 
تازه میشه توی برنامه ی سرریز میکرو یه متغییر تعریف کرد که مثلا  سر یه زمان خاصی اون تابع تکرار شه  مثلا اون تایمری که من تعریف کردم  تقریبا هر سر ریز  256 میکرو ثانیه طول میکشه حالا اگه یه متغییر تعریف کنیم که بگیم وقتی به 4000 رسید یعنی تقریبا یه ثانیه اون وقت بیا این این تابع رو انجام بده  اینجوری میتونیم بگیم سر یه زمان خاصی هم این کارو انجام بده 
کد php:
barname:
timer0=5
// این خط واسه اینه که  تقریبا یه ثانیه بشه 
i=i+1
if i=4000 then 
i
=0
toggle portd.0
end  if 
return 

۰۹-دى-۱۳۹۴, ۲۳:۵۱:۵۲
ارسال‌ها
پاسخ
تشکر شده توسط : sharin, فروم باز
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #9
RE: انجام دسترات در background
@antegral00
بهتر شد...
البته این روش برای تعیین سطح و اولویت پردازش مناسب هست.
درک شهودی پردازش همزمان رو جناب saeedsmk خیلی خوب رسوندن. یعنی اگر 10 تا task داشته باشیم که زمان لازم برای هر کدوم 200 ms باشه ، اگر task ها رو پشت سر هم بنویسیم، 10 task هر سری برای اجرای کامل 2 ثانیه زمان نیاز داره، و اینطوری task ها پشت سر هم هستند و احساس نمی شه که با هم در حال اجرا هستند، اما اگر 10ms ، 10ms از هر task رو پشت سر هم بذاریم، بعد از اینکه 20 بار این چرخه اتفاق افتاد اون 2 ثانیه سپری می شه و احساس می کنیم همه ی task ها با همدیگه اجرا شدن.
البته کار برنامه نویسیش قدری پیچیده می شه و معمولا دادن اولویت به اجرای پردازش ها در سطح میکروکنترلر برای انجام چندکار توسط میکرو به طور همزمان مناسب هست.( به سبکی که عموما کد می زنن، بدون استفاده از سیستم عامل منظورمه )

موفق باشید.

۱۰-دى-۱۳۹۴, ۰۰:۲۶:۵۵
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : saeedsmk, فروم باز


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  راهنمایی برای انجام پروژه تنظیم تایم موتور amir_s 3 3,115 ۲۳-مهر-۱۳۹۲, ۲۳:۲۸:۳۵
آخرین ارسال: omid_phoenix
  برنامه نویسی با خیال راحت ,که میکرو کارش رو درست انجام میده! EBKA 2 4,021 ۰۶-شهریور-۱۳۸۹, ۱۴:۰۹:۲۲
آخرین ارسال: maxn@morteza
  کمک برای انجام پروژه unique_v 3 2,914 ۲۶-اردیبهشت-۱۳۸۷, ۱۱:۲۴:۱۹
آخرین ارسال: 1nafar
  دستور writeeepromو readeeprom چه کاری انجام می دهد fmohamadi 2 2,745 ۲۲-اردیبهشت-۱۳۸۷, ۱۰:۵۹:۴۰
آخرین ارسال: 1nafar

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS