اطلاعیه

Collapse
No announcement yet.

تایمرها

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

    تایمرها

    سلام
    من دارم از pic18F45K80 استفاده می کنم. می خواستم ببینم برای حساب کردن مقدار اولیه تایمرها فرمولی وجود نداره چون من دیتا شیت بالا پایین کردم فرمولی نداشت برای هیچ یک از تایمرها.
    درباره تایمر 0 یک سوال داشتم .در تنظیمات رجیستر T0CON در بیت 5 دو حالت وجود داره یکی شمارش پالس های پایه T0CKI و یکی دیگه Internal instruction cycle clock می باشد .من منبع کلاکم خارجی و از کریستال 7.3728MHZ استفاده کردم ولی این تایمر فقط این دو حالت داره ایا از این تایمر من نمیتونم با کلاک کریستال خارجی ازش استفاده کنم
    ممنون دوستان

    #2
    پاسخ : تایمرها

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

    دیدگاه


      #3
      پاسخ : تایمرها

      ممنون از پاسختون
      مقدار اولیه رجیستر TMR1L یا TMR1H این دو رجیستر باید مقدار اولیه بدید تا FFFF بشماره و بعد فلگ سر ریز ست بشه
      اکثرا میکروکنترلر ها یه فرمولی دارند که ضریب pll یا پری اسکیلر یا چیزای دیگه اعمال می کنی و مقدار فرکانس(تایم) تو هر بار سر ریز حساب می کند.

      دیدگاه


        #4
        پاسخ : تایمرها

        نوشته اصلی توسط koroush.badi
        ممنون از پاسختون
        مقدار اولیه رجیستر TMR1L یا TMR1H این دو رجیستر باید مقدار اولیه بدید تا FFFF بشماره و بعد فلگ سر ریز ست بشه
        اکثرا میکروکنترلر ها یه فرمولی دارند که ضریب pll یا پری اسکیلر یا چیزای دیگه اعمال می کنی و مقدار فرکانس(تایم) تو هر بار سر ریز حساب می کند.
        فرمول خاصی نداره. شما فرکانس اسیلاتور رو داری. یک چهارمش میشه instruction clock (FOSC/4)l (کلاک دستورالعمل)
        با هر کلاک دستورالعمل، تایمر یک بار افزایش پیدا میکنه. اگر پریسکیلر تعریف شده باشه هر 2، 4، یا 8 کلاک، افزایش پیدا میکنه.

        مثلاً شما کریستالت 16 مگ هست. کلاک دستورالعملت میشه 4 مگ. یعنی سیکل 0.00000025 ثانیه. 250 نانوثانیه.
        فرضاً شما هر 1 میلی ثانیه یک وقفه میخوای.
        کد:
        Tval = 0.001 / 0.00000025 = 4000
        باید اول هر وقفه 61535 = 4000 - 65535 رو تو تایمر بنویسید.

        اگر بخایم براش فرمول بنویسیم اینجوری میشه:

        دیدگاه


          #5
          پاسخ : تایمرها

          ممنون از پاسخ کامل و شفافتون
          من می خوام از I2C استفاده کنم ولی با پروتئوس شبیه سازی می کنم و تو دیباگر I2Cهمش علامت سوال میده لطف می کنید یه نگاه بندازید و راهنماییم کنید کجای کار اشتباه می کنم
          ممنون از شما
          http://cld.persiangig.com/download/rNZjbP/dl

          دیدگاه


            #6
            پاسخ : تایمرها

            نوشته اصلی توسط koroush.badi
            ممنون از پاسخ کامل و شفافتون
            من می خوام از I2C استفاده کنم ولی با پروتئوس شبیه سازی می کنم و تو دیباگر I2Cهمش علامت سوال میده لطف می کنید یه نگاه بندازید و راهنماییم کنید کجای کار اشتباه می کنم
            ممنون از شما
            http://cld.persiangig.com/download/rNZjbP/dl
            شرمنده من با XC8 کار نکردم. پروتیوس هم ورژن 8 ندارم.
            بطور کلی به پروتیوس زیاد هم اعتماد نکنید. در عمل تست کنید. مقاومت های پول پ یادتون نره.

            دیدگاه

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