امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
delay
نویسنده پیام
mzr آفلاین
كاربر تک ستاره
*

ارسال‌ها: 33
موضوع‌ها: 13
تاریخ عضویت: شهریور ۱۳۸۸

تشکرها : 7
( 8 تشکر در 5 ارسال )
ارسال: #1
Exclamation  delay
با سلام
چه جوری میشه در حالی که یکdelay در حال اجراست یک عمل دیگر انجام داد
تشکرConfused
۱۴-اردیبهشت-۱۳۹۰, ۰۱:۰۹:۴۴
ارسال‌ها
پاسخ
ayoobz آفلاین
كاربر تک ستاره
*

ارسال‌ها: 35
موضوع‌ها: 10
تاریخ عضویت: بهمن ۱۳۸۹

تشکرها : 17
( 53 تشکر در 24 ارسال )
ارسال: #2
RE: delay
دست يابي به يك زمان به دو صورت انجام ميشه:
1- با ايجاد تاخير در برنامه اصلي (دستورات تاخيري)
2- دست يابي به يك زمان خاص در كنار اجراي برنامه اصلي (تايمر)
فرايند اصلي ميكروكنترلرها رو ميشه پردازش و اجراي دستورات وارد شده توسط برنامه نويس تعريف كرد كه براي اون ميكروكنترلر تك تك دستورات وارد شده رو اجرا و پس از اجراي هر يك خط دستور به خط دستور بعدي ميره . به زبون ساده تر نميشه چند تا دستور رو با هم اجرا كنيد كه دستورات تاخيري مانند dealy,wait وغيره هم از اين جمله هستن.
ولي يه ميكروكنترلر از بخشهاي متفاوتي تشكيل شده كه اين بخشها ميتونن در كنار پردازنده اصلي به طور موازي كار كنن و اتمام كار خودشونو به صورت يك كردن پرچمشون نشون بدن ، با يك شدن اين پرچم ها يك وقفه اتفاق ميفته به اين صورت كه پردازنده اصلي اجراي دستور در حال اجرا را تمام كرده پس از اتمام دستور به خط بعدي نميره بلكه به ادرسي كه ما براي اين وقفه تعيين كرديم و دستورات اونو اجرا ميكنه پس از اتمام دستورات وقفه پردازنده اصلي به برنامه خودش برميگرده و از خط بعد از آخرين دستوري كه اجرا كرده شروع به انجام كار اصلي خودش ميكنه. اين بخشها كه به صورت موازي در كنار پردازنده اصلي كار ميكنن شامل تايمر كانتر، مبدل انالوگ به ديجيتال ، مقايسه كننده ها و .....در ميكرو هستن.
براي مثال برنامه ساعت رو در نظر بگير ما بايد زمان يك ثانيه ايجاد كرده پس از اون يك واحد به متغيير ثانيه اضافه كنيم و دقيقه و ساعت رو با اون تنظيم كنيمو بعد نمايش بديم اگر از دستور dealy استفاده كني كل عمليات به مدت يك ثانيه متوقف ميشه ولي اگر از تايمر استفاده كني برنامه اصلي تبدبل ميشه به نمايش ساعت رو lcd و تايمر در كنار اجراي عمليات نمايش زمان يك ثانيه را توليد ميكند كه پس از انجام كارش توليد وقفه كرده و در زير برنامه يك واحد به ثانيه اظافه و دقيقه و ساعت با اون تنظيم ميشن.
اگه با تايمرها بلدي كار كني كه هيچي ولي اگه بلد نيستي بگو با بسكام كار ميكني يا code vision تا برات توضيحات و نحوهي كار با تايمرها رو تو يه فايل برات بذارم . راستي با چه ميكرويي كار ميكني؟
۱۴-اردیبهشت-۱۳۹۰, ۱۴:۰۱:۰۸
ارسال‌ها
پاسخ
تشکر شده توسط : reza555, ha_60, رسول, saeidjan
mzr آفلاین
كاربر تک ستاره
*

ارسال‌ها: 33
موضوع‌ها: 13
تاریخ عضویت: شهریور ۱۳۸۸

تشکرها : 7
( 8 تشکر در 5 ارسال )
ارسال: #3
RE: delay
سلام دوست عزیز
من با avr16وcode visionکار میکنم راجع تایمرها اطلاع کافی ندارم لطفا راهنمایی کنید
تشکر

(آخرین ویرایش در این ارسال: ۱۵-اردیبهشت-۱۳۹۰, ۰۱:۰۰:۴۹، توسط mzr.)
۱۵-اردیبهشت-۱۳۹۰, ۰۰:۵۴:۰۵
ارسال‌ها
پاسخ
ayoobz آفلاین
كاربر تک ستاره
*

ارسال‌ها: 35
موضوع‌ها: 10
تاریخ عضویت: بهمن ۱۳۸۹

تشکرها : 17
( 53 تشکر در 24 ارسال )
ارسال: #4
RE: delay
تايمر/كانتر يكي از مهمترين بخشهاي جانبي ميكروكنترلرهاست.در بعضي مواقع لازم است كه تعداد وقايع خارجي شمارش شود.به عنوان نمونه ميتوان به شمارش تعداد قطعات يك خط توليد نام برد. و در بعضي از مواقعي ديگر لازم است در زماني خاص كاري انجام شود مانند روشن كردن يك موتور كه اين اعمال به ترتيب توسط تايمر و كانتر دروني ميكروكنترلر انجام مي شود.
به طور كلي تايمر/كانتر يك شمارنده است تشكيل شده از يك سري فيليپ فلاپ كه به صورت آسنكرون به هم متصل مي شوند و كار شمارش را انجام ميدهند.
تايمر
به طور مثال يك شمارنده 4بيتي را در نظر بگيريد اين شمارنده از0000 تا1111 شمارش ميكند حالا اگر كلاك پالس انرا به يك فركانس منظم دهيم در هر سيكل يك واحد به شمارنده اظافه ميشود. تا رسيدن به مقدار حداكثر يعني 1111 شمارنده ما 16 سيكل از اين فركانس را طي كرده كه با ضرب زمان تناوب هر سيكل در تعداد سيكل هاي طي شده زمان مورد نظر بدست مي ايد. فرض كنيد فركانس 2 هرتز باشد در اين فركانس زمان تناوب 500 ميلي ثانيه هست كه براي اين شمارنده 4 بيتي 500ميلي ثانيه را در 16 سيكل طي شده ضرب ميكنيم در نتيجه 8000 ميلي ثانيه يا به عبارتي 8 ثانيه طول ميكشد تا تايمر از مقدار حداقل به حداكثر برسد.
كانتر
حال همان شمارنده قبلي را به صورت كانتر(شمارشگر) شرح ميدهيم در اين حالت كلاك پالس ما يك فركانس منظم نيست بلكه بر اثر يك عمليات يك پالس يا همان يك سيكل به اين پايه اعمال ميشود و يك واحد به شمارنده اظافه ميشود.شما در هر زمان كه بخواهيد ميتوانيد كانتر را بخوانيد و به اين صورت اطلاع پيدا كنيد كه عمليات مورد نظر چند بار اتفاق افتاده به طور مثال يك خط توليد را در نظر بگيريد در خروجي خط توليد يك فرستنده گيرنده مادون قرمز قرار ميدهيم هنگامي كه محصول از روي ريل خروجي رد ميشود وسط گيرنده و فرستنده مادون قرمز قرار ميگيرد و خروجي گيرنده تغيير وضعيت ميدهد با تنظيم كردن كانتر در حالت هاي حساس به لبه پايين رونده يا بالا رونده در هر پالس يك واحد به كانتر اظافه ميشود.
نكته
نكته قابل ذكر اينجاست كه تايمر يا كانتر بعد از رسيدن به مقدار حداكثر خود بايد پر شدن خود را به اطلاع پردازنده اصلي برسانند اين اطلاع رساني توسط بيت پرچم انجام ميشود يعني همانطور كه قبلا گفتم اين بيت يك شده و يك وقفه ايجاد ميكند پس از ايجاد وقفه برنامه اصلي قطع و زير برنامه اجرا ميشود و پس از اتمام زير برنامه دوباره برنامه اصلي از سر گرفته ميشود. حال بحث اينجاست كه اين پرچم كجاست و چگونه يك ميشود .
در مثال بالا شمارنده 4بيتي بود ولي در اصل شمارنده ها در ميكروكنترلرها به دو گروه 8بيتي و 16 بيتي تقسيم ميشوند كه در سخت افزار اصولي بايد از 8 و 16 فليپ فلاپ يا همان بيت تشكيل شده باشند ولي در اصل 9 و17 بيت يا فليپ فلاپ است كهاين بيت اخري همان بيت پرچم يا سرريز است. دوباره باز ميگرديم به مثال 4بيتي خودمون اين شمارنده با موارد گفته شده بايد از 5بيت تشكيل شده باشه كه از 00000 تا 01111 را شمارش ميكند به محض رسيدن يك پالس ديگر شمارنده به 10000 تبديل ميشود اين بيت كه يك شده همان پرچم يا بيت سرريز هست كه پس از اجراي زير برنامه توسط ميكرو ريست ميشود يا خودتان ميتوانيد ان را صفر كنيد.

تو يه تاپيك ديگه برات فايل ورد در مورد راه اندازي و تنظيم تايمر /كانتر ها رو ميذارم براي ياد گيري بيشتر ميتوني از كتاب زير كمك بگيري.
كتاب مرجع كامل ميكروكنترلر هاي avr نوشته محمد مهدي پرتويي فر ، فرزاد مظاهريان و يوسف بيانلو قيمتش يك سال پيش 11000 تومن بود.
موفق باشيد.
(آخرین ویرایش در این ارسال: ۱۵-اردیبهشت-۱۳۹۰, ۱۵:۰۴:۰۸، توسط ayoobz.)
۱۵-اردیبهشت-۱۳۹۰, ۱۵:۰۲:۵۷
ارسال‌ها
پاسخ
تشکر شده توسط : reza555, رسول, saeidjan
mzr آفلاین
كاربر تک ستاره
*

ارسال‌ها: 33
موضوع‌ها: 13
تاریخ عضویت: شهریور ۱۳۸۸

تشکرها : 7
( 8 تشکر در 5 ارسال )
ارسال: #5
RE: delay
سلام
از توضیحاتتون ممنونم اما من نحوه به کار انداختن تایمرهارو احتیاج دارم
تشکر
۱۶-اردیبهشت-۱۳۹۰, ۰۱:۱۳:۰۸
ارسال‌ها
پاسخ
ayoobz آفلاین
كاربر تک ستاره
*

ارسال‌ها: 35
موضوع‌ها: 10
تاریخ عضویت: بهمن ۱۳۸۹

تشکرها : 17
( 53 تشکر در 24 ارسال )
ارسال: #6
RE: delay
سلام
يه جستجو تو اينترنت انجام دادم يه مقاله به زبون C پيدا كردم ادرس اونو زير نوشتم خودمم تازه دارم يه مقاله در مورد تايمر كانترها مينويسم تموم شد ميذارمش تو سايت
http://dlc.eca.ir/index.php?act=view&id=104
۱۶-اردیبهشت-۱۳۹۰, ۱۳:۴۷:۴۹
ارسال‌ها
پاسخ
تشکر شده توسط : رسول
ayoobz آفلاین
كاربر تک ستاره
*

ارسال‌ها: 35
موضوع‌ها: 10
تاریخ عضویت: بهمن ۱۳۸۹

تشکرها : 17
( 53 تشکر در 24 ارسال )
ارسال: #7
Shy  RE: delay
دوست عزيز سلام شرمنده كه دير شد . مشغله كاري بعلاوه خوندن درس براي كنكور كارشناسي باعث شد يه كم اين مقاله اي كه گفتم دير اماده بشه .تو اين مقاله تايمر صفر و دو رو معرفي كردم تايمراي يك وسه هم همينطوري هستن فقط به صورت شانزده بيتي . سعي كردم تموم مطالب لازمو برسونم ولي اگر مساله ي گنگ يا سوالي بود همينجا مطرح كن تا جواب بدم .
بحث تايمر ها خيلي بيشتر از اينه كه ميتوني از كتابي كه تو پست قبلي معرفي كردم استفاده كني ،كتاب خوبي هست.اگه تونستم تايمر يك وسه رو هم برات ميذارم .
موفق باشي


فایل‌(های) پیوست شده
.pdf   تايمر كانتر صفر.pdf (اندازه: 226.76 KB / تعداد دفعات دریافت: 125)
(آخرین ویرایش در این ارسال: ۲۰-اردیبهشت-۱۳۹۰, ۱۹:۳۶:۱۹، توسط ayoobz.)
۲۰-اردیبهشت-۱۳۹۰, ۱۹:۱۵:۳۷
ارسال‌ها
پاسخ
تشکر شده توسط : sheitunak, reza555, saeidjan
mzr آفلاین
كاربر تک ستاره
*

ارسال‌ها: 33
موضوع‌ها: 13
تاریخ عضویت: شهریور ۱۳۸۸

تشکرها : 7
( 8 تشکر در 5 ارسال )
ارسال: #8
RE: delay
سلام
دوست عزیز دست شما درد نکنه اما تمام این مقاله ها تئورین لطفا راه انداختن تایمر توی کدویژن وجواب گرفتن ازش رو توضیح بدید
ممنون
۲۳-اردیبهشت-۱۳۹۰, ۰۲:۱۶:۱۹
ارسال‌ها
پاسخ
ayoobz آفلاین
كاربر تک ستاره
*

ارسال‌ها: 35
موضوع‌ها: 10
تاریخ عضویت: بهمن ۱۳۸۹

تشکرها : 17
( 53 تشکر در 24 ارسال )
ارسال: #9
RE: delay
سلام چند مثال زير رو مطالعه كن اخر هر برنامه ميتوني اونو با نرم افزار Proteuse تست كني.
يه مجموعه سي دي اموزش كد وي‍ژن از شركت نرم افزاري سپاهان دارم كه داخلش فايل help نرم افزار كدويژن ترجمه شده به زبون فارسي بود خودم استفاده نكردم ولي اميدوارم به درد شما بخوره . اونو پيوستش كvدم.اول از حالت زيپ خارجش كنيدبعد اجراش كنيد.


فایل‌(های) پیوست شده
.pdf   مثال.pdf (اندازه: 81.72 KB / تعداد دفعات دریافت: 109)
(آخرین ویرایش در این ارسال: ۲۸-اردیبهشت-۱۳۹۰, ۲۱:۰۲:۴۶، توسط ayoobz.)
۲۸-اردیبهشت-۱۳۹۰, ۲۰:۳۴:۳۸
ارسال‌ها
پاسخ
تشکر شده توسط : reza555, mhpc2009, mahdi20, fanfare_999


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Exclamation تابع delay hosseinip 5 3,660 ۳۰-خرداد-۱۳۹۴, ۰۹:۲۴:۵۵
آخرین ارسال: aKaReZa75
  delay در فرستنده-گیرنده ASK 315MHz با AVR cortex-m3 0 1,915 ۲۱-خرداد-۱۳۹۴, ۰۹:۵۸:۳۷
آخرین ارسال: cortex-m3
  مشکل در اسکن سون سگمنت و تاخیر DELAY poraknia 4 6,790 ۱۴-اسفند-۱۳۸۸, ۲۳:۵۳:۰۲
آخرین ارسال: t3r!p3000
  timer o delay amin_amin 17 6,133 ۱۱-فروردین-۱۳۸۶, ۱۰:۴۳:۴۹
آخرین ارسال: ha_60

پرش به انجمن:


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

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