اطلاعیه

Collapse
No announcement yet.

تعریف محدوده ای برای fcpu و بدست آوردن fpwm

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

    تعریف محدوده ای برای fcpu و بدست آوردن fpwm

    سلام دوستان من توی یه موردی از پروژم به مشکل برخوردم!توی صورتش گفته که محدوده فرکانس ورودی از 1کیلوهرتز تا 10 کیلوهرتز باشه ولی نمیدونم باید کدشو چط.ری در کدویژن بنویسم!چون قبلا یه فرکانس معمولا داشتیم و در خوده تنظیمات تایمر صفر مقدارشو وارد میکردیم ولی الان چندتا فرکانس بعلاوه چندتا دیوتی سایکل داریم.دوستان ممنون میشم راهنمایی کنید.

    #2
    پاسخ : تعریف محدوده ای برای fcpu و بدست آوردن fpwm

    پروژه چی هست؟؟؟
    منظور از فرکانس ورودی چیه؟؟؟ میخواید یک موج مربعی رو کپچر کنید؟؟؟
    یکم واضح تر بنویسید تا بشه کمک کرد :smile:
    ... و (بدانید) گرفتن تصمیمهاى محکم (براى رسیدن به اهداف بزرگ) با خوش گذرانى و سفرهآ‌هاى رنگین سازگار نیست و چه بسیار که خواب شبانه تصمیمهاى محکم روز را از میان برده و تاریکیآ‌ها، خاطره همتآ‌هاى بلند را از یادها محو کرده است. (نهجآ‌البلاغه، خطبه211)

    امام علی (ع):کسی که به وقت یاری رهبرش در خواب باشد، با لگد دشمنش بیدار می شود (غررالحکم،ص 422)

    دیدگاه


      #3
      پاسخ : تعریف محدوده ای برای fcpu و بدست آوردن fpwm

      گفته با استفاده از codevision برنامه ای بنویسید که بتوان فرکانس (1کیلوهرتز تا10کیلوهرتز) و دیوتی سایکل (5%تا 95%) را توسط یک صفحه کلید 4*4 وارد کرد از تایمر صفر هم باید استفاده کرد.
      خب ما توی قسمت فرکانس مشکل داریم !اگه ممکنه در مورده کدش راهنمایی کنید دوستان .شاید برای خیلیاتون موضوع پیش پاافتاده ای باشه ولی خو من تخصصی در این زمینه ندارم !!!ممنون.

      دیدگاه


        #4
        پاسخ : تعریف محدوده ای برای fcpu و بدست آوردن fpwm

        اگر قراره فقط از تایمر صفر استفاده بشه این رو باید بگم که تایمر 0 قابلیت تغییر فرکانس رو نداره و فقط میشه با اون دیوتی سایکل رو تغییر داد. تنها راه ممکنه استفاده اینه که در رجیستر تنظیمات TCCR0 بیاید و بیت مقسم فرکانس رو تغییر بدید که بازهم بازه دقیق 1 تا 10 کیلوهرتز داده نمیشه.
        اگر میتونید از تایمر 1 استفاده کنید چون در این تایمر هردو قابلیت وجود دارد.
        تنها راه پیشنهادی استفاده از وقفه تایمر صفر هست. یعنی از تایمر صفر و از مد نرمال فقط برای شمارش استفاده کنید. و وقتی که تعداد شمارش ها برابر مقدار تعدادشمارش های مورد نیاز برای یک فرکانس شد، یکی از پایه های خروجی رو صفر یا یک کنه. :smile:
        ... و (بدانید) گرفتن تصمیمهاى محکم (براى رسیدن به اهداف بزرگ) با خوش گذرانى و سفرهآ‌هاى رنگین سازگار نیست و چه بسیار که خواب شبانه تصمیمهاى محکم روز را از میان برده و تاریکیآ‌ها، خاطره همتآ‌هاى بلند را از یادها محو کرده است. (نهجآ‌البلاغه، خطبه211)

        امام علی (ع):کسی که به وقت یاری رهبرش در خواب باشد، با لگد دشمنش بیدار می شود (غررالحکم،ص 422)

        دیدگاه


          #5
          پاسخ : تعریف محدوده ای برای fcpu و بدست آوردن fpwm

          مرسی دوست عزیز خب یه سوال دیگه |!کی تعداد شمارش ها برابر مقدار تعدادشمارش های مورد نیاز برای یک فرکانس میشه؟؟

          دیدگاه


            #6
            پاسخ : تعریف محدوده ای برای fcpu و بدست آوردن fpwm

            خب برای اینکار نیاز دارید براساس فرکانس ورودی تایمر حساب کنید چند شمارش احتیاج است و با استفاده از یک متغیر یه عنوان شمارنده در کد مربوط به رسیدگی وقفه سرریز تایمر 0، و قرار دادن این مقدار، عمل مقایسه برای تولید سیگنال مورد نظر رو انجام بدی. برای اینکه دقتت بالا باشه باید فرکانس کار بالا باشه. به عنوان مثال فرض کنید میکرو در فرکانس 8 مگاهرتز باشه و فرکانس کار تایمر صفر هم، 8 مگاهرتز باشه. یعنی هر شمارش تایمر 0، 125 نانو ثانیه طول میکشه که وقتی در 256 شمارش تایمر 0 ضرب بشه میشه، 32 میکروثانیه. یعنی رزولوشن شما میشه همین 32 میکروثانیه. حالا برای یک فرکانس 1 کیلوهرتز که دورتناوبش میشه 1 میلی ثانیه به 31 شمارش احتیاج دارید و برای 10 کیلوهرتز که دورتناوب 100 میکروثانیه دارید میشه 3 شمارش. یعنی یه متغیر میذارید که وقتی 3 بار وقفه اتفاق افتاد، پایه مربوطه رو صفر یا یک کند که البته این در صورتی هست که از مدل نرمال استفاده کنید که همون طور میبینید اگر بخواید پهنای پالس رو تنظیم کنید هرچه فرکانس بالاتره رزولوشن پایین تر میاید. حال چاره چیست؟؟؟؟
            در این حالت باید از مد Pwm تایمر 0 استفاده کنید و هروقت مقایسه اتفاق افتاد، وقفه فعال شود و از این روقفه برای تعیین میزان سیکل وظیفه استفاده کنید. مثلا تایمر 0 شروع به شمارش میکند و وقتی که به مقدار 30 رسید وقفه مقایسه اتفاق می افته. که میتونه پایه مورد نظر رو صفر یا یک کنه.
            میدونم خیلی توضیحش سخت شد اما امیدوارم متوجه شده باشید و نیاز نباشه کد رو بنویسم. :smile:
            ... و (بدانید) گرفتن تصمیمهاى محکم (براى رسیدن به اهداف بزرگ) با خوش گذرانى و سفرهآ‌هاى رنگین سازگار نیست و چه بسیار که خواب شبانه تصمیمهاى محکم روز را از میان برده و تاریکیآ‌ها، خاطره همتآ‌هاى بلند را از یادها محو کرده است. (نهجآ‌البلاغه، خطبه211)

            امام علی (ع):کسی که به وقت یاری رهبرش در خواب باشد، با لگد دشمنش بیدار می شود (غررالحکم،ص 422)

            دیدگاه

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