اطلاعیه

Collapse
No announcement yet.

لطفا در مورد زمان سنج راهنمایی کنید

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

    لطفا در مورد زمان سنج راهنمایی کنید

    چطور می توان با code vision زمان سنجی با دقت 0.1 که جدا گانه چندین زمان به صورت کورنومتری را ذخیره کند و با دادن ورودی به میکرو این تایم ها را روی پورت خروجی لود کند (مثلا از 0 به 1 برود و بعد از تمام شدن زمان 0 بشود) و با دادن چندین ورودی چند تایمری که که زمان ها را سنجیده به صورت جدا گانه روی پورت های خروجی نشان داده شود ( یعنی چندین کار همزمان) ؟؟؟

    ممنون میشم دوستان راهنمایی کنند :cry2:


    #2
    پاسخ : لطفا در مورد زمان سنج راهنمایی کنید

    نیاز به چند تا کرنومتر داری ؟

    دیدگاه


      #3
      پاسخ : لطفا در مورد زمان سنج راهنمایی کنید

      اگه دقت براتون مهمه باید از حالت rtc استفاده کنید !

      دیدگاه


        #4
        پاسخ : لطفا در مورد زمان سنج راهنمایی کنید

        نوشته اصلی توسط saeid_ica
        نیاز به چند تا کرنومتر داری ؟
        5 تا البته دقت 0.1 ثانیه برایم کافی است و نیازی به نمایش تایم ندارم فقط اینکه تایم ها را بگیرد و بتواند چند تا از آنها را به صورت جدا گانه اجرا کند.
        اگر بخواهم با اینتراپت تایمر ها در زمان سرریز عددی را ذخیره کنم عددی که در طول زمان مثلا 30 ثانیه به وجود می آید عددی بسیار بزرگ خواهد شد (با در نظر گرفتن بهترین عدد برای تقسیم فرکانسی میکرو)
        چطور میتوانم با آن دقتی که گفتم بدون اینکه میکرو در گیر تاخیر و یا اینکه در حلقه ای گیر کند زمان ها را ذخیره و اجرا کنم

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

        چکار کنم ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

        دیدگاه


          #5
          پاسخ : لطفا در مورد زمان سنج راهنمایی کنید

          اگه از میکروهایی مثل atmega1281 استفاده کنی که 6 تا تایمر دارن کارت خیلی راحت تره منتها استفاده از این میکرو ها مثل استفاده از بنز 2010 واسه بارکشی میشه .!!
          راه معقول ترش اینه که شما یک تایمر رو راه اندازی کنی بعد هر وقت نیاز به راه اندازی یک کرنومتر داشتی ، کرنومتر مربوطه عدد فعلی تایمر رو ذخیره کنه و وقتی خواستی تایمر رو استپ کنی عدد ذخیره شده رو از عدد فعلی کم کنی.توجه داری که تایمر داره به شمارش خودش ادامه می ده و هیچ وقت استپ نمی شه!

          دیدگاه


            #6
            پاسخ : لطفا در مورد زمان سنج راهنمایی کنید

            saeid_ica عزیز / منظور از عدد تایمر TCNTیا TOV ویا وقفه سر ریز تایمر است ؟ چون در برنامه نویسی ضعیف هستم نمیتوانم برنامه اش را بنویسم
            می توانید یک مثال عملی بزنید؟ :rolleyes:
            من از طریق delay 1ms به صورت افتادن در حلقه و بعد هر 1میلی ثانیه اضافه شدن به متغییر و در زمان اجرا بعد هر 1 میلی کم کردن متغییر تونستم چندین زمان را ذخیره و البته یکی یکی اجرا کنم چطور میتونم چند تا از آنها را با هم و یا با تاخیر زمانی اجرا کنم بدون اینکه تداخلی به وجود آید؟

            CPU چند هسته ای؟ :mrgreen:
            البته شنیدم با اینتراپت میشه اما اصلا نمیدونم چطوری ؟ :cry2:

            دیدگاه


              #7
              پاسخ : لطفا در مورد زمان سنج راهنمایی کنید

              اگه از تایمر 16 بیتی با prescale خوب 1024 استفاده کنی . زمان سر ریز تایمر 8.389s میشه .
              پس میتونه به راحتی کارت رو راه بندازه .
              هر بار که یه تایمی رو می خای اندازه بگیری یه عددی رو توی یه آرایه ثبت کن تا نوبتش بشه و وقتی
              نوبتش شد بزار تو OCR1A و اینتراپت output compare رو فعال کن .
              توی اینتراپت تغییر مورد نظر رو اعمال کن(رو پرت ها) وعدد بعدی رو از آرایه در بیار و بذار تو OCR1A .
              ای با من و پنهان چو دل از دل سلامت میکنم توکعبه ای هر جا روم قصد مقامت می کنم
              هر جا که هستی حاضری از دور در ما نا ظری شب خانه روشن میشود چون یاد نامت میکنم
              گه همچو باز آشنا بر دست تو پر میزنم گه چون کبوتر پرزنان آهنگ بامت می کنم

              مرا گویی تورا با این قفس چیست من چه دانم ، من چه دانم اگر مرغ هوایی این قفس چیست من چه دانم ، من چه دانم من چه دانم

              دیدگاه


                #8
                پاسخ : لطفا در مورد زمان سنج راهنمایی کنید

                ببین می دونی کامپیوتر رو نشون می ده؟ یه متغیر 32 بیتی تعریف کردن از اول که فکر کنم از سال 1970 هر یک ثانیه یکی به این متغیر اضافه می شه برای نمایش ساعت اون عدد رو بر 60 تقسیم می کنن ععدد حاصل ثانیه فعلی / بر 360 تقسیم می کنن دقیقه فعلی و .....! یعنی یه متغیر انتخاب کردن که حالا حالا ها پر نشه ! شما هم از همین ایده بگیر منتها شما هر 0.1 ثانیه این متغیر رو تغییر بده . یعنی از لحظه ای که تایمر راه می افته عدد فعلی متغیر رو بخون و در لحظه ای که تایمر استپ می شه هم متغیر رو ذخیره کن از تفریق تین دو تا عدد و تبدیل به همون روش کامپیوتر اختلاف دو تا زمان بدست می آید . تازه شما می تونی مثلا بگی من می خوام 15 دقیقه بعد تایمر استپ بشه . خوب حساب کن ببین تایمر باید چند تا بشماره تا به این عدد برسه. لحظه شروع تایم رو به عدد مورد نظر اضافه کن . هر وقت تایمر به اون عد رسید شما می تونی بگی مثلا 15 دقیقه گذشته.
                شما باید در هر 0.1 ثانیه که متییر رو update می کنی یا همون که خودت می گی تایمر سرریز میشه، متغیر رو با اعداد توی تایمر ها مقایسه کنی . این کار واسه میکرو کار زمان بری نیست که!
                شما در حد میکرو ثانیه کاراتو انجام میدی. برای اینکه مطمئن شی ساعتت عقب جلو نمی شه ، از وقفه سرریز استفاده کن . در روتین وقفه ععد متغییر رو یکی اضافه کن. چون میکرو پس از سرریز auto reload میشه شما 0.1 وقت داری که همه کار هاتو انجام بدی .

                دیدگاه

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