اطلاعیه

Collapse
No announcement yet.

مشکل در زمان بندی؟!

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

    مشکل در زمان بندی؟!

    من برنامه رو نوشتم.ولی حالا یه مشکل دارم.من 3 ثانیه فاصله زمانی تأخیر بین هر تغییر در خروجی ها می خوام.برای این کار از یه تابع تأخیر که متغیر X رو تا 33000 * 3 هزار میشماره استفاده کردم.اما وقتی با PROTEOUS شبیه سازی می کنیم نتیجه ای که می گیرم، خیلی کمتر از 3 ثانیه هستش؟! کامپایلری که استفاده کردم خود برنامه FRANKLIN32 هستش یعنی از خروجی خودش فایل HEX رو بر می دارم. ولی خوب تو شبیه سازی با زمان مشکل دارم!! به نظرتون از چی می تونه باشه؟در ضمن جهت اطلاع فرکانس کاری میکرو 8051 هم 11.059 مگا هرتز گرفتم.
    BNTSTBNT

    #2
    مشکل در زمان بندی؟!

    سلام . خوبی دوست عزیز ؟
    آقا زمان بندی های پروتئوس اگه از بیرون بخواهی بهش نگاه کنی دقیق نیست . منظورم اینه که مثلا اگه یه فرکانس سنج درست کنی ، محاسباتی که انجام میدی برای بدست اوردن یه فرکانس بعدش اگه اون رو توی پروتئوس شبیه سازی کنی چون خود کلاک سیگنال ژنراتور و کلاک میکرو رو خود پروتئوس داره شبیه سازی میکنه برنامه ات مثل ساعت شبیه سازی میشه .
    ولی زمانی که می خواهی بگی 3 ثانیه به ساعت خودت برنامه متوقف باشه یه صبر کنه فکر نمیکنم نتیجه درستی بگیرید . باز دوستانی که اطلاعات بیشتری دارن کمک کنن .
    موفق باشید .
    شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ‌ي جهاد فيآ‌سبيلآ‌الله.
    هجرت، هجرت از سنگينيآ‌هاست و جاذبهآ‌هايي كه تو را به خاك ميآ‌چسباند.
    چكمهآ‌هايت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت كن.

    دیدگاه


      #3
      مشکل در زمان بندی؟!

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

      دیدگاه


        #4
        ساعت

        اگه منظورتون همون ساعتی هستش که در کنار دکمه های play , puase و اینا در پائین صفحه شبیه سازی هستش، باید بگم از رو همون من میگم که زمان بندیم مشکل داره!! یعنی زمانی که اون نشون میده وقتی اولین تغییر ایجاد میشه خیلی کمتر از 3 ثانیه هستش.همین مشکل تو سایر قسمت هاش هم هستش.در ضمن از پروتئوس 6.9 استفاده می کنم.
        در ضمن باور کنین من اینجا رو ول نکردم!! آرزوی موفقیت برای تمام دوستان عضو دارم.هممون دست به دست هم این سایت رو بهترینش مکنیم.ولی خواهشن از بحث و گفتن این جور حرفا در این قسمت ها پرهیز کنیم، وگرنه مدتی بعد، آخر نام ها همش میشه تشریفات آنچنانی بین دوستان.مرسی.(نظر شخصی)
        BNTSTBNT

        دیدگاه


          #5
          مشکل در زمان بندی؟!

          سلام . خوبی آقای شکوهی ؟
          ممنون از یادآوری شما به نکته درستی اشاره کردید .
          ولی در مورد سوالتون من هم از روی همون ساعت گفته بودم هرچند که یه مقدار تقریب رو بهتر میکنه ولی بازم زمان بندیش درست نیست همیشه .
          شاید مجبور بشید که عملی ببندینش .
          موفق باشید .
          شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ‌ي جهاد فيآ‌سبيلآ‌الله.
          هجرت، هجرت از سنگينيآ‌هاست و جاذبهآ‌هايي كه تو را به خاك ميآ‌چسباند.
          چكمهآ‌هايت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت كن.

          دیدگاه


            #6
            مشکل در زمان بندی؟!

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

            دیدگاه


              #7
              خوب و اما ریشه مشکل!!

              با سلام. مشکل این هستش که تو برنامه زیر:
              for(x=0;x<33000:x++): ok
              تو این برنامه وقتی توسط compiler به زبان اسمبلر ترجمه میشه فقط تا E8 ادامه میده شمارش رو و تا عدد 80E8 نمیره!! من این مشکل رو حتی با حلقه تو در تو هم نتونستم حل بکنم.چون حلقه تو در تو رو جدا جدا حساب میکنه compiler!!
              جالبه نه!!
              BNTSTBNT

              دیدگاه


                #8
                مشکل در زمان بندی؟!

                سلام . خوبی شکوهی جان ؟
                آقا از اول میگفتید که برنامه رو به زبان C نوشتید کار خیلی راحت تر میشد .
                من این قضیه رو قبلا چک کرده بودم . من فکر کردم برنامه رو به زبان اسمبلی نوشتید که اینقدر در مورد تاخیرش مطمئن هستید .
                چاره ای ندارید مگه اینکه با استفاده از تایمر این تاخیر رو ایجاد کنید . اون موقع تاخیرتون دقیق خواهد بود .
                موفق باشید .
                شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ‌ي جهاد فيآ‌سبيلآ‌الله.
                هجرت، هجرت از سنگينيآ‌هاست و جاذبهآ‌هايي كه تو را به خاك ميآ‌چسباند.
                چكمهآ‌هايت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت كن.

                دیدگاه


                  #9
                  و اما جواب خودم!!

                  سلام.با تشکر از همه دوستان.
                  خوب باید در توجیه این مطلب بگم:
                  این که میگم شاید دقیقاً مربوط به میکرو نباشه ولی برای درک بهتر موقعیت کمکتون می کنه!! نمی دونم تا حالا شده مثلاً بازی مثل علایدین رو تو یه کامپیوتر قدیمی نصب کنید و بازی کنید. اگه این کارو کرده باشید، بعدش همین Game رو روی یه کامپیوتر تازه مثلاً 2.4GHz نصب کنید، خوب حتماً متوجه میشین که سرعت دویدن یا کلاً سرعت بازی فوق العاده بالا رفته و طوری که دیگه بازی رو تقریباً دیگه نمیشه ادامه داد!!!!
                  میدونید چرا؟ البته این نظر من هستش!! برای اینکه این برنامه ( Game) قبلاً برای یه پروسسور با سرعت در حدود 466MHz نوشته شده، حالا وقتی شما اونو با یه 2.4GHz شبیه سازی میکنید(اجرا میکنید) خوب با تمام اینکه برنامه همونه ولی سرعتش بالا میره ناخواسته!! یعنی زمان اجرای هر دستور بالا میره و در نتیجه زمان کل برنامه پائین میاد و میگیم game سرعتش بالا رفته!! حالا ممکنه همین امر در مورد میکرو هم صادق باشه!! شما دارین یه برنامه که قراره تو یه سیستم با 12MHz اجرا بشه رو توی GHz 2.4 یا بیشتر شبیه سازی میکنین!! ببنین برای اینکه محاسباتتون دست باشه به چند تا نکته زیر توجه کنین:
                  1) اگه میخوایین تأخیر (Delay) ایجاد کنین، به نظر من بهترین و مطمئن ترین راهش استفاده از تایمر هستش.
                  تو زبان C میتونید از دستورات
                  با دستور TMOD=0x00 یا TMOD=0x01 تایمر صفر یا یک رو انتخاب کنید.
                  با دستور TL0=0x(LOW IMPORTAN)S و دستور TH0=0x(HIGH IMPORTANT)S می تونید مقداری رو که باید تایمر بشماره رو کنترل کنید. البته Sاضافه هستش آخرشون.واسه اینه که درست نشون داده بشن تو این متن!! حالا با دستور TRO=1 تایمر شروع به کار میکنه. در ایم ودت میتونید یه کار دیگه انجام بدید یا یه حلقه بیهوده بنویسی که کار خاصی نکنه تا شمکارش تموم شه و TF0=1بشه! در این صورت با یه شرط برسی اتمام تایمر رو هم کنترل کنید که برگدین به برنامه اصلی.حالا اگه به زماه بیشتری نیاز داشتین، می تونید از یه حلقه fOR استفاده کنین که این کار رو تکرار کنه!!
                  2) خسته شدم. بقیشم بداً اضافه میکنم!!
                  BNTSTBNT

                  دیدگاه


                    #10
                    مشکل در زمان بندی؟!

                    سلام . خوبی آقای شکوهی ؟
                    در مورد بازی ها باید بگم که من در اون حد کد نویس نیستم ولی اطلاعاتی که من دارم قطعه ای به نام RTC وجود داره که زمان سیستم رو حفظ میکنه ساعت بسیار دقیقی هم هست . جدای از فرکانس کلاک CPU معقول اینه که بازی ها از اون استفاده کنن به جای اینکه از کلاک CPU استفاده کنن .
                    ولی خوب این مطالبی هم که شما گفتید قابل تامل هست .
                    موفق باشید .
                    شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ‌ي جهاد فيآ‌سبيلآ‌الله.
                    هجرت، هجرت از سنگينيآ‌هاست و جاذبهآ‌هايي كه تو را به خاك ميآ‌چسباند.
                    چكمهآ‌هايت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت كن.

                    دیدگاه

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