اطلاعیه

Collapse
No announcement yet.

راهنمایی برای ایجاد تاخیر

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

    راهنمایی برای ایجاد تاخیر

    سلام...
    برای ایجاد یک تاخیر میکرو ثانیه ای با یک متغیر در کدویژن یا اتمل استادیو باید چکار کرد؟از چه تابعی میشه استفاده کرد؟
    تشکر

    #2
    پاسخ : راهنمایی برای ایجاد تاخیر

    نوشته اصلی توسط amin tal
    از چه تابعی میشه استفاده کرد؟
    ;(متغیر)delay_us
    این تابع تو هدرفایل کدویژن هست.

    دیدگاه


      #3
      پاسخ : راهنمایی برای ایجاد تاخیر

      ام من که امتحان کردم تابع تاخیر delay_ms میتونه هم به مقدار یک عدد ثابت و هم به مقدار یک متغیر تاخیر ایجاد کنه اما در کدویژن تابع delay_us فقط میتونه یک عدد ثابت رو بپذیره و برای یک متغیر ارور میده..

      دیدگاه


        #4
        پاسخ : راهنمایی برای ایجاد تاخیر

        سلام :bye
        خب دستور delay رو داخل یه دونه حلقه for بذار...
        سُبُّوحٌ قُدُّوسٌ رَبُّ الْمَلَائِکَهِ وَ الرُّوحِ

        (SMART DESIGN....(POWERFUL & QUICK

        موفقیت اتفاقی نیست......بابای پولدار میخواد

        دیدگاه


          #5
          پاسخ : راهنمایی برای ایجاد تاخیر

          در تکمیل توضیحات دوستمون یه تابع درست کنین که ورودی یک متغیر باشه و به این صورت عمل کنین:

          کد:
          void delay(int d)
          {
          for(;d>0;d--)
          {
          _delay_ms(1);
          }
          }
          Aristar Group - Always And Forever

          دیدگاه


            #6
            پاسخ : راهنمایی برای ایجاد تاخیر

            بسیار ممنونم..متوجه شدم..
            در این صورت من باید تابع delay_us قرار بدم...
            البته با توجه به تاخیر کوچکی (در حد میکرو ثانیه)که من میخوام تولید کنم و فرکانسی حدود 1 مگاهرتز اجرای دستورات خود تابع و حلقه هم زمانبر خواهد بود که شاید تاخیر من درست محاسبه نشه...
            پس من باید فرکانس رو بالاتر ببرم که در اون صورت یک مقدار طراحی پروژه سخت میشه..
            اگه روش دقیقتر هم وجود داره ممنون میشم اونرو هم بگید..
            تشکر

            دیدگاه


              #7
              پاسخ : راهنمایی برای ایجاد تاخیر

              این مورد برای تولید فرکانس مخصوصا دقیق اصلا منطقی نیست و هیچوقت جواب درست نمیده.برای دقت بالا باید از تایمرها استفاده کنین و لزومی به افزایش فرکانس نیست و با فرکانس عمومی 8 مگ هم راحت میتونین درست کنین
              Aristar Group - Always And Forever

              دیدگاه


                #8
                پاسخ : راهنمایی برای ایجاد تاخیر

                با اجازه اساتید.
                میتونی تو یه حلقه از دستور اسمبلی nop استفاده کنی که یه سیکل ماشین زمان میبره و با توجه به یک سیکلی بودن این دستور میتونی راحتتر به delay مورد نظرت برسی

                دیدگاه


                  #9
                  پاسخ : راهنمایی برای ایجاد تاخیر

                  نوشته اصلی توسط amin tal
                  بسیار ممنونم..متوجه شدم..
                  در این صورت من باید تابع delay_us قرار بدم...
                  البته با توجه به تاخیر کوچکی (در حد میکرو ثانیه)که من میخوام تولید کنم و فرکانسی حدود 1 مگاهرتز اجرای دستورات خود تابع و حلقه هم زمانبر خواهد بود که شاید تاخیر من درست محاسبه نشه...
                  پس من باید فرکانس رو بالاتر ببرم که در اون صورت یک مقدار طراحی پروژه سخت میشه..
                  اگه روش دقیقتر هم وجود داره ممنون میشم اونرو هم بگید..
                  تشکر
                  اگه از ()delay_ms استفاده کنی،اما متغیری که میخوای برای تاخیر انتخاب کنی رو با ضرب یا تقسیم قرار بدی و به میکرو ثانیه برسی
                  مثلا (delay_ms (i/3
                  فکر کنم این کار دقیق تره،شدنی که هست
                  یه امتحان بکن

                  دیدگاه


                    #10
                    پاسخ : راهنمایی برای ایجاد تاخیر

                    از همه دوستانی که راهنمایی و همفکری کردند ممنونم...همه این روش ها صحیح هست اما دقت های بدست امده فرق میکنه و باید سنجیده بشه و متاسفانه یا خوشبختانه دقت در پرژه من اهمیت زیادی داره...
                    [
                    نوشته اصلی توسط حسین جباری
                    این مورد برای تولید فرکانس مخصوصا دقیق اصلا منطقی نیست و هیچوقت جواب درست نمیده.برای دقت بالا باید از تایمرها استفاده کنین و لزومی به افزایش فرکانس نیست و با فرکانس عمومی 8 مگ هم راحت میتونین درست کنین
                    استفاده از تایمر ها پالسهای دقیقی رو تولید میکنه اما در میکرو AVR من فک میکنم که در مد pwm این عدد در کمترین حالت روی 32 میکرو ثانیه بتونه پالس ایجاد کنه و کمتر از اون با وقفه ایجاد میشه که نمیدونم در این صورت چقدر دقیقه؟
                    نوشته اصلی توسط parvar
                    اگه از ()delay_ms استفاده کنی،اما متغیری که میخوای برای تاخیر انتخاب کنی رو با ضرب یا تقسیم قرار بدی و به میکرو ثانیه برسی
                    مثلا (delay_ms (i/3
                    فکر کنم این کار دقیق تره،شدنی که هست
                    یه امتحان بکن
                    این روش رو هم امتحان کردم و جواب میده اما متاسفانه اسیلوسکوپ ندارم تا دقتش رو اندازه بگیرم...
                    نوشته اصلی توسط saeiddiod
                    با اجازه اساتید.
                    میتونی تو یه حلقه از دستور اسمبلی nop استفاده کنی که یه سیکل ماشین زمان میبره و با توجه به یک سیکلی بودن این دستور میتونی راحتتر به delay مورد نظرت برسی
                    گمان میکنم این روش خیل دقیق باشه و تابع تاخیر هم فک میکنم از همین عملیات استفاده میکنه..البته به دستورات اسمبلی تسلط ندارم و باید یاد بگیرم..
                    سعی میکنم یک اسیلوسکوپ گیر بیارم و همه روش های فوق رو امتحان کنم تا به نتیجه مطلوب برسم...و نتیجه رو اینجا بزارم..ولی نمیدونم چرا در تابع تاخیر میکرو ثانیه ای نمیتونیم متغیر بیاریم....اگه نشد باید دنبال میکروی دیگه ای باشم...باز هم ممنون میشم اگه نظر یا تجربه ای دارید در اختیار بزارید..
                    تشکر

                    دیدگاه


                      #11
                      پاسخ : راهنمایی برای ایجاد تاخیر

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

                      دیدگاه


                        #12
                        پاسخ : راهنمایی برای ایجاد تاخیر

                        در تکمیل حرف دوستان
                        اگه میخواین فرکانس 1 مگ بسازین با این روش ها نمیشه
                        شما اگه به صورت ممتد هم ی پایه میکرو رو نات کنید بنده با اسکوپ اندازه گرفتم با اتمل استادیو اگه بنویسین فرکانس کریستالتون تقسیم بر 10 میشه ماکزیمم فرکانس خروجی

                        با کریستال 8 مگ تا 800 کیلوهرتز رسید و با 16 مگ تا 1.6 مگ اندازه گیری کردم
                        اشک هایی که پس از هر شکست ریخته میشوند همان عرق هاییست که برای پیروزی ریخته نشده است

                        دیدگاه


                          #13
                          پاسخ : راهنمایی برای ایجاد تاخیر

                          نوشته اصلی توسط saeiddiod
                          من دقیقا متوجه نشدم که این 1میکرو ثانیه ای که میفرمایید برای چه کاری میخواید. اگه به این فکر میکنید که یه چراغ چشمک زن بسازید یا یه مولد فرکانس که خروجی اون یکی از پین های میکرو باشه باید بگم که یه جورایی نمیشه چون میکروکنترلر AVR نمیتونه(یعنی من تا حالا نتونستم).
                          درباره NOP بهت بگم که به اندازه 1سیکل ماشین زمان میبره البته در صورتی که تو مسیر برنامه باشه و میکرو اون رو بخونه و به دستور بعد بره نه اینکه توی حلقه بنویسی و بتونی فرکانس متغیر تا 1مگ داشته باشی.
                          شما تلاشت رو بکن و لطفا جواب رو بهمون بگو
                          اول تشکر میکنم از همه دوستان
                          بنده این میکرو ثانیه رو برای یک فانکشن دیجیتال با دقت بالا میخواستم که این مدار فانکشن هم خودش مکمل یک مدار دیگریست..و لازمه دقت و محاسبه صحیح داده ها در مدار دوم به دقت در مدار اول بستگی داره..
                          همونطوری که شما گفتید از حلقه هم نمیشه استفاده کرد...البته اگر به اسیلوسکوپ دسترسی پیدا کنم حتما امتحان خواهم کرد و نتیجه رو میگم..
                          نوشته اصلی توسط mehran901
                          در تکمیل حرف دوستان
                          اگه میخواین فرکانس 1 مگ بسازین با این روش ها نمیشه
                          شما اگه به صورت ممتد هم ی پایه میکرو رو نات کنید بنده با اسکوپ اندازه گرفتم با اتمل استادیو اگه بنویسین فرکانس کریستالتون تقسیم بر 10 میشه ماکزیمم فرکانس خروجی

                          با کریستال 8 مگ تا 800 کیلوهرتز رسید و با 16 مگ تا 1.6 مگ اندازه گیری کردم
                          ممنونم از راهنماییتون....دقیقا متوجه نشدم برنامتون به چه صورت بوده؟
                          یعنی شما میفرمایید که هر دستور در یک سیکل ثانیه انجام میشه مثلا دستور not شدن پایه ها با فرکانس 1 مگا هرتز اجرا میشه اما خود پایه ها در 10 سیکل نات میشن؟
                          راستی اگر از خانواده avr نتونستنم استفاده کنم به نظرتون سمت چه میکرویی برم؟
                          تشکر

                          دیدگاه


                            #14
                            پاسخ : راهنمایی برای ایجاد تاخیر

                            نوشته اصلی توسط amin tal
                            راستی اگر از خانواده avr نتونستنم استفاده کنم به نظرتون سمت چه میکرویی برم؟
                            XMEGA و ARM

                            دیدگاه


                              #15
                              پاسخ : راهنمایی برای ایجاد تاخیر

                              بعد نهایت فرکانس و پالس تولیدی هر کدومشون چقدر هست؟

                              دیدگاه

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