نویز | آموزش AVR | آموزش میکرو | میکروکنترلر

وبلاگ آموزشی احسان نوری ::: Ehsan Nouri's Weblog

نویز | آموزش AVR | آموزش میکرو | میکروکنترلر

وبلاگ آموزشی احسان نوری ::: Ehsan Nouri's Weblog

" نویز رسانه ای است برای آموزش آسان مفاهیم میکروکنترلر و الکترونیک "

دریافت مستندات
آخرین نظرات
  • ۲۰ خرداد ۰۰، ۲۰:۴۹ - حسام الدین سلطانی
    خعلی عالی
  • ۲ ارديبهشت ۰۰، ۱۸:۱۱ - حسام الدین سلطانی
    خیلی عالی

بررسی تایمر/کانتر دو (2) در میکروکنترلرهای AVR ؟ [22]

دوشنبه, ۱۵ ارديبهشت ۱۳۹۳، ۱۰:۴۰ ب.ظ

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

 

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

به نام خدا

سلام

حالتون خوبه ؟!

نزدیک به 50 روز از آخرین پستی که گذاشتم میگذره و بابت تاخیری که در روند آموزش بوجود اومده از همتون عذرخواهی میکنم.

فوق العاده سرم شلوغ بود و فکرم درگیر ...

بالاخره میشد یه وقتی پیدا کرد و پست گذاشت،اما اینکارو نکردم ! چون خدا میدونست که چه پستی از آب در میومد !!!

با ذهنی درگیر و پر از دغدغه و استرس، AVR کیلویی چنده ؟؟؟!!!! cheeky

شما هم برای ما دعا کنید که هم درس و زندگیمون اوکی بشه و هم انگیزه مون بیشتر بشه برای پست زدن !!!

به هرحال اومدم !

 

امروز یه بحث تکراری رو پیش رو داریم.

اونم چیزی نیست جز بررسی تایمر/کانتر دو !

در بخش های گذشته آموزش تایمر/کانترهای صفر و یک رو بررسی کردیم و امروز نوبت تایمر/کانتر شماره دو شده ...

 

نگاهی میندازیم به بحث های جلسه های قبلی (مخصوص اونایی که هنوز نخوندن !!!) :

 

 

تایمر/کانتر شماره دو مثل تایمر/کانتر شماره صفر، 8 بیتیه !

رجیسترهاش هم مثل همونه.

تنها یه ویژگی بارز داره تایمر/کانتر دو،اون هم Asynchronous Operation یا عملیات آسنکرونه !

البته فعلا زوده که راجع به این ویژگی بخوایم بحث بکنیم و برای اینکه منتظر بحث های آینده وبلاگ بمونید،نمیگم چیه ! (دلتووووون بسوزه !!! laugh)

 

طرح مسئله :

 

مایل هستیم که یک فلاشر طراحی کنیم که هر 50 میلی ثانیه برامون چشمک بزنه ! (اینجوری :wink). هههههههه

از کریستال خارجی 16 مگاهرتز استفاده میکنیم.

 

 

حل مسئله :

 


با انتخاب ضریب تقسیم 256،زمان سرریز 4.096 میلی ثانیه میشه !

با 12 بار سرریز شدن تایمر/کانتر،و شمرده شدن تا گام 53 در 13 اُمین سرریز مدت زمان 50 میلی ثانیه طی خواهد شد.

 

تمامی صحبتهایی که شد تکراریه و از توضیح مجدد خودداری میکنم !

 

 

میریم سروقت معرفی رجیسترهای مربوطه ؛

 

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

 

بررسی رجیستر TCCR2 :


Timer/Counter2 Control Register

 

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

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

طبق جدول زیر :

 

 

ما 256 رو انتخاب کردیم.

 

بررسی رجیستر TCNT2 :

Timer/Counter2

 

این رجیستر هم مقدار تایمر/کانتر شماره 2 رو در خودش نگه میداره.

 

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

Timer/Counter-Interrupt Mask-Register

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

 

 

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

Timer/Counter Interrupt Flag Register – TIFR

 

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

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

 

 

خب اینم از این قسمت !

دیدید که حرف جدیدی برای گفتن نداشتیم.

اما برای اینکه بحث کامل باشه،مجبور شدم که مطرحش کنم.

 

وقتشه که بریم سراغ کدنویسی !

بیاین تا بریم ...

۲۳ ارديبهشت ۹۳ ، ۰۰:۱۳ حسین ابراهیمی

سلام .

خسته نباشید . مطالبتان خیلی عالی بود .

اگر می شود مطالب را بیشتر توضیح دهید تا بتوانیم بهتر درک کنم (در مورد میکروکنترلر avrدر برنامه کدویژن و

مخصوصا در مورد ابزار های آن مانند فیوز بیت ها و تایمر/کانتر ) .  

                                                                                               از شما متشکرم. 

پاسخ:
سلام
شما اگر از ابتدا شروع به مطالعه مباحث کنید،بهتر یاد میگیرید.

موفق باشید.

سلام بیت toie2 مربوط به وقفه تایمر 2نه 1 لطفا اصلاحش کنید.

پاسخ:
سلام

ممنون.اصلاح شد.
جالب است
حاجی من شیفته وبلاگت و خودت شدم . دمت گرم کارت خیلی درسته
پاسخ:
مخلصییییییم !
سلام داداش خسته نباشی مطالبت هم فوف العاده س و واقعا پتانسیل تبدیل شدن به یک استاد پر آوازه رو داری..فقط یه سئوال داشتم ولی قبل از اون بگم که همه ی مطالبت رو خوندم که نگی برو دوباره بخون اونم اینکه:
شما توی این مثال از ضریب تقسیم 256 استفاده کردی و گفتی که باید 12 بار بشماره این قبول!.. حالا بنده اومدم با ضریب تقسیم 1024 این کار رو انجام دادم و حداکثر تاخیر توی این حالت شد 16.320 میلی ثانیه و باید 3 بار بشماره و در بار چهارم در گام 16.25 پنجاه میلی ثانیه طی بشه....حالا سئوال من اینه که میشه با ضریب 1024 این کارو کرد و اگه که نه برای چی؟؟
مرسی از پاسخت
سلام ممننون از مالب ارزنده تان. خیلی عالی و ررساتر بودند. درصورت امکان درباره ساخت ساعت و تاریخ شمسی با ایسی های ساعت همچون ds1307 هم مطالبی قرار دهید با تشکر
۱۷ مرداد ۹۸ ، ۱۸:۵۸ رضا نریمانی 14 مشهد

خیلی ممنون از درس شما اگه بیشتر بود بهتر

سلام من کد یک پروژه رو خریدم ولی تو اجرا کار نمیکنه میشه کدش رو برام توضیح بدید


(void read (void
}
    TCCR2=TCCR2 & 0B11111110;
    read_remut=0;
    dataH=0;
    dataL=0;
    start=0;
    TCNT2=0;
    TCCR2=TCCR2 | 0B0000001;
    (while (read_remut==0;
    TCCR2=TCCR2 & 0B11111110;
{

ارسال نظر

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