اطلاعیه

Collapse
No announcement yet.

مشکل با کمبود تایمرها !!!

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

    مشکل با کمبود تایمرها !!!

    درود بر اساتید محترم

    من برای پروژه ای از AtMega64 استفاده می کنم ، تو این پروژه به سه تا PWM مجزا و دو عدد Timer احتیاج دارم .
    هر چند شما بهتر می دونید ولی مگا64 - 4 تا تایمر بیشتر نداره . منتها جایی خوندم که میشه 6 تا خروجی PWM اونم 16 بیتی گرفت ازش :eek: و دوتا 8 بیتی !!!
    فقط نمی دونم چجوری - زمان کم دارم - وگرنه مزاحم نمیشدم و مطالعاتمو بالا می بردم :read:.کلی هم سرچ کردم - چیزی عایدم نشد. :cry:

    و در ضمن من تایمر ها رو یکی برای تولید زمان 10میلی ثانیه برای MMC و یکی برای تولید زمان انتخاب شده توسط کاربر میخام . و PWM هم 8 بیتی میخام همشونو .

    لطفا اساتید یاری کنن . چکاری بهتر پاسخ می ده .

    #2
    پاسخ : مشکل با کمبود تایمرها !!!

    خوب شما میتونید از همون تایمر ها که برای ساختن pwm سخت افزاری روی پین استفاده میکنید. برای ایجاد زمان های دقیق هم استفاده کنید.
    وقتی شما تایمر ها را روی مدی تنظیم میکنید و همچنین برای گرفتن خروجی روی oc بیتهای com را نیز تنظیم میکنید ، اینکار به شما pwm روی پین خروجی میدهد، همزمان با اینکار با تنظیم درست رجیستر TIMSK میتونید وقفه از تایمر بگیرید و به صورت نرم افزاری زمان های دقیق توسط همون تایمرها داشته باشید.

    راه اندازي ماژول nrf24l01p براي codevision (ارتباط بيسيم بين دو ميکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
    کوچ کردن از کدويژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
    نحوه نوشتن اصولي يک لايبرري و درايور نرم افزاري( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
    http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول هاي مختلف توسط اعضاي انجمن
    انشالله به زودي تاپيک ها به روز رساني خواهد شد،

    دیدگاه


      #3
      پاسخ : مشکل با کمبود تایمرها !!!

      مرسی سید .

      منتها نیفتاد . میخام بدونم شما خودت یا دوستان دیگه ای که این تاپیک رو می بینن ، مثالی ندارید ؟
      ممنون میشم - من با کد ویژن کار می کنم - اما مشکلیم نیست اگر بسکام باشه . ممنون .

      دیدگاه


        #4
        پاسخ : مشکل با کمبود تایمرها !!!

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

        منتها نیفتاد . میخام بدونم شما خودت یا دوستان دیگه ای که این تاپیک رو می بینن ، مثالی ندارید ؟
        ممنون میشم - من با کد ویژن کار می کنم - اما مشکلیم نیست اگر بسکام باشه . ممنون .
        شما بهم این جزئیات را بگید ، اگه شد براتون کد سی میزارم:

        1- فرکانس و دیوتی سایکل pwm روی پین خروجی اول

        2- فرکانس و دیوتی سایکل pwm روی پین خروجی دوم

        3- فرکانس و دیوتی سایکل pwm روی پین خروجی سوم

        4- مقدار زمان سنجی اول( پردازنده به اندازه این زمان یکبار کدهای مورد نظر را مکررا اجرا میکند)

        5- مقدار زمان سنجی دوم( پردازنده به اندازه این زمان یکبار کدهای مورد نظر را مکررا اجرا میکند)

        (اگر منظورتون رو درست فهمیده باشم ، با دوتا تایمر هم میشه انجامش داد.)
        راه اندازي ماژول nrf24l01p براي codevision (ارتباط بيسيم بين دو ميکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
        کوچ کردن از کدويژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
        نحوه نوشتن اصولي يک لايبرري و درايور نرم افزاري( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
        http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول هاي مختلف توسط اعضاي انجمن
        انشالله به زودي تاپيک ها به روز رساني خواهد شد،

        دیدگاه


          #5
          پاسخ : مشکل با کمبود تایمرها !!!

          دم شما گرم .

          دیوتی سایکلی نیستن - چون یک PWM قراره DTMF تولید کنه - یکیش صدای ضبط شده روی MMC/SD رو پخش کنه و دیگری صدای ضبط شده روی MMC دوم رو .
          حالا فرقی هم نمیکنه - مثلا اولیشو فرض کنید 50 درصد و دومی رو 60 درصد و سومی 80 درصد یا یه همچین چیزی

          و اما تایمرها - یکیش قراره 10 میلی ثانیه به 10 میلی ثانیه آورفلو بشه و یه تابعی رو فراخونی کنه مثلا به نام FNC(); و دیگری هم قراره یه تایم مثلا 5 میلی ثانیه ای تولید کنه و یه متغییر رو اضافه کنه مثلا i++ ;.

          مرسی سید جان .

          دیدگاه


            #6
            پاسخ : مشکل با کمبود تایمرها !!!

            نوشته اصلی توسط pouyanbargh
            دم شما گرم .

            دیوتی سایکلی نیستن - چون یک PWM قراره DTMF تولید کنه - یکیش صدای ضبط شده روی MMC/SD رو پخش کنه و دیگری صدای ضبط شده روی MMC دوم رو .
            حالا فرقی هم نمیکنه - مثلا اولیشو فرض کنید 50 درصد و دومی رو 60 درصد و سومی 80 درصد یا یه همچین چیزی

            و اما تایمرها - یکیش قراره 10 میلی ثانیه به 10 میلی ثانیه آورفلو بشه و یه تابعی رو فراخونی کنه مثلا به نام FNC(); و دیگری هم قراره یه تایم مثلا 5 میلی ثانیه ای تولید کنه و یه متغییر رو اضافه کنه مثلا i++ ;.

            مرسی سید جان .
            فرکانس pwm ها چقدر باشه؟ باید متغییر باشه؟ (من اطلاعاتم از پخش صدا کمه ، فقط میتونم pwm تو رنج فرکانسی که میخواید با رنج دیوتی سایکل مورد نظر تولید کنم (کلا با آنالوگ زیاد جور نیستم ))
            اون دوتا تایم که مشکلی نداره فقط تکلیف همون pwm ها را مشخص کنید (پین های خروجی از میکرو(دیجیتال) باید چه رفتاری از خودشون بروز کنند( از نظر سرعت تغییر(فرکانس) و نسبت high بودن به کل پریود(دیوتی سایکل) ---> امکان تغییر در این فاکتور ها در بین کار ( هنگام اجرا) وجود دارد یا نه؟(مثلا برای تولید سینوسی باید به طور مداوم دیوتی سایکل تغییر کند(به نسبت دامنه سینوسی))) (اگر این فاکتورها ثابت باشند که خیلی ساده میشه(که فکر نکنم باید ثابت باشند))
            راه اندازي ماژول nrf24l01p براي codevision (ارتباط بيسيم بين دو ميکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
            کوچ کردن از کدويژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
            نحوه نوشتن اصولي يک لايبرري و درايور نرم افزاري( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
            http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول هاي مختلف توسط اعضاي انجمن
            انشالله به زودي تاپيک ها به روز رساني خواهد شد،

            دیدگاه


              #7
              پاسخ : مشکل با کمبود تایمرها !!!

              جواب پست قبلم رو که ندادید ، این برنامه رو نوشتم (تو همون کدویژن) - فایل c. را از لینک زیر دانلود کنید:
              برای مگا 16 نوشتم(مشابه 32)
              درضمن دستورات مورد نظرتون را جای کامنت هایی که گذاشتم بنویسید( همون تابعه و i++ ) (البته نباید تابعه delay داشته باشه و اجراش خیلی طول بکشه).موج های pwm روی پین های OC1A , OC1B , OC2 قرار میگیره . امتحانشم با خودتون (اگه مشکلی بود اطلاع دهید)


              راه اندازي ماژول nrf24l01p براي codevision (ارتباط بيسيم بين دو ميکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
              کوچ کردن از کدويژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
              نحوه نوشتن اصولي يک لايبرري و درايور نرم افزاري( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
              http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول هاي مختلف توسط اعضاي انجمن
              انشالله به زودي تاپيک ها به روز رساني خواهد شد،

              دیدگاه


                #8
                پاسخ : مشکل با کمبود تایمرها !!!

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

                دیدگاه


                  #9
                  پاسخ : مشکل با کمبود تایمرها !!!

                  نوشته اصلی توسط pouyanbargh
                  تشکر سید جون من برم اینو تستش کنم و خبر میدم .
                  فعلا تا همین جا از توجه و زحمتت سپاسگذارم .
                  خواهش میکنم. راستی من اصلا فرصت تست نداشتم الان دوباره نگاه انداختم به کدها ،یه چیز از قلم افتاده:

                  جایی که دستوراتتون رو مینویسید ( i++ و تابعه ) تو همون if ها حتما c1 و c2 رو صفر کنید.
                  راه اندازي ماژول nrf24l01p براي codevision (ارتباط بيسيم بين دو ميکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                  کوچ کردن از کدويژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                  نحوه نوشتن اصولي يک لايبرري و درايور نرم افزاري( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                  http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول هاي مختلف توسط اعضاي انجمن
                  انشالله به زودي تاپيک ها به روز رساني خواهد شد،

                  دیدگاه

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