NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3948 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 5 از 5

موضوع: تایمر یا کانتر؟

  1. #1
    مدیر انجمن sobhan537 آواتار ها
    تاریخ عضویت
    Aug 2012
    نام
    عبدالملکی
    نوشته ها
    1,084
    تشکر
    3,098
    تشکر شده 804 بار در 495 پست

    پیش فرض تایمر یا کانتر؟

    سلام...
    یک کلید فشاری به یکی از پین های میکرو وصله. به محض فشار دادن این کلید، led متناظر روشن میشه و با رها کردن کلید، led خاموش میشه.
    حالا میخوام مدت زمان دقیق که این کلید رو فشار دادم رو داخل یک متغییر داشته باشم.

    نمیدونم باید از تایمر استفاده کنم یا کانتر؟ تایمر/کانتر شماره چند؟

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  3. #2
    ناظم انجمن Ma3ood آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    مسعود
    نوشته ها
    2,248
    تشکر
    1,912
    تشکر شده 3,087 بار در 1,509 پست

    پیش فرض

    یه راه پیشنهادی و البته ساده شما میتونی به محض فعال شدن کلیدی متغییری را در وقفه یکی از تایمرها فعال کرده و شروع کنید به شمارش بعد زمانی که دستتون را از کلید برداشتید مقدار زمان را بخونید
    مثلا نمونه کدی را براتون مثال میزنم
    کد:
    interrupt [TIM0_OVF] void timer0_ovf_isr(void)
    {
    if(t_flg)
    s_time++
    }   
    
    void main(void)
    {while (1)
          { 
    if(PINB.0==1){
    t_flag=1;
    s_time=0;
    ,....
    
    }
    else
    t_flag=0;
    ,.....
    مقدار شمارش در متغییر s_time قرار میگیره و بعدا میتونی تغییرات و ... روی اون انجام بدی شما مثلا تایمرتو طوری فعال کن که هر 10 میلی ثانیه سرریز بشه
    این روش هرجند دارای خطا هست و مقداری تاخیر داره ولی ساده هست .
    موفق باشی

  4. کاربران : 2 تشکر کرده اند از شما Ma3ood برای ارسال این پست سودمند:


  5. #3
    مدیر انجمن sobhan537 آواتار ها
    تاریخ عضویت
    Aug 2012
    نام
    عبدالملکی
    نوشته ها
    1,084
    تشکر
    3,098
    تشکر شده 804 بار در 495 پست

    پیش فرض راه اندازی همزمان 7 تا تایمر!

    سلام
    الآن 7تا کلید فشاری به 7تا از پین های میکرو مگا16 وصله. به محض فشار دادن هر کلید، led متناظر روشن میشه و با رها کردن کلید، led مربوطه خاموش میشه. همچنین مدت زمان دقیق که هر کلید رو فشار دادم؛ با استفاده از تایمر1 داخل متغییرهای مربوطه ذخیره میشه.

    الآن میخوام با زدن یک کلید فشاری مخصوص، همه 7تا LED به طور همزمان روشن بشن و هر LED به اندازه مدت زمان داخل متغییر مربوطه اش، روشن بمونه و بعد خاموش بشه.

    به نظر خودم برای اینکار احتیاج با 7 تا تایمر دارم که همه با هم شروع به کار کنن و وقتی زمان هر تایمر به متغییر مربوطه رسید، LED مربوطه خاموش بشه.

    اما نمیدونم این کار شدنیه یا نه؟ دوستان اگه راه حل یا پیشنهادی دارید لطفا دریغ نکنید...

  6. #4
    کاربر فعال Hesam1984 آواتار ها
    تاریخ عضویت
    Sep 2007
    نام
    مهره مار
    نوشته ها
    315
    تشکر
    45
    تشکر شده 108 بار در 77 پست

    پیش فرض

    نه 7 تا تایمر نمی خواهد.

    وقتی کلید مخصوص رو فشار میدی اول همه رو روشن می کنه و خط بعدش یک تایمر از صفر شروع به کار می کنه و در روتین وقفه تایمر هر وقت مقدار شمارنده شما که داره اضافه می شه با مقدار متغیر هر LED برابر شد، اون رو Toggle یا هر کار دیگه بکنه. فکر کنم با Select case بنویسیش خوبه.

  7. تشکرها از این نوشته :


  8. #5
    تازه وارد
    تاریخ عضویت
    Dec 2008
    نوشته ها
    1
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

    درود بیکران به دوستان
    در مد کپچر AVR ، من می خواستم بجای اینکه از پین سخت افزاری ICP1 برای نمونه برداری از کانتر 1 در مگا 169 استفاده کنم اینکار رو بصورت نرم افزاری بهش فرمان Capture بدم. ولی نمیدونم چطور میشه این کارو کرد. ممنون میشم کسی منو تو این زمینه یاری کنه . با کنترل کدام بیت از کدام رجیستر بصورت نرم افزاری می توان فرمان Capture را داد؟
    تو دیتا شیتش نوشته :
    An Input Capture can be triggered by software by controlling the port of the ICP1 pin
    ولی من متوجه نشدم.
    با کدویژن دارم کد می نویسم.
    ببخشید اگر جای نامناسبی مطرح کردم ولی خیلی گیرم .
    ممنونم

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •