اطلاعیه

Collapse
No announcement yet.

اندازه گیری پهنای پالس (بسکام)

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

    اندازه گیری پهنای پالس (بسکام)

    سلام دوستان :nerd:
    می خواستم پهنای پالس را اندازه گیری کنم ولی هر کاری می کنم نمیشه
    کد زیر رو گذاشتم اگه کسی مشکلشو می دونه ممنون میشم راهنماییم کنه
    کد:
    [left]
    $regfile = "m32def.DAT"
    $crystal = 16000000
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , E = Portb.2 , Rs = Portb.0 , Db4 = Portb.3 , Db5 = Portb.4 , Db6 = Portb.5 , Db7 = Portb.6
    Dim T As Long 
    Enable Int0
    Enable Int1
    Enable Interrupts
    Config Int0 = Falling
    Config Int1 = Rising
    Config Timer0 = Timer , Prescale = 1
    
    On Int1 One
    On Int0 Two
    
    One:
    Timer0 = 0
    Start Timer1
    Return
    Two:
    
    Stop Timer0
    T = T + Timer0
    
    Locate 1 , 1
    Lcd T
    Return
    [/left]

    #2
    پاسخ : اندازه گیری پهنای پالس (بسکام)

    ممکنه پهنای پالست اینقد زیاده که تایمرت تا زمانی که لبه پایین رونده بیاد سریز میشه برای همین عدد نشون داده شده درست نباشه
    راستی الان دقیقا کجای این برنامه مشکل داری :mrgreen: یعنی عددی که نشون داده میشه درست نیست یا اصلا lcd چیزی نشون نمیده یا . . .

    راستی :surprised: شما که timer1 رو اصلا کانفیگ نکردی چطوری تو زیربرنامه one اون رو استارت کردی و ضمنا این برنامه شما مشکوک هستش اصلا پهنای پالس رو نشون نمیده چرا ؟ چون شما اومدی با این دستور
    کد:
    T = T + Timer0
    هی مقداری که از timer0 برداشت می کنی رو جمع می کنی که این روال همینطوری ادامه داره و هیچ معدلی از این مقدار گرفته نمیشه چرا؟ oo:
    بعد گفتی همون t روی lcd نمایش داده بشه که t اصلا واحدش زمان نیست و باید با توجه به فرکانس کاری تایمر تبدیل بشه
    خداوند بی نهایت است اما به قدر نیاز تو فرود می آید ، به قدر آرزوی تو گسترده می شود و به قدر ایمان تو کارگشاست.
    [hr]

    دیدگاه


      #3
      پاسخ : اندازه گیری پهنای پالس (بسکام)

      شما که کل برنامه و زیر سوال بردی
      من اومدم دو اینتراپ فعال کردم
      یکی رو لبه بالا و یکی رو لبه پایین
      فکر نمی کنم دیگه نیاز به کانفیگ تایمر باشه
      وقتی لبه بالاس اینتراپ تایمر و صفر میکنه و استارت می کنه
      وقتی لبه پایین باشه اینتراپ تایمرو متوقف می کنه و مقدار شو می خونه
      ولی مقدار تایمر چرت و پرته

      دیدگاه


        #4
        پاسخ : اندازه گیری پهنای پالس (بسکام)

        نوشته اصلی توسط a_l_i_r_e_z_a
        شما که کل برنامه و زیر سوال بردی
        من اومدم دو اینتراپ فعال کردم
        یکی رو لبه بالا و یکی رو لبه پایین
        فکر نمی کنم دیگه نیاز به کانفیگ تایمر باشه
        وقتی لبه بالاس اینتراپ تایمر و صفر میکنه و استارت می کنه
        وقتی لبه پایین باشه اینتراپ تایمرو متوقف می کنه و مقدار شو می خونه
        ولی مقدار تایمر چرت و پرته
        میگم که این چرت و پرت نشون دادن چند تا دلیل ممکنه داشته باشه :
        نوشته اصلی توسط a_l_i_r_e_z_a
        فکر نمی کنم دیگه نیاز به کانفیگ تایمر باشه
        :eek:
        1 - شما از هر تایمر استفاده می کنی حتما و حتما باید کنفیگش کنی
        نوشته اصلی توسط a_l_i_r_e_z_a
        وقتی لبه بالاس اینتراپ تایمر و صفر میکنه و استارت می کنه
        وقتی لبه پایین باشه اینتراپ تایمرو متوقف می کنه و مقدار شو می خونه
        2- خب وقتی سیگنالت رو به دو تا اینتراپت ها میدی و می خوایی پهنای پاس رو حساب کنی باید از یه تایمر استفاده کنی نه دوتا یعنی با اومدن لبه بالا رونده باید تایمر 0 استارت بشه و با اومدن لبه پایین رونده همون تایمر استپ بشه نه تایمر دیگه ای که شما اینجا این کار رو نکردی oo:
        3-شما بهتره از تایمر 1 استفاده کنی که 16 بیتی هستش و دیرتر سرریز میشه یا اصلا اگه میدونی پهنای پالست اونقد زیاده که ممکنه تایمر سرریز بشه باید از زیرروال ovf هم استفاده کنی
        4- اون دستور
        کد:
        T = T + Timer0
        نمی دونم دقیقا اینجا چه نقشی بازی می کنه اگه تمام موارد فوق رو هم رعایت می کردی باز این دستور خروجی برنامت رو نامعتبر یا همون چرت و پرت می کنه
        ضمنن شما مقدار پهنای پالس رو به واحد زمان می خوایی دیگه خب همونطور که میدونی عددی که تایمر بهت میده واحدش زمان نیست در واقع مقداری هست که تایمر با یک فرکانس خاصی شمارش کرده که باید اون رو هم تبدیل کنی
        خداوند بی نهایت است اما به قدر نیاز تو فرود می آید ، به قدر آرزوی تو گسترده می شود و به قدر ایمان تو کارگشاست.
        [hr]

        دیدگاه


          #5
          پاسخ : اندازه گیری پهنای پالس (بسکام)

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

          دیدگاه


            #6
            پاسخ : اندازه گیری پهنای پالس (بسکام)

            یه برنامه نمونه برات می نویسم میزارم یه نگاهی بهش بکن شاید بهت کمک کنه
            سعی می کنم تا جاییکه میشه ساده بنویسم
            در اسرع وقت برات می زارمش :smile:
            خداوند بی نهایت است اما به قدر نیاز تو فرود می آید ، به قدر آرزوی تو گسترده می شود و به قدر ایمان تو کارگشاست.
            [hr]

            دیدگاه


              #7
              پاسخ : اندازه گیری پهنای پالس (بسکام)

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

              دیدگاه


                #8
                پاسخ : اندازه گیری پهنای پالس (بسکام)

                یکی نیست یه کمکی کنه :(

                دیدگاه


                  #9
                  پاسخ : اندازه گیری پهنای پالس (بسکام)

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

                  دیدگاه

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