اطلاعیه

Collapse
No announcement yet.

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

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

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

    سلام من می خوام یه پالس با فرکانس مشخص تولید کنم
    این کد برنامه
    کد:
     $regfile = "M8def.dat"
       $crystal = 8000000
       Config Portb = Output
       Dim A As Long
       Config Timer2 = Timer , Prescale = 1024
       Enable Interrupts
       Enable Ovf2
       On Ovf2 T
       Timer2 = 0
       Start Timer2
         Do
         Loop
    End
       T:
       Incr A
       If A > 5 Then
       Toggle Portb.0 : A = 0 : End If
       Return
    من هر چی منابع رو خوندم درست متوجه نشدم
    [glow=red,2,300]مثلا برای تولید 5 کیلو هرتز باید این مقادیر Prescale , timer و مقدار شمارنده A رو چی بزارم [/glow]
    این جوری که من از کتاب آقای کاهه متوجه شدم چون از تایمر 2 دارم استفاده میکنم تایمر تا 65535 می تونه باشه
    فرکانس کاری من 8 مگا هرتزه پس داریم
    8000000/(1024*65535) = 0.1192
    این عدد به دست آمده دقیقا چی هست و چه طوری باید به 5 کیلوهرتر برسم
    معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

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

    هر 1/8000000ثانیه شمارنده تایمر شما به اندازه یک عدد افزایش میابد تا زمانی که به 65535 برسد اگر Prescale شما برابر 1 باشد برنامه به روتین وقفه می رود وگرنه به اندازه Prescale شما تایمر پر میشود . مثلا اگر Prescale شما برابر 1024 باشد تایمر 1024 بار 65535 را میشمارد بعد به برنامه وقفه پرش میکند در برنامه شما داریم:
    65535*1024=67107840 درنتیجه : 67107840/8000000=8.4 یعنی بعد از 8.4 ثانیه برنامه وقفه اجرا میشود!!! که در برنامه شما بعد از اینکه a برابر 6 شد پایه ها عمل میکنند یعنی:6*8.4=50.4 ثانیه !!!!!!
    شما باید Prescale رو کم کنید و در روتین وقفه به تایمر مقدار مناسب بدهید.

    دیدگاه


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

      راستی اگه اشتباه نکنم تایمر2 هشت بیتی هست شما باید از تایمر 1 که 16 بیتی است استفاده کنید

      دیدگاه


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

        نوشته اصلی توسط esmaeil21
        هر 1/8000000ثانیه شمارنده تایمر شما به اندازه یک عدد افزایش میابد تا زمانی که به 65535 برسد اگر Prescale شما برابر 1 باشد برنامه به روتین وقفه می رود وگرنه به اندازه Prescale شما تایمر پر میشود . مثلا اگر Prescale شما برابر 1024 باشد تایمر 1024 بار 65535 را میشمارد بعد به برنامه وقفه پرش میکند در برنامه شما داریم:
        65535*1024=67107840 درنتیجه : 67107840/8000000=8.4 یعنی بعد از 8.4 ثانیه برنامه وقفه اجرا میشود!!! که در برنامه شما بعد از اینکه a برابر 6 شد پایه ها عمل میکنند یعنی:6*8.4=50.4 ثانیه !!!!!!
        شما باید Prescale رو کم کنید و در روتین وقفه به تایمر مقدار مناسب بدهید.

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

        دیدگاه


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

          شما Prescale برابر 8 قرار بدید و از تایمر1 استفاده کنید و در هر باری که برنامه وقفه ایجاد میشود تایمر1 را برابر
          100-65536 که برابر 65436 است کنید(timer1=65436) . بعد از هر1/10000 ثانیه وقفه ایجاد میشود و شما میتوانید پایه مورد نظر را تاگل کنید.(اون دستور if هم برش دارید)
          اگر هم از تایمر یک بایتی استفاده کنید عدد ما برابر 100-255 =155 میشود

          دیدگاه


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

            نمیشه با تایمر 1 به 5 کیلو رسید برو رو تایمر 0 یا 2 کا تا 255 هستش
            این طوری میتونی تو هر ثانیه یک پین رو 10000 بار تغیر وضعیت بدی
            اگه تایمرت 0تا 255 باشه در فرکانس 8 مگا هرتز
            8000000/256=31250
            بار به وقفه برخورد میکنی شما میخوای تو هر ثانیه 10000 بار یک پایه میکرو رو تاگل کنی یا تغیر وضعیت بدی
            شما اگه یه متغیری تعریف کنی که در هر 3 بار مقفه یک بار پایه میکرو تو تغیر وضعیت بده تقریبا به فرکانس 5 کیلو میرسی
            نمیدونم تونستم توضیح بدم یا نه :cry:
            [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

            دیدگاه


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

              نوشته اصلی توسط حامد رحیمی
              نمیشه با تایمر 1 به 5 کیلو رسید برو رو تایمر 0 یا 2 کا تا 255 هستش
              این طوری میتونی تو هر ثانیه یک پین رو 10000 بار تغیر وضعیت بدی
              اگه تایمرت 0تا 255 باشه در فرکانس 8 مگا هرتز
              8000000/256=31250
              بار به وقفه برخورد میکنی شما میخوای تو هر ثانیه 10000 بار یک پایه میکرو رو تاگل کنی یا تغیر وضعیت بدی
              شما اگه یه متغیری تعریف کنی که در هر 3 بار مقفه یک بار پایه میکرو تو تغیر وضعیت بده تقریبا به فرکانس 5 کیلو میرسی
              نمیدونم تونستم توضیح بدم یا نه :cry:
              [glow=red,2,300]آقا دستتون درد نکنه من واقعا نمی تونم بفهمم ارتباط این اعداد رو بفهمم میشه فرمولش رو به فارسی مثلا برای تولید 1 کیلو هرتز بگید که من از روی اون بقیه رو حساب کنم [/glow]
              معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

              دیدگاه


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

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

                دیدگاه


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

                  از این بهتر بلد نیستم به خدار :cry2:
                  [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                  دیدگاه


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

                    عزیزم با میتونی با هر تایمری که دلت خواست به 1 مگاهتز هم برسی! گفته های این دوستمون درسته
                    نوشته اصلی توسط esmaeil21
                    شما Prescale برابر 8 قرار بدید و از تایمر1 استفاده کنید و در هر باری که برنامه وقفه ایجاد میشود تایمر1 را برابر
                    100-65536 که برابر 65436 است کنید(timer1=65436) . بعد از هر1/10000 ثانیه وقفه ایجاد میشود و شما میتوانید پایه مورد نظر را تاگل کنید.(اون دستور if هم برش دارید)
                    اگر هم از تایمر یک بایتی استفاده کنید عدد ما برابر 100-255 =155 میشود
                    در این روش شما در واقع به جای اینکه بیاین در روتین وقفه تایمر مقدار تایمر رو صفر کنی تا از اول بشماره میاید مقدار 65436 رو بهش میدید تا از این عدد تا 65536 بشماره (یعنی 100 واحد) و وقتی فرکانس میکرو 8 مگ باشه و پراسکیل رو 8 بزارید شمردن 100 واحد برای تایمر 0.0001 ثانیه طول میکشه
                    و وقتی هر بار تو روتین وقفه پین میکرو رو توگل کنید یک موج با فرکانس 5 کیلو هتز خواهید داشت

                    دیدگاه


                      #11
                      پاسخ : تولید پالس -بسکام -

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

                      دیدگاه


                        #12
                        پاسخ : تولید پالس -بسکام -

                        [code=vb]$regfile = "M8def.dat"
                        $crystal = 8000000
                        Config Portb = Output

                        Config Timer2 = Timer , Prescale = 8
                        Enable Interrupts
                        Enable Timer2
                        Enable Ovf2
                        On Ovf2 T
                        Portb.0 = 0
                        Stop Timer2
                        Timer2 = 155
                        Start Timer2

                        Do

                        Loop
                        End
                        T:
                        Stop Timer2
                        Timer2 = 155
                        Start Timer2
                        Toggle Portb.0
                        Return[/code]

                        دیدگاه

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