اطلاعیه

Collapse
No announcement yet.

دقتdelay در میکرو

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

    دقتdelay در میکرو

    با سلام
    من در ابتدا میکرو را با فرکانس 16 مگا هرتز و با کریستال خارجی را اندازی کردم و قرار بود چند تا نوشته را روی lcd نشان بده و سه ثانیه ثابت روی آن باشه(یعنی بعد از دستور نوشتن روی lcd 3 ثانیه تاخیر دادم) که درست بود ولی وقتی به دلایلی فرکانس کاریم را 3 مگا هرتز و با کریستال خارجی کردم نوشته ها روی lcd شاید تا 5 ثانیه و بیشتر نمایش داده می شود و حتی فرکانس pwm که طبق محاسبات قرار بود 5 مگا هرتز بشه شده 2مگا هرتز می شود بگویید مشکل از کجاست
    یکی میگفت خدا چرا به حرفای ما گوش نمیده گفتم
    هان ای صنما،دل یک دله کن
    گر سر ندهم ،وانگه گله کن

    #2
    پاسخ : دقتdelay در میکرو

    خب با تغییر کریستال فرکانسهای دیگه هم تغییر میکنه. شما باید کمپایلر رو از این تغییرگاه کنید. مثلا توی کدویژن باید این کلاک جدید رو تو ویزاردش بگذارید.

    اما جدای همه ی این بحثها دستور delay دقت چندان خوبی نداره چون نمی تونه تمام زمانها رو پوشش بده. برای زمان سازی بهتره ما یه تامیر میکرو رو به عنوان زمان مرجع تعریف کنیم. مثلا اگه کوچکترین زمانی که نیاز داریم یک میلی ثانیه باشه می تونیم تایمر رو روی یک میلی ثانیه قرار بدیم و همه ی زمانهای مورد نیاز رو با روتین وقفه ی همین تایمر بسازیم.
    با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

    دیدگاه


      #3
      پاسخ : دقتdelay در میکرو

      بهتر اینه که اول برنامه فرکانس کار رو مشخص کنی :
      . #define XTAL 3000000

      توی تنظیمات کمپایلر هم نوع میکرو و فرکانسش رو مشخص کن. البته اگر با ویزارد شروع کنی این تنظیم رو خودش انجام میده.
      It's not the Strongest that Survive, Nor the Most Intelligence, But the ones Most Responsive to Change
      گونه هایی که شانس بقا دارند ، نه قویترین هستند و نه باهوشترین بلکه آنهایی هستند که بیشترین آمادگی تغییرات را دارند !
      چارلز داروین - بنیانگذار نظریه تکامل

      دیدگاه


        #4
        پاسخ : دقتdelay در میکرو

        سلام .............

        خوبید جناب گلستانه .. (galgolak سابق ..) ..

        مطلبی که جناب ahmadmn فرمودن درسته .. همونطور که میدونید تغییر فرکانس کاری میکرو روی مدهای تایمر هم تاثیر میذاره .. الان شما از مد PWM استفاده کردید (یا سریع یا تحیح فاز ..) و طبق رابطه ای که برای فرکانس کاری این مد وجود داره CLKi/o تاثیر مستقیم در نحوه ی کار کرد تایمرتون داره .. از طرفی اگه شما تنظیمات CodeWizaed برای این مد رو مشاهده کنید متوجه صحبت من میشید که اعدادی که بر حسب Prescaler و فرکانس کاری میکرو نوشته شده کاملا این مطلب رو مشخص میکنه .. پس باید انتظار داشته باشید که Duty Cycle پالس خروجیتون برای کریستال خارجی یک مقدار باشه و برای اسیلاتور داخلی هم یک مقدار دیگه که این امر کاملا طبیعیه ..

        در مورد دستور Delay که از کتابخونه ی delay.h فراخونی شده باید به این نکته توجه کنید که از نظر سینتکس با چند خط کد NOP نوشته شده به این معنا که در زمان delay سیستم MCU در حال پردازش و خوندن خطوط برنامه هست و در نتیجه در این زمان دیگه میکرو نمیتونه فعالیت جانبی دیگه ای انجام بده اما از نظر زمانبندی برای موارد معمولی که اتفقا کار شما هم جزءی از اونها هست (منظورم کار های روتینه ..) به مشکل خاصی بر نمیخوره و میشه روش حساب کرد .. اما مزیت مهم تایمر نسبت به دستور delay اینه که شما در Initialization تایمر میتونید به واسطه ی وقفه ای بودن؛ دستورات جانبی دیگه رو هم اجرا کنید که در استفاده از delay از این امکان برخوردار نیستید .. موفق باشید ..


        دوستان! مدتی کمتر به سایت میام ..

        دیدگاه


          #5
          پاسخ : دقتdelay در میکرو

          با سلام خدمت همه مخصوصا دوست عزیز خودم حسام الدین(شمشیر دین (معنی اسمت هست))
          با عرض پوزش من هر سه تا تایمرم را برای pwm دارم استفاده می کنم و نمی توانم از آن برای کار دیگری استفاده کنم می شود راه دقیق دیگری مثل همین پیشنهاد کنید
          یکی میگفت خدا چرا به حرفای ما گوش نمیده گفتم
          هان ای صنما،دل یک دله کن
          گر سر ندهم ،وانگه گله کن

          دیدگاه


            #6
            پاسخ : دقتdelay در میکرو

            راستی یادم رفت من برای تغییر فرکانس در دوباره در cod wizard رفته و در همان قسمتchip کلاک را تغییر می دهم و دوباره برنامه را می نویسم پس از این بابت مطمئن باشد که ایرادی ندارد
            یکی میگفت خدا چرا به حرفای ما گوش نمیده گفتم
            هان ای صنما،دل یک دله کن
            گر سر ندهم ،وانگه گله کن

            دیدگاه


              #7
              پاسخ : دقتdelay در میکرو

              سلام .............

              جناب گلستانه منظور دقیقتون رو متوجه نشدم .. ممکنه دقیق بفرمایید مشکلتون چیه؟ ممنون ..
              دوستان! مدتی کمتر به سایت میام ..

              دیدگاه


                #8
                پاسخ : دقتdelay در میکرو

                نوشته اصلی توسط حسام الدین
                سلام .............

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

                دیدگاه


                  #9
                  پاسخ : دقتdelay در میکرو

                  شما می تونید از کانالهای A و B در PWMآ‌استفاده کنید تا تایمرتون آزاد بشه. مثلا ATmega48 دارای 3 تایمر/کانتر است و 6 کانال PWMآ‌مجزا میشه باهاش درست کرد.
                  با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

                  دیدگاه


                    #10
                    پاسخ : دقتdelay در میکرو

                    سلام .................

                    راهی که جناب ahmadmn فرمودن راه خوبیه .. با اون موافقم .. اما اگه نخواستید مدارتون رو عوض کنید (جون میدونم که احتمالا مدار رو بستید ..) میتونید از تایمر خارجی استفاده کنید منتهی به شرطی که کلاکش رو از یه پایه ی میکرو بگیرید .. با این کار فکر کنم مشکلتون با delay هم برطرف بشه .. موفق باشید ..
                    دوستان! مدتی کمتر به سایت میام ..

                    دیدگاه

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