اطلاعیه

Collapse
No announcement yet.

بررسی برنامه فرکانس متر f_meter_0

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

    بررسی برنامه فرکانس متر f_meter_0

    با سلام خدمت استاد محترم جناب کی نژاد
    بنده برنامه فرکانس متری که داخل سایت خودتون بارگذاری کرده بودید رو دانلود و مطالعه کردم یکسری سوال برام پیش آمده و قطعا در ادامه خواهد آمد که مطمئنم این سوال جوابها هم برای من و هم برای دیگر علاقمندان مفید خواهد بود.
    اینطور که من متوجه شدم الگوریتم برنامه مذکور بر اساس event counting است یعنی لبه های بالارونده PINC.2 باعث اعمال کلاک و افزایش مقدار TCC0 میشود که بنابراین در یک بازه زمانی یک ثانیه که یک تایمر دیگه وظیفه اندازه گیری اونو داره مقدار تایمر مربوطه قرائت میشه. سوال اول من اینه که آیا برداشت من از این برنامه درسته یا خیر؟
    سوال دیگه ای که داشتم اینه که علت نگارش این خط از برنامه چیست؟ Temp32=Timer32-Temp32
    در ضمن برای اینکه بخواهیم از قابلیت frequency capture تایمر مطابق توضیحی که در شکل 12-14 مربوط به doc8077 آمده استفاده کنیم چه تغییراتی باید در برنامه مذکور بدیم؟
    با تشکر فراوان
    مشخصات من در لینک زیر
    http://www.eca.ir/forum2/index.php?topic=1721.msg698645#msg698645

    www.********

    #2
    پاسخ : بررسی برنامه فرکانس متر f_meter_0

    عملکرد برنامه به این صورت است که با Cascade کردن دو تایمر 16 بیتی، یک شمارنده 32 بیتی با فرمان لبه بالارونده PC2 ایجاد شده است. بعد از هر یک ثانیه، مجموعه این 32 بیت بصورت همزمان Capture می شود و مقدار فعلی از مقدار Capture شده قبلی کم می شود که حاصل فرکانس را نشان می دهد. خط مورد سوال شما در برنامه هم تفاضل مقدار Capture شده فعلی با مقدار قبلی را محاسبه می کند که فرض در این محاسبه این است که تایمر 32 بیتی بیش از یکبار Overflow نشده باشد. در عمل به دلیل 32 بیتی بودن شمارنده، در یک ثانیه نمی تواند بیش از یکبار سرریز اتفاق بیافتد.
    اوژن: به معنای افکننده و شکست دهنده است
    دانایی، توانایی است-Knowledge is POWER
    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

    دیدگاه


      #3
      پاسخ : بررسی برنامه فرکانس متر f_meter_0

      ممنون از پاسختون
      با توجه به 32 بیتی بودن شمارنده مذکور آیا مثلا امکان اعمال تعداد 2 به توان 32 لبه بالارونده در یک ثانیه ( یا حتی نصف این عدد ) به پین مربوطه وجود داره؟ یا محدودیت دیگه ای وجود داره؟
      در ضمن اگر در ثانیه n ام شمارنده سرریز بشه اونوقت آیا امکان اشتباه شدن نتیجه تفاضل وجود نداره؟
      با تشکر
      مشخصات من در لینک زیر
      http://www.eca.ir/forum2/index.php?topic=1721.msg698645#msg698645

      www.********

      دیدگاه


        #4
        پاسخ : بررسی برنامه فرکانس متر f_meter_0

        2 به توان 32 برابر با 4294967296 (بیش از 4 گیگا هرتز) است که برای محدوده مجاز چنین تعداد پالسی امکان اعمال به ورودی را نخواهند داشت. بنابراین در عمل امکان سرریز بیش از یکبار وجود ندارد. در مورد سوال بعدی هم دقیقا متوجه منظور شما نشدم و با ذکر مثال عددی سوال خود را مطرح کنید.
        اوژن: به معنای افکننده و شکست دهنده است
        دانایی، توانایی است-Knowledge is POWER
        برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
        وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
        قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
        اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
        ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

        دیدگاه


          #5
          پاسخ : بررسی برنامه فرکانس متر f_meter_0

          در خصوص سوال بعدی منظور من اینه که با توجه به اینکه پس سررسید یک ثانیه ای مقدار تفاضل محاسبه می گردد و چون مقدار TCC0_CCA و TCC1_CCA ریست (صفر) نمیشه و همینطور با اعمال پالسهای ورودی رو به افزایشه لذا ممکنه که پس از گذشت چندین سررسید یک ثانیه ای , تایمر C0 و C1 به مقدار حداکثر خود برسه و overfolw بشه و عملا برای یک لحظه این امکان وجود داره که چون مقدار قبلی Timer32 (قبل از overflow شد) عدد بزرگی بوده و مقدار فعلی آن (بعد از overflow شدن) عدد کوچکیه ممکنه که نتیجه تفاضل برای یک بار برابر با مقدار فرکانس نشه . البته این حدس منه شایدم اشتباه میکنم
          مشخصات من در لینک زیر
          http://www.eca.ir/forum2/index.php?topic=1721.msg698645#msg698645

          www.********

          دیدگاه


            #6
            پاسخ : بررسی برنامه فرکانس متر f_meter_0

            حتی در صورتی که عدد دوم کوچکتر از عدد اول باشد، تفاضل آنها صحیح خواهد بود. به عنوان مثال اگر مقدار 0x00000000-0xffffffff را حساب کنید، حاصل برابر 1 خواهد شد.
            اوژن: به معنای افکننده و شکست دهنده است
            دانایی، توانایی است-Knowledge is POWER
            برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
            وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
            قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
            اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
            ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

            دیدگاه

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