اطلاعیه

Collapse
No announcement yet.

تولید پالس مربعی با تایمر 1 در مد مقایسه با AVR

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    تولید پالس مربعی با تایمر 1 در مد مقایسه با AVR

    سلام خسته نباشید !!
    من برنامه این پروژه رو نوشتم ولی روی پروتوس جواب نمیده میشه برنامه رو کامل کنید برام :
    میخواهیم یک موج مربعی متقارن بر روی یکی از پایه های AVR تولید کنیم به نحوی که دو کلید فشاری به نامهای UP و DOWN به میکروکنترلر متصل باشد و فرکانس موج مربعی را با گام مناسب (500Hz) کم یا زیاد نماییم.کلاک اصلی 8MHz فرض شود و از تایمر در مد مقایسه استفاده شود.

    راهنمایی استاد :
    فقط از تایمر یک در مد مقایسه استفاده شود و شکل موج مربعی مورد نظر روی پایه oc1a تولید شود. شکل موج اولیه را دارای یک فرکانس دلخواه در نظر بگیرید و سپس کلیدها را به گونه ای طراحی کنید که با هر بارفشردن کلید up فرکانس شکل موج مربعی تولید شده 500Hz افزایش یابد و با هر بار فشردن کلید down فرکانس شکل موج مربعی تولید شده 500Hz کاهش یابد.

    این برنامه رو میخوام عملی انجام بدم کمکم کنید.
    این برنامه ای که نوشتم ولی فکر کنم زیاد مشکل داره :
    کد:
    $regfile = "m32def.dat"
    $crystal = 8000000
    Config Timer1 = Timer , Prescale = 8 , Compare A = Set , Compare B = Disconnect , Clear Timer = 0
    Config Porta = Input
    Config Portb = Output
    Dim F As Integer , Up As Bit , Down As Bit
    Porta.0 = Up
    Porta.1 = Down
    Portb.0 = F
    F = 0
    Enable Interrupts
    Enable Timer1
    On Oc1a L1
    Start Timer1
    L1:
    If Up = 1 Then F = F + 500
    If Down = 1 Then F = F - 500
    Do
    Loop
    Return

    #2
    پاسخ : تولید پالس مربعی با تایمر 1 در مد مقایسه با AVR

    کسی نیست کمکم کنه آخه؟؟؟

    دیدگاه


      #3
      پاسخ : تولید پالس مربعی با تایمر 1 در مد مقایسه با AVR

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

      به همین راحتی
      تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
      علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

      دیدگاه


        #4
        پاسخ : تولید پالس مربعی با تایمر 1 در مد مقایسه با AVR

        نوشته اصلی توسط pars_paya
        این که خیلی ساده س!
        وقفه یکی از تایمرها رو تنظیم کنید.
        با هر بار رفتن به وفقه یک واحد به یه متغیر اضافه بشه.
        تو همون وقفه به شرط میداری اونم این که هر وقت اون متغیری که درحال افزایش هست ، به عدد x رسید یه پین رو تاگل کنه .
        و در نهایت xمقدار فرکانس رو تعیین میکنه.
        با دوتا کلید تنظیمش کن!

        به همین راحتی
        ممنون. میشه اون برنامه ای رو که بالا نوشتم رو واسم کامل کنی :|

        دیدگاه


          #5
          پاسخ : تولید پالس مربعی با تایمر 1 در مد مقایسه با AVR

          برنامه ای که نوشتین اصلا یعنی چی؟؟؟؟؟؟ خیلی مشکل دار هست . اصلاح کنید تا باهم پبش بریم
          یا علی
          تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
          علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

          دیدگاه


            #6
            پاسخ : تولید پالس مربعی با تایمر 1 در مد مقایسه با AVR

            یکم تغییر دادمش ولی گیج شدم .لطف کنید مشکلاتش رو با مثال برام توضیح بدین تا درستش کنم.فردا نمره اعلام میشه فقط تا امشب وقت دارم !!!
            کد:
            $regfile = "m32def.dat"
            $crystal = 8000000
            Config Timer1 = Timer , Prescale = 8 , Compare A = Set , Compare B = Clear , Clear Timer = 0
            Config Porta = Input
            Dim Up As Bit , Down As Bit , F As Integer
            F = 1 / 500
            Timer1 = 0
            Up = 0
            Down = 0
            Porta.0 = Up
            Porta.1 = Down
            Enable Interrupts
            Enable Timer1
            On Oc1a L1
            Start Timer1
            Do
            Loop
            L1:
            If Up = 1 Then Timer1 = Timer1 + F
            If Down = 1 Then Timer1 = Timer1 - F
            Return

            دیدگاه

            لطفا صبر کنید...
            X