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

ارسال‌ها: 31
موضوع‌ها: 7
تاریخ عضویت: اردیبهشت ۱۳۹۴

تشکرها : 26
( 1 تشکر در 1 ارسال )
ارسال: #1
ایجاد تاخیر متغیر در حد میکرو ثانیه
سلام دوستان، یه سوال ساده داشتم که ممنون میشم راهنماییم کنید.
میخواستم بدونم که اگه بخوام یه تاخیر در حد میکرو ثانیه ایجاد کنم باید چکار کنم؟ البته مقدار تاخیر ثابت نباشه و طبق برنامه ای که براش مینویسم، تو شرایط مختلف تغییر کنه. تابع delay برای میلی ثانیه جواب میده، ولی برای زمان های کوچیک تر مقدار متغیر رو قبول نمیکنه، به خاطر همین دنبال یه تابع جدید میگردم. اینو هم بگم که میتونم با نوشتن یه حلقه for و پیداکردن ماکزیمم شمارش حلقه اینکار رو انجام بدم، ولی دنبال یه روش دقیق تر و ساده تر و به اصطلاح مهندسی میگردم.
ممنونم از وقتی که میگذارید.
(آخرین ویرایش در این ارسال: ۰۷-مرداد-۱۳۹۴, ۲۳:۰۵:۱۸، توسط hamze_b.)
۲۰-تير-۱۳۹۴, ۱۵:۵۹:۱۲
ارسال‌ها
پاسخ
behzady آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,169
موضوع‌ها: 57
تاریخ عضویت: آبان ۱۳۹۰

تشکرها : 4094
( 6339 تشکر در 2085 ارسال )
ارسال: #2
RE: ایجاد تاخیر متغیر در حد میکرو ثانیه
تابع میکرو ثانیه هم هست us
اما اگر قرار هست که متغییر باشد باید از تایمر ها خودت استفاده کنی
یه نگاهی به قسمت تایمر های میکرو بنداز
اینجا یه مثال میزنم
فرض کن می خوای 1 میکروثانیه وقفه درست کنی
سرعت کریستال میکرو هم 8 مگ هست
میای و مثلا تایمر 0 رو کلاک ورودیش رو تقسیم بر 8 می کنی
حالا هر پالسی 1 میکرو ثانیه هست حالا کافی هست پالس ها رو بشماری تا زمان بست بیاد

کد:
TCCT0 = 0x02;
wait = 10;
TCRT0 = 0x00;
while(TCRT0 <= wait);
//do what you want
البته یادت باشه توی این روش دقت 1 میکروثانیه هست برای افزایش دقت کافیه تقسیم تایمر رو کم کنی
+
حداکثر 256 میکروثانیه صبر می کنه برای مقدار بیشتر از تایمر 1 استفاده کن

به همه عشق بورز، به معدودی اعتماد کن و در حق کسی بدی نکن.
ویلیام شکسپیر

نباید ایمان به انسانیت را از دست دهید. انسانیت یک اقیانوس است؛ اگر قطرات اندکی از اقیانوس کثیف است، اقیانوس کثیف نمی‌شود.
مهاتما گاندی

يَا أَيُّهَا الَّذِينَ آمَنُواْ اسْتَعِينُواْ بِالصَّبْرِ وَالصَّلاَةِ إِنَّ اللّهَ مَعَ الصَّابِرِينَ
۲۰-تير-۱۳۹۴, ۲۲:۴۰:۳۵
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : milad15m, sharin, hamze_b
hamze_b آفلاین
كاربر تک ستاره
*

ارسال‌ها: 31
موضوع‌ها: 7
تاریخ عضویت: اردیبهشت ۱۳۹۴

تشکرها : 26
( 1 تشکر در 1 ارسال )
ارسال: #3
RE: ایجاد تاخیر متغیر در حد میکرو ثانیه
ممنون از لطفی که کردین. یه سوال دیگه؛ چون این تاخیر رو برای درست کردن زاویه آتش میخوام، ممکنه که زمان تاخیر مورد نیازم تا 10 میلی ثانیه هم بزرگ بشه، مثلا 9540 میکرو ثانیه. فک کنم اون موقع مجبور بشم که از وقفه سرریز استفاده کنم، چون مقدار 3ff میشه 1023 و اگه اشتباه نکنم ماکزیمم تایمر یک هم میشه همین 1023، نه 65535؛ درست میگم؟ به نظر شما راهی هست که به استفاده از وقفه نیاز پیدا نکنم؟ ممنون
۲۱-تير-۱۳۹۴, ۰۵:۰۱:۳۲
ارسال‌ها
پاسخ
behzady آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,169
موضوع‌ها: 57
تاریخ عضویت: آبان ۱۳۹۰

تشکرها : 4094
( 6339 تشکر در 2085 ارسال )
ارسال: #4
RE: ایجاد تاخیر متغیر در حد میکرو ثانیه
بهتر هست از تایمر یک استفاده کنید که اونموقع می تونید تا 65535 تا بشمارید (فقط در مود PWM هست که تا 1023 میره در مود تایمر و کانتر همون 16 بیت رو داره)

به همه عشق بورز، به معدودی اعتماد کن و در حق کسی بدی نکن.
ویلیام شکسپیر

نباید ایمان به انسانیت را از دست دهید. انسانیت یک اقیانوس است؛ اگر قطرات اندکی از اقیانوس کثیف است، اقیانوس کثیف نمی‌شود.
مهاتما گاندی

يَا أَيُّهَا الَّذِينَ آمَنُواْ اسْتَعِينُواْ بِالصَّبْرِ وَالصَّلاَةِ إِنَّ اللّهَ مَعَ الصَّابِرِينَ
(آخرین ویرایش در این ارسال: ۲۲-تير-۱۳۹۴, ۰۷:۱۲:۳۸، توسط behzady.)
۲۲-تير-۱۳۹۴, ۰۷:۱۱:۰۰
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : hamze_b, sharin


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [فوری] ایجاد موج مربعی با دو کلید و نماش فرکانس در ال سی دی mamadr 0 2,041 ۰۹-تير-۱۳۹۶, ۱۶:۲۰:۲۹
آخرین ارسال: mamadr
  ttiny45 ساخت ثانیه دقیق javad_2010 4 3,945 ۱۳-آبان-۱۳۹۵, ۱۱:۱۳:۳۷
آخرین ارسال: javad_2010
  تست میکرو saber.k 10 14,048 ۰۹-شهریور-۱۳۹۵, ۰۲:۰۹:۲۷
آخرین ارسال: yadulla fazel
  ایجاد فرمان TAB در MMC nex 1 2,017 ۰۲-اردیبهشت-۱۳۹۵, ۱۰:۲۴:۱۸
آخرین ارسال: nex
  ایجاد میدان مغناطیسی با AVR متین 7 6,679 ۲۶-فروردین-۱۳۹۴, ۱۸:۳۸:۲۱
آخرین ارسال: sharin
Rolleyes [سوال] احتیاج فوری !ایجاد حالات مختلف کاری برای یک سوئیچ در بسکام sadegh1rezaei 6 3,636 ۲۹-مهر-۱۳۹۳, ۲۱:۵۷:۴۶
آخرین ارسال: aKaReZa75
  میکرو و ال ای دی dostane 4 3,376 ۲۴-شهریور-۱۳۹۳, ۱۶:۳۹:۰۰
آخرین ارسال: a.mehran
  ایجاد ولتاژ ثابت 0 تا 5 ولت با atmega32 و کنترل آن از طریق visual basic soheilas 0 2,363 ۲۱-مرداد-۱۳۹۳, ۱۳:۰۵:۲۳
آخرین ارسال: soheilas
  ایجاد وقفه 1 ثانیه با Attiny 2313 sinastar 3 3,624 ۰۴-آذر-۱۳۹۲, ۲۰:۲۶:۴۵
آخرین ارسال: EBKA
  ایجاد تاخیر در کلید a.mehran 11 7,406 ۰۸-مهر-۱۳۹۲, ۱۵:۵۶:۰۲
آخرین ارسال: a.mehran

پرش به انجمن:


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

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