اطلاعیه

Collapse
No announcement yet.

RTOS with STM8S

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

    RTOS with STM8S

    سلام دوستان ، من میخوام زمان واقعی رو با میکروکنترلر stm8s003f3 اندازه گیری کنم برای لینکار از کریستا ۱۱.۰۵۹۲ مگاهرتز استفاده کردم و تنظیمات تایمر دو
    هم به این صورت هست:
    timer2 precaler:1024
    Timer2 period: 108
    طبق این تنظیمات وقفه تایمر باید هر ۱ میلی ثانیه اتفاق بیوفته ولی هر دو دقیقه تقریبا ۱ ثانیه اختلاف داره.
    به نظرتون مشکل از کجاست؟؟

    #2
    پاسخ : RTOS with STM8S

    نوشته اصلی توسط RAMONA نمایش پست ها
    سلام دوستان ، من میخوام زمان واقعی رو با میکروکنترلر stm8s003f3 اندازه گیری کنم برای لینکار از کریستا ۱۱.۰۵۹۲ مگاهرتز استفاده کردم و تنظیمات تایمر دو
    هم به این صورت هست:
    timer2 precaler:1024
    Timer2 period: 108
    طبق این تنظیمات وقفه تایمر باید هر ۱ میلی ثانیه اتفاق بیوفته ولی هر دو دقیقه تقریبا ۱ ثانیه اختلاف داره.
    به نظرتون مشکل از کجاست؟؟
    با سلام .
    اکر فرکانس 11095200 هرتز رو تقسیم بر 1024 کنیم میشه 10800 هرتز اگر معکوس کنیم ( زمان پریود موج محاسبه میشه) که ضرب در 108 میشه 0.01 ثانیه یا 10 میلی ثانیه .اینجوری که من حساب میکنم وقفه هر 10 میلی ثانیه اجرا میشه.
    ممکنه تفاوت 1 ثانیه بابت تلرانس کریستال یا تغیرات دما باشه. شما حدود 1 درصد خطا داری اگه 1 ثانیه اضافه است کانتر رو بزار روی 107 اگه 1 ثانیه کمه بزار روی 109 شاید مشکل حل بشه .
    جدیدترین ویرایش توسط hossein_10; ۱۲:۴۷ ۱۳۹۷/۰۸/۲۲.

    دیدگاه


      #3
      پاسخ : RTOS with STM8S

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

      دیدگاه


        #4
        پاسخ : RTOS with STM8S

        نوشته اصلی توسط RAMONA نمایش پست ها
        ممنون جناب ، میتونم به این صورت کالیبرش کنم فقط امکان داره
        که بعدا توی شرایط دمایی مختلف دوباره بهم بریزه ؟؟ در مورد
        استفاده از خازن تریمر چی آیا کارساز هست؟
        معمولا کریستال ها رو توی پکیج خلا قرار میدادن ( الان رو دیگه نمیدونم ) به خاطر اینکه تغیرات دما و فشار کمترین اثر رو روش داشته باشه . تاثیر دما رو که نمیدونم چقدره به کیفیت ساخت کریستال
        بستگی داره . ولی بهترین کار اینه که امتحان کنی .

        دیدگاه


          #5
          پاسخ : RTOS with STM8S

          نوشته اصلی توسط hossein_10 نمایش پست ها
          معمولا کریستال ها رو توی پکیج خلا قرار میدادن ( الان رو دیگه نمیدونم ) به خاطر اینکه تغیرات دما و فشار کمترین اثر رو روش داشته باشه . تاثیر دما رو که نمیدونم چقدره به کیفیت ساخت کریستال
          بستگی داره . ولی بهترین کار اینه که امتحان کنی .
          آقا ممنون، من timer period رو گذاشتم روی ۱۰۷ و به شدت
          دقیق شد. توی یه مقاله ای که سایت st گذاشته بود نوشته بود
          یکی از راه هایی که میتونید به زمان دقیق برسید استفاده از
          Beeper هستش. به این صورت که پین خروجی بیپر رو وصل
          کنید به یه ورودی و با استفاده از وقفه خارجی زمان دقیق رو
          محاسبه کنید. یه روش دیگه استفاده از AWU بود و LSI ...
          جدیدترین ویرایش توسط RAMONA; ۱۶:۵۲ ۱۳۹۷/۰۸/۲۳.

          دیدگاه


            #6
            پاسخ : RTOS with STM8S

            البته من توی stm32 این رو دیدم که وقتی شما مقداری برای یه کانتر یا پرسکالر وارد میکنی به این علت که اون مقدار هیچوقت نباید 0 باشه ( مثلا اگر قرار باشه بعد از اون تعداد شمارش وقفه بده که نمیشه 0 باشه)میکرو اون رو به طور خودکار 1 عدد اضافه میکنه .
            شاید توی اون میکرو stm 8 ;که شما استفاده کردی این موضوع صحت داشته باشه در نتیجه اون 108 که وارد کرده بودی شده بود 109 الان که گذاشتی روی 107 احتمالا تازه مقدار درست 108 داره اعمال میشه . این که گفتی به شدت دقیق شد ظن به اینطرف رفت . حتما به رفرنس میکرو مراجعه کن و تاتوی این قضیه رو در بیار . تا احیانا برای موارد بعدی دچار درد سر نشی.اگر هم نتیجه رو بگی که دیگه عالیه.

            دیدگاه


              #7
              پاسخ : RTOS with STM8S

              نوشته اصلی توسط hossein_10 نمایش پست ها
              البته من توی stm32 این رو دیدم که وقتی شما مقداری برای یه کانتر یا پرسکالر وارد میکنی به این علت که اون مقدار هیچوقت نباید 0 باشه ( مثلا اگر قرار باشه بعد از اون تعداد شمارش وقفه بده که نمیشه 0 باشه)میکرو اون رو به طور خودکار 1 عدد اضافه میکنه .
              شاید توی اون میکرو stm 8 ;که شما استفاده کردی این موضوع صحت داشته باشه در نتیجه اون 108 که وارد کرده بودی شده بود 109 الان که گذاشتی روی 107 احتمالا تازه مقدار درست 108 داره اعمال میشه . این که گفتی به شدت دقیق شد ظن به اینطرف رفت . حتما به رفرنس میکرو مراجعه کن و تاتوی این قضیه رو در بیار . تا احیانا برای موارد بعدی دچار درد سر نشی.اگر هم نتیجه رو بگی که دیگه عالیه.
              با سلام ، مقدار Auto reload تایمر داخل دو رجیستر به نام های
              ARRL و ARRH ذخیره میشه و مقدار پرسکالر داخل رجیستر
              PSCR نکته ای که هست اینه که تمام رجیسترهای کنترلی
              تایمرها که برای تایمر دو شامل ۲۱ رجیستر میشه. مقدار
              Reser status برابر 0x00 هستش به جز رجیسترهای
              Auto reload یعنی ARRH و ARRL که مقدار reset status
              در اونها برابر 0xFF هستش. حالا ربط این قضیه به فرمایش شمارو
              حقیقتا نمیدونم فقط وقتی که نگاهی به رجیستر مپ انداختم
              این مساله مشهود بود. با تشکر....

              دیدگاه

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