سلام مهمان گرامی؛
به کیان ست خوش آمدید برای مشاهده انجمن با امکانات کامل می بايست از طريق این لینک عضو شوید.
نمایش نتایج: از شماره 1 تا 1 , از مجموع 1

موضوع: آموزش اندازه گیری طول پالس ورودی با استفاده از اینتراپت و تایمر میکرو و نمایش روی LCD

  1. #1
    مشتری قدیمی soonaeid آواتار ها
    تاریخ عضویت
    Oct 2012
    محل سکونت
    Mashhad
    نوشته ها
    6
    تشکر ها
    3
    17 سپاس از6 پست

    آموزش اندازه گیری طول پالس ورودی با استفاده از اینتراپت و تایمر میکرو و نمایش روی LCD

    پالس ورودي به ميكرو دارای یك سطح بالا رونده و یك سطح پایین رونده است ، وقتی پالس بالا میيرود تایمر روشن ميشود و وقتی پالس پایین میيرود، آنرا خاموش ميکنیم ، در نتيجه مي توانيم زمان ناحیه مثبت را اندازه بگیریم . براي اینکار میشود از پایه های وقفه استفاده کرد.
    در برنامه بالا پایه
    int0 برای پالس با لبه ی پایین رونده و پایه int1 برای پالس با لبه ی بالا رونده برنامه ریزی شده ، این دو پایه به هم متصل شده و پالس ورودی به آنها اعمال میشود ، هنگامی که پالس از سطح صفر به یک میرود (بالا رونده) وقفه ی int1 فعال شده و به زیر برنامه ان یعنیE پرش میشود ، در آنجا تایمر صفر شروع به کار میکند ، هنگامی که پالس از سطح یک به صفر میرود ، وقفه ی int1 فعال میشود و به زیر برنامه اش یعنیW پرش میشود ، آنجا هم تایمر متوقف شده و مقدار شمرده شده در متغیر c ریخته میشود و c در حلقه do-loop روی LCD نمايش داده ميشود.



    کد:
    $regfile = "m16def.dat"
    $crystal = 8000000
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Pinc.0 , Db5 = Pinc.1 , Db6 = Pinc.2 , Db7 = Pinc.3 , E = Pinc.4 , Rs = Pinc.5
    Config Timer0 = Timer , Prescale = 1
    Config Int0 = Falling
    Config Int1 = Rising
    Enable Interrupts
    Enable Int0
    Enable Int1
    Enable Ovf0
    On Ovf0 Q
    On Int0 W
    On Int1 E
    Dim A As Byte , B As Long , C As Long
    Cursor Off
    Do
    Locate 1 , 1 : Lcd "t= " ; C ; " us  "
    Loop
    End
    Q:
    Incr B
    Return
    W:
    Stop Timer0
    B = B * 16 : C = B : B = 0
    Return
    E:
    Start Timer0
    Return
    نحوه کار تایمر ها :
    میکرو mega16 دارای 3 تایمر است ، دو تایمر هشت بیتی 0 و 2 که میتوانند از صفر تا 255 بشمارند و تایمر شانزده بیتی 1 که میتواند تا 65565 شمارش نماید .
    تایمر ها با دستور زیر راه اندازی میشوند :
    Config Timerx = Timer , Prescale =y
    x شماره تایمر است که میتواند 0 یا 1 یا 2 باشد و y مقدا رPrescaleاست که میتواند 1,8,64,256 و 1024 باشد . Prescale مشخص کننده فرکانس کار تایمر است و به نوعی مشخص میکند که مثلا شمارش از صفر تا 255 برای تایمر 0 چقدر زمان ببرد
    با دستورات زیر میتوان وقفه ی تایمر را فعال کرد :
    Enable Interrupts
    Enable Ovfx
    On Ovfx Q
    x شماره تایمر است و q برچسبی است که تایمر هنگام سرریز شدن به آن پرش میکند ، شمردن تا حداکثر مقدار را سرریز شدن میگویند ، مثلا حداکثر مقدار برای تایمر 0 برابر 255 است .
    برگشت از زیر برنامه با دستور return انجام میشود .
    با توجه به موارد بالا کمترین و بیشترین زمانی که میتوان با تایمر های مختلف ساخت به شرح زیر است ( با کمترین و بیشترین کریستال و Prescale
    تایمر صفر : بیشترین 262144 میلی ثانیه ، کمترین 16 میکرو ثانیه
    تایمر دو : مطابق بالا
    تایمر یک : بیشترین :67.108864 ثانیه ، کمترین 4096 میکرو ثانیه
    در این پروژه ما به زمان های خیلی کم نیاز داریم چون استب بالای میخواهیم ، بنابراین باید از تایمر 0 یا دو استفاده کنیم
    برای داشتن استپ بالا ، اولین پیشنهاد استفاده از کریستال 16 مگاهرتز و پرسکلیر 1 است ، با این کار تایمر 16 میکرو ثانیه میشمارد و ما بیشترین استب را خواهیم داشت (62 استپ (
    در برنامه بالا 16 میکرو ثانیه طول میکشد تا تایمر 0 از 0 تا 255 بشمارد ، هنگامی که رقم شمرده شده به 255 رسید ، به زیر برنامه رجوع میشود و در انجا یک رقم به b افزوده میشود . این کار تاوقتی که لبه یک به صفر نرسیده ادامه مییابد .
    بعد از رسیدن لبه ی مذکور به زیر برنامه w پرش میشود ، هر رقم b یعنی 16 میکرو ثانیه ، پس ما باید b را در 16 ضرب کنیم تا زمان اصلی بدست بیاید .

    دوستانی که علاقه مند به هر قسمت از کاربردهای میکرو کنرلر یا آموزش اون هستند اعلام کنند تا در حد توان آموزشش رو قرار بدیم
    ویرایش توسط soonaeid : 1st November 2012 در ساعت 15:03

  2. نمایش تمام تشکر های soonaeid در این پست:

    مهدی چیت بند (1st November 2012)

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

کلمات کلیدی این موضوع

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

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