نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
آزادی حجاز از دست نااهلان
مهدی دمیرچیلو

آموزش جامع AVR جلسه ۱۸ Timer Counter CTC Mode

به نام خدا : سلام، توی این مطلب از آموزش AVR میخوام به آموزش مد CTC تایمر بپردازیم و البته این آموزش به صورت پروژه محور هستش و تو مطالب قبل ریجستر ها رو توضیح دادم، تو این مطلب میخوام پروژه ساعت با تایمر های ۰ و ۱ و ۲ به کمک مد CTC رو براتون قرار بدم.
آموزش جامع AVR جلسه ۱۸ Timer Counter CTC Mode

آموزش جامع AVR جلسه ۱۸ Timer Counter CTC Mode


جان داش تقصیر من نیستا، این مطالب رو یکی در میدون میزارم تو سایت laugh ، هی میام ترتیب رو رعایت کنم میبینم نمیشه و …. بگذریم حال توضیح دادن رو ندارم.
توجه مهم : اینو همون اول کار بگم که پروژه تو پروتئوس درست کار نمیکنه، در عمل درست کار میکنه، من تست کردم در عمل حدود هر ۵ دقیقه یه ۵-۸ ثانیه جو میوفته(البته بدون کریستال ۸ میگ خارجی) و کریستال هم نداشتم تا با کریستال تست کنم و ببینم اوضاع چطوره، اینم بگم که نمیدونم این تاخیری که وجود داره علتش چیه، آیا با کریستال خارجی مشکل رفع میشه، آیا مشکل از پروژه هستش اینو من نمیدونم کسی اگه فهمید به ما هم بگه.
اگه میخواین از کریستال خارجی استفاده کنید میتونید مطلب مقابل رو بخونید : آموزش جامع AVR جلسه ۱۴ System Clock and Clock Options
مطالبی که مربوط به ساعت هستش و من تو سایت گزاشتم به صورت زیر هستش :

  1. انواع روش ساخت ساعت با AVR
  2. نمایش ساعت تاریخ PC در LCD با آردوینو جلسه ۵
  3. پروژه AVR ساعت ساده با تایمر ۰
  4. پروژه AVR ساعت با ماژول DS۳۲۳۱ و سون سگمنت
  5. پروژه ساعت دیجیتال با LCD گرافیکی
  6. آموزش راه اندازی ماژول ساعت دقیق DS3231
  7. ساعت با ic ds1307
  8. ساعت دییجیتالی با سون سگمنت

 

آموزش مد CTC

توجه جالب : البته اینم بگم که لینک های بالا هیچ ربطی به این مطلب نداره؛ البته از یه لحاظ ربط داره ولی این مطلب برا آموزش کار با مد CTC تایمر هستش، که چون من میخوام پروژه محور مطالب رو آموزش بدم لذا گفتم مد CTC رو با گزاشتن مطالبی درباره ساعت توضیح بدم، البته مطالب دیگه ای با این مد و مد های دیگه رو به زودی میزارم تو سایت.

 

سوال : مگه برا تولید زمان و در نتیجه ساخت ساعت نباید از مد نرمال استفاده کرد پس چرا از مد CTC میخوای استفاده کنی؟؟؟
جواب : سواله خوبیه، میگم شما چقدر حواستون جمع هستش، نمیشه پیچوندتون و به جزئیات دقت میکنید. laugh
در جواب باس بگم که این مد Normal از ۰ میشموره تا max (که مقدار ماکس در تایمر ۸ بیتی برابر ۲۵۵ و در تایمر ۱۶ بیتی برابر ۶۵۵۳۵ هستش) لذا مثلا فک کنید کلاک تایمر رو طوری تنظیم کنیم که به ازای هر ۱۰۰ تا کلاک ۱ ثانیه تولید میشه(۱ ثانیه طول میشه تا تایمر به اندازه ۱۰۰ بشموره، که مقدار TCNTn به ۱۰۰ برسه) لذا اگه بخوایم از مد نرمال استفاده کنیم بعد از این که مقدار ریجستر TCNTn به ۱۰۰ رسید باس مقدار TCNTn رو ۰ کنیم (و به متغییر ثانیه ۱ واحد اضافه کنیم) تا دوباره به ۱۰۰ برسه و ۱ ثانیه تولید بشه و باس باید مقدارش رو ۰ کنی و...
ما چون آدم تنبلی هستیم و علاقه داریم پروژه به صورت خیلی کوتاه بنویسیم و از آسون ترین روش استفاده کنیم میایم و از مد CTC استفاده میکنیم، حالا مد CTC مگه چه برتری نسبت به مد Normal داره؟؟؟؟ در زیر به این سوال جواب میدم :  buba
یه خوبی که تو مد CTC هستش اینه که میشه مقدار MAX رو برخلاف مد Normal تعیین کرد، که این کار به کمک ریجستر (OCR0 در تایمر ۰ و OCR2 در تایمر ۲ و OCR1A در تایمر ۱) انجام میشه، که البته اگه جدول مربوط به انتخاب مد تو تایمر مربوطه که تو جلسات قبل گزاشتم(و تو دیتاشیت هم هستش) این موضوع که مقدار MAX کدوم مد رو میشه تعیین کرد و این تعیین کردن به عهده کدوم ریجستر هستش.
و تو مد CTC وقتی تایمر به MAX (که با ریجستر هایی که در بالا گفتم تعیین میشه کردش) برسه مقدار TCNTn به صورت خودکار صفر میشه و دیگه نیاز نیست دستی خودمون یه کد بزاریم تو پروژه تا وقتی به فلان عدد رسید صفرش کنیم، تو مد نرمال باس دستی ریجستر TCNTn رو صفر میکردیم، ولی تو مد CTC این کار به صورت خودکار انجام میشه. cool
منظور از TCNTn هم رو حتما میدونیم دیگه، به جای n اعداد ۰ و ۱ و۲ بزارید که میشه برا تایمر ۰ و ۱ و۲٫ sarcastic
اووووف مای گاد، چقدر توضیح دادم، ولی تو دیتاشت این موضوع رو تو ۵ کلمه گفته و من براش یه رمان نوشتم. laugh
 
شماتیک پروژه (برا تموم تایمر ها همینه شماتیک)
آموزش مد CTC
 
اینم مدار در عمل (تو پروتئوس درست کار نمیکرد پروژه، مجبور شدم در عمل ببندم dash )
توی این عکسی که گرفتم یه مو بود  focus ، مجبور شدم با فوتوشاپ حذفش کنم ولی یه جای عکس اگه دقت کنید گندی که زدم رو میتونید ببینید. laugh
کاربرد مد CTC
 

توضیح CTC در تایمر ۰

 
 

توضیح CTC در تایمر ۱

 
 

توضیح CTC در تایمر ۲

 
 
برا مد CTC میتونید مطالب زیر رو هم بخونید که داشمون خوب توضیح داده :
بررسی مُد CTC در تایمر/کانتر میکروکنترلرهای AVR ؟ [۲۴]
کار با تایمر/کانتر یک در مد CTC ؟ [۲۵]
 

دانلود پروژه های این مطلب

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

گروه پرسش و پاسخ الکترونیکی در سروش
مهدی دمیرچیلو امیدوارم مطالب ناچیز این سایت مفید باشه براتون؛ به امید روزی که دانسته هامونو به اشتراک بزاریم، حالا پولی یا رایگانش زیاد مهم نی؛ بعضی ها فک میکنن چیزی که بلدن، اگه با دیگران به اشتراک بزارن ... !
ارسال دیدگاه
7

1) نظرات غیر فارسی به صورت خودکار حذف میشوند ( حداقل 5 حرف فارسی وارد کنید ).

2) به موارد درخواست پروژه/کد آماده و سوالاتی که بلد نباشم پاسخ داده نمیشه.

3) برای گزاشتن کدهاتون از این سایت استفاده کنید ( طبیعتا لینک کدتون رو باید برای من بفرستید! ) : debian

4) پسورد فایل های سایت : www.dmf313.ir

  1. Avatar

    مهمان

    محمدهادی

    سلام
    وقت بخیر
    با تشکر از زحمات شما و سایت خوبتون
    ببخید چرا فیلم پروژه جلسه هجدهم باز نمیشه؟
    این ارورو رو میده
    Error loading player:
    No playable sources found
    اجرکم عند الله

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      پاک شده انگار – هر چی گشتم تو آپارات پیداش نکردم متاسفانه.

  2. Avatar

    مهمان

    AMIR

    یه سوال داشتم
    پروژ کامل ساعت تو ال سی دی کاراکتری تو سایت هس؟؟؟
    منظورم از کامل اینه که بشه تنظیمش هم کرد

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام-نمیدونم.

  3. Avatar

    مهمان

    AMIR

    سلام این پروژه رو خیلی راحت تر هم میشد نوشت
    گفتم کدش رو براتون بفرستم یه نگاه بندازین
    #include
    #include
    #include
    #include
    int m=0,i=0,s=10,h=0,ms=0;
    char clock[20],f[5];
    interrupt [TIM0_COMP] void timer0_comp_isr(void)
    {
    // Place your code here
    ms++;
    if(ms==10)
    {
    s++;
    ms=0;
    if(s==60)
    {
    m++;
    s=0;
    if(m==60)
    {
    m++;
    }
    }
    }
    sprintf(clock,”%02d:%02d:%02d “,h,m,s);
    lcd_gotoxy(0,0);
    lcd_puts(clock);
    }

  4. Avatar

    مهمان

    محمد جلوخانی

    خیلی ممنون اگه میشه لطفا ساعت با کریستال خارجی و سون سگمنت چهارتایی رو هم بزارید
    واقعا گلی

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      مطلب ۷s به صورت جدا و ساعت با کریستال به صورت جدا توی سایت هستش…..