اطلاعیه

Collapse
No announcement yet.

کمک برای تولید پالس با بسکام

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

    کمک برای تولید پالس با بسکام

    با سلام به همه دوستان عزیز

    من میخوام با میکرو مگا هشت پالسی رو با فرکانس مثلا 100 هرتز و پهنای پالس 100 میکرو ثانیه
    تولید کنم> میخوام دقت پالس خروجی در حد 1 میکرو ثانیه باشه
    برنامه زیر رونوشتم اما جواب نمیده. لطفا منو راهنمایی کنید:

    $regfile = "m8def.dat"
    $crystal = 8000000

    Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portd.4 , Rs = Portd.5
    Config Lcd = 16 * 2

    Config Pinb.1 = Output

    Config Timer1 = Timer , Compare A = Clear , Prescale = 8 , Clear Timer = 0
    Compare1a = 100
    Compare1b = 10000

    Enable Interrupts
    Enable Timer1
    Enable Oc1b
    On Oc1b Sbbb

    Stop Timer1
    Set Portb.1
    Start Timer1

    Do

    Locate 1 , 1
    Lcd Timer1

    Loop

    End

    '*****************************************

    Sbbb:
    Stop Timer1
    Timer1 = 0
    Set Portb.1
    Start Timer1
    Return

    #2
    پاسخ : کمک برای تولید پالس با بسکام

    منتظر راهنمایی دوستان هستم ؟

    دیدگاه


      #3
      پاسخ : کمک برای تولید پالس با بسکام

      Config Timer1 = Timer , Compare A = Clear , Prescale = 8 , Clear Timer = 0

      شما Compare A = Clear رو config کردی بعد از Enable Oc1b استفاده کردی؟؟؟
      از oc1a استفاده کن :bye
      علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

      دیدگاه


        #4
        پاسخ : کمک برای تولید پالس با بسکام

        با سلام و تشکر از آقای اٌمید حبیبی

        برای روشن شدن بیشتر مطلب من میخوام با میکرو پالسی رو تولید کنم با فرکانس مثلا 100 هرتز و پهنای پالس 100 میکرو ثانیه
        خوب حالا که فرکانس موج ما 100 هرتز هستش پس پریود اون موج میشه یک صدم ثانیه یا همون 10000 میکرو ثانیه
        حالا با در نظر گرفتن پهنای پالس 100 میکرو ثانیه مدت زمانی که موج ما 1 هستش 100 میکرو ثانیه میشه و زمانی که موج ما 0 هست
        میشه 9900=100-10000 میکرو ثانیه ...
        امیدوارم تونسته باشم منظورمو بدرستی رسونده باشم
        لطفا منو برای نوشتن برنامه ای برای تولید این موج با بسکام راهنمایی کنید... ممنون

        دیدگاه


          #5
          پاسخ : کمک برای تولید پالس با بسکام

          خوب اول که تایمر رو اینجوری config کنین
          کد:
          Config Timer2= Timer , Prescale = 1
          برای دقت بالاتر از تایمر 2 استفاده میکنیم
          خوب حالا کافیه نصبت به کریستالتون سر ریز تایمر رو روی 100 میکرو ثانیه بزارین و یه متغیر از نوع byte داخل روتین سر ریز بزارین

          حالا باید سر ریز اول یه پین رو ست کنین ولی متغیر byte رو اضافه کنین و وقتی که برابر 99 شد پین رو toggle کنین :agree:
          به نظر من از یه میکرو مثل 2313 استفاده کنین بهتره چون تا فرکانس 20 mhz رو کار میکنه.البته نباشه هم چندان فرقی نمیکنه واسه این گفتم که شاید بخواین یه کار دیگه هم انجام بده ولی این تولید فرکانس خیلی از وقت میکرو رو میگیره چون هر 100 میکرو ثانیه داره overflow رخ میده

          البته شما استادی خودت ولی به این نکته ها توجه کن

          کد:
          enable timer2
          کد:
          on ovf2 iran
          کد:
          start timer2
          علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

          دیدگاه


            #6
            پاسخ : کمک برای تولید پالس با بسکام


            با درود . . .

            چند تا راه داره

            راه معمولیش اینه

            $regfile = "M8def.dat"
            $crystal = 8000000

            Config Portb = Output

            Config Timer1 = Timer , Prescale = 8
            Enable Interrupts
            Enable Ovf1
            On Ovf1 T
            Timer1 = 55536
            Start Timer1


            Do
            Waitms 100
            Loop

            End

            T:
            Timer1 = 55536

            Set Portb.0
            Waitus 100
            Reset Portb.0


            Return


            راه دقیقش اینه:
            $regfile = "M8def.dat"
            $crystal = 16000000

            Config Portb = Output
            Dim A As Byte

            Config Timer2 = Timer , Prescale = 64
            Enable Interrupts
            Enable Ovf2
            On Ovf2 T
            Timer2 = 231
            Start Timer2


            Do
            If A > 98 Then
            Set Portb.0 : End If
            If A > 99 Then
            Reset Portb.0 : A = 0 : End If

            Loop

            End

            T:
            Timer2 = 231
            Incr A
            Return

            راه دوم همون نظر آقای حبیبیه
            هردو شون رو با پروتئوس امتحان کردم جواب دادن.ولی تا عملی بسته نشه و با اسکوپ ازش مطمئن نشی درست نیست.(البته پروتئوس هم برا خودش یلیه!!! :mrgreen

            برا اینجور کارها هم بهتره از مد PWM تایمر استفاده شه.

            سوالی بود در خدمتیم.
            درد من تنهایی نیست؛ بلكه مرگ ملتی است كه گدایی را قناعت، بی‏عرضگی را صبر، و با تبسمی بر لب این حماقت را حكمت خداوند می‏ نامند! "گاندی"

            به دلیل وجود برخی مشکلات و بی احترامی ها این اکانت رو غیر فعال کردم. همیشه سر بلند باشید.
            بدرود . . .

            دیدگاه


              #7
              پاسخ : کمک برای تولید پالس با بسکام

              با سلام و تشکر از آقای وحید نصیری

              ممنون از راهنماییتون دوست عزیز
              اما میشه برام توضیح بدین که چرا استفاده از تایمر 2 دقیقتره ؟ یعنی با استفاده از تایمر 1 نمیشه به دقت تایمر 2 رسید ؟ مخصوصا برای انجام اینکار ؟
              برای من که در حد حرفه ای نیستم چه نوع اسکوپی رو پیشنهاد میکنین که به کامپیوتر وصل بشه ؟ آیا این کارتهای اسکوپ که به یو اس بی وصل میشن
              در عمل بدرد بخور هستن ؟ چه مدلی بهتره ؟

              نظرتون درباره این برنامه چیه ؟ http://www.virtins.com/page2.html#Instrument یعنی برنامه Multi-Instrument Pro 3.1
              آیا دقت لازم رو برای کارهای معمولی برای ما داره ؟

              ممنون و منتظر جوابتون هستم
              در پناه حق باشید

              دیدگاه


                #8
                پاسخ : کمک برای تولید پالس با بسکام

                منتظر کمک دوستان هستم ...

                دیدگاه


                  #9
                  پاسخ : کمک برای تولید پالس با بسکام

                  با درود . . .
                  ببخشید که دیر رسیدم.جدیدا یه دردسر تازه برام درست شده و نمیدونم چرا تاپیکها و پاسخهای که میفرستم رو یکی پاک میکنه
                  اگه این سایت آموزشیه پس این فیلتر بازیا و سانسور کردنا دیگه چیه؟؟؟

                  ببخشید بریم سر اصل مطلب
                  مسئله ای که راجع به تایمرها هست اینه که هیچ فرقی با هم ندارند و کاملا دقیق هستند.دلیل اینکه میگن تایمر 2 دقیق تره اینه که اولویت وقفه اون بالاتر از همه است.یعنی اگه همه تایمرها با هم در یه لحظه سرریز بشن میکرو اول به اون جواب میده.
                  راجع به برنامه های اسکوپ من تجربه ای ندارم.البته خودم یه نمونه ازش دارم که به کارت صدا وصل میشه اما به دلیل اینکه ممکنمه آسیب بزنه ازش استفاده نمیکنم.
                  درد من تنهایی نیست؛ بلكه مرگ ملتی است كه گدایی را قناعت، بی‏عرضگی را صبر، و با تبسمی بر لب این حماقت را حكمت خداوند می‏ نامند! "گاندی"

                  به دلیل وجود برخی مشکلات و بی احترامی ها این اکانت رو غیر فعال کردم. همیشه سر بلند باشید.
                  بدرود . . .

                  دیدگاه


                    #10
                    پاسخ : کمک برای تولید پالس با بسکام

                    سلام و با تشکر از آقا وحید

                    پس من با تایمر 1 کار میکنم برنامه رو مینویسم اگه به مشکل خوردم باز مزاحم میشم :nerd:

                    دیدگاه

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