الکترونیک، رباتیک و مکانیک

آموزش به زبان بسیار ساده و روان (از صفر تا بینهایت)

الکترونیک، رباتیک و مکانیک

آموزش به زبان بسیار ساده و روان (از صفر تا بینهایت)

الکترونیک، رباتیک و مکانیک

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

نویسندگان
پیوندهای روزانه
طبقه بندی موضوعی
آخرین نظرات

جمعه, ۴ دی ۱۳۹۴، ۱۱:۰۱ ق.ظ

۰

اینبار با "بررسی تایمر/کانتر یک" در خدمتتون هستم.

 

پس با ما در ادامه مطلب همراه باشید ...

 

سلام

چه حال و خبرا ؟؟؟!!!

حواستون به تعطیلات هست ؟ زود میگذره ها ...

کلا هرچی که خوبه زود تموم میشه !

مثلا الان پست بیستم آموزش رو داریم شروع میکنیم ! کی باورش میشد که کار به اینجا بکشه ؟!

به هر حال ...

 

این دفعه میخوایم تایمر/کانتر یک رو بررسی کنیم.

در پست های قبلی تایمر/کانتر صفر رو بررسی کردیم و در مورد برنامه نویسی هم صحبت کردیم.

در این بخش از آموزش حرف خاصی برای گفتن نداریم و عمده مطالب همون چیزاییه که برای تایمر/کانتر صفر گفتیم !

عاجزانه تقاضامندم پست ها رو به ترتیب شماره بیاین جلو (میونبُر نزنید !)

 

اول از همه یادآوری میکنم که تایمر/کانتر یک،16 بیتیه !

 

طرح مسئله :

 

میخوایم یه فلاشر LED بسازیم که هر 2 ثانیه یه بار چشمک بزنه (بازم فلاشر !!!)

فرکانس کاری میکرو رو 16 مگاهرتز در نظر میگیریم.

 

حل مسئله :

 

 

فرمول بالا که معرف حضورتون هست ؟ (اگه نیست بگید تا کلمو بکوبم تو دیوار! crying)

 

با فرکانس 16 مگاهرتز،حداکثر تاخیری که میتونیم بسازیم 4.096 میلی ثانیه است.

با انتخاب ضریب تقسیم 8،فرکانس ما به 2 مگاهرتز کاهش پیدا میکنه و ماکزیمم تاخیری که میشه باهاش ساخت به 32.768 میلی ثانیه افزایش پیدا میکنه!

اما ما نیاز به تاخیر 2 ثانیه ای داریم ! چیکار کنیم ؟!

کاری که برای اولین بار در سلسه مباحث آموزشی وبلاگ پرمحتوای نویز cheeky میخوایم انجام بدیم اینه :

 

2s ÷ 32.768 ms = 61.03561

 

2 ثانیه ای که مد نظر ما بود رو به 32.768 میلی ثانیه بدست آمده از ضریب تقسیم 8،تقسیم کردیم که حاصل با تقریب حدودا 61 در اومد !

 

معنی این عدد 61 چیه ؟

یعنی اگه 61 بار تایمر از صفر بشماره و به ماکزیمم (65535) خودش برسه (سرریز بشه)،مدت زمان 2 ثانیه طی میشه !

 

بررسی رجیسترها :

 

بررسی رجیستر TCCR1B :

Timer/Counter1 Control Register B - TCCR1B

 

بیت های 0 و 1 و 2 ؛ Bit 2:0 – CS12:0: Clock Select :

از این بیت ها برای تعیین فرکانس تایمر/کانتر 1 یا همون انتخاب ضریب تقسیم استفاده میشه.

 

 

که در اینجا،چون ضریب تقسیم رو 8 انتخاب کردیم،باید مقدار سطر سوم رو انتخاب کنیم (010).

 

بررسی رجیستر TCNT1 :

Timer/Counter1-TCNT1H and TCNT1L

 

این رجیستر حاوی مقدار تایمر/کانتر یک است.

چون تایمر/کانتر یک،16 بیتیه،از دو رجیستر 8 بیتی در کنار هم استفاده شده که با پسوندهای H و L مشخص شده اند.

 

بررسی رجیستر TIMSK :

Timer/Counter-Interrupt Mask-Register

 

درباره این رجیستر قبلا صحبت شده !

اما در همین حد بدونید که بیتهایی که رنگ پس زمینه سفید دارند،مربوط به تایمر/کانتر یک هستند.

در اینجا تنها بیت TOIE1 مد نظر ماست که با یک کردنش وقفه سرریز تایمر/کانتر یک رو فعال میکنه !

و ما هم این فلگ رو فعال میکنیم !

 

بررسی رجیستر TIFR :

Timer/Counter Interrupt Flag Register – TIFR

 

از این رجیستر هم قبلا یاد کردیم.

در اینجا هم تنها بیت TOV1 مد نظر ماست.

هنگامی که تایمر/کانتر یک سرریز میشه،این بیت 1 میشه و پس از اینکه زیرروال مربوط به وقفه بصورت کامل انجام شد صفر میشه و اگه زیرروالی وجود نداشت،با نوشتن یه یک دیگه روی اون،صفر میشه !!!

 

خب.

این هم از این قسمت از آموزش !

این جدا کردن کدنویسی از اصل آموزش هم معضلی شده برای خودش !

 

نمیدونم هم چیکار کنم.

لطفا شما هم نظر بدید در مورد این موارد و مسائل !!!

 

فعلا حداحافظ ...


منبع : www.noise.blog.ir

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی