اطلاعیه

Collapse
No announcement yet.

ایجاد تایمر کانتر نرم افزاری با میکرو

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

    ایجاد تایمر کانتر نرم افزاری با میکرو

    سلام دوستان
    با توجه به اینکه تعداد تایمر و کانترهای AVR کم هست اگه در پروژه ای نیاز به شمارش چندین پالس ورودی با فرکانس های پایین (در حد حداکثر 10 هرتز) یا اندازه گیری چند زمان به صورت ثانیه ای داشته باشیم راهی هست که بتونیم این کار رو با استفاده از دستورات برنامه نویسیو بدون خطا انجام بدیم؟
    دوستانی که با PLC کار کردند میدونند که این کار توی پی ال سی ها انجام میشه مثلا یه نمونه پی ال سی دلتا که پردازندش میکروی از نوع آرم هست هشت تا تایمر-کانتر سخت افزاری داره اما میشه تا 256 کانتر 20 هرتز و 256 تا تایمر با دقت 0.1 ثانیه توی برنامه استفاده کرد.

    #2
    پاسخ : ایجاد تایمر کانتر نرم افزاری با میکرو

    شما حتی میتونی در حد فرکانس 8 مگا هرتز هم شمارش کنی
    .The best question deserves a better answer
    =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
    «پناه»می برم «به خدا»
    از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
    محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

    دیدگاه


      #3
      پاسخ : ایجاد تایمر کانتر نرم افزاری با میکرو

      من با یه تایمر حاضرم کار چند تایمر رو با هم انجام بدم، یا به عبارتی حاضرم چندین تایمر دیگه بسازم! اگه زمانهای شما مضربی از هم باشن که دیگه واقعا دقتش خیلی زیاد میشه.

      دیدگاه


        #4
        پاسخ : ایجاد تایمر کانتر نرم افزاری با میکرو

        نوشته اصلی توسط •.´™ مَسِِــــح`.•
        شما حتی میتونی در حد فرکانس 8 مگا هرتز هم شمارش کنی
        خوب یه توضیح میفرمایید

        دیدگاه


          #5
          پاسخ : ایجاد تایمر کانتر نرم افزاری با میکرو

          نوشته اصلی توسط Rohalamin
          من با یه تایمر حاضرم کار چند تایمر رو با هم انجام بدم، یا به عبارتی حاضرم چندین تایمر دیگه بسازم! اگه زمانهای شما مضربی از هم باشن که دیگه واقعا دقتش خیلی زیاد میشه.
          اگر امکانش هست در مورد روش برنامه نویسی یه توضیح بدید

          دیدگاه


            #6
            پاسخ : ایجاد تایمر کانتر نرم افزاری با میکرو

            نوشته اصلی توسط akamseda
            اگر امکانش هست در مورد روش برنامه نویسی یه توضیح بدید
            خیلی ساده. شما یه فرکانس بیس واسه تایمرت تعیین میکنی که کوچکترین باشه(منظورم سیکل اجرای وقفه هستش). یعد تیک ها رو واسه هر کدوم از روتین وقفه ها می شماری. به هر کدوم که رسید روتین مربوطه رو توی روتین وقفه اجرا میکنه. مثلا شما لازمه هر 1 میلی ثانیه و هر 10 میلی ثانیه دو وقفه از دو تایمر داشته باشی. خب این رو راحت با یه تایمر میشه انجام داد. چون 10 یه مضرب 1 هستش. شما اول تنظیم میکنی که تایمرت هر 1 میلی ثانیه تایمر وقفه کنه. بعد توی وقفه "تیک های" وقفه های تایمر رو می شماری. با یه دستور شرطی و یه دستور اضافه یک واحد. بعد از اینکه شما متغیر اضافه واحدت شد 10 میگی این تابع رو مثلا اجرا کن(می تونی قبلا براش روتین بنویسی). OK؟ حتی اگه مضرب هم دیگه هم نباشن میشه وقفه بیس رو طوری تنظیم کرد که کمترین خطا رو داشته باشه.

            دیدگاه


              #7
              پاسخ : ایجاد تایمر کانتر نرم افزاری با میکرو

              نوشته اصلی توسط Rohalamin
              خیلی ساده. شما یه فرکانس بیس واسه تایمرت تعیین میکنی که کوچکترین باشه(منظورم سیکل اجرای وقفه هستش). یعد تیک ها رو واسه هر کدوم از روتین وقفه ها می شماری. به هر کدوم که رسید روتین مربوطه رو توی روتین وقفه اجرا میکنه. مثلا شما لازمه هر 1 میلی ثانیه و هر 10 میلی ثانیه دو وقفه از دو تایمر داشته باشی. خب این رو راحت با یه تایمر میشه انجام داد. چون 10 یه مضرب 1 هستش. شما اول تنظیم میکنی که تایمرت هر 1 میلی ثانیه تایمر وقفه کنه. بعد توی وقفه "تیک های" وقفه های تایمر رو می شماری. با یه دستور شرطی و یه دستور اضافه یک واحد. بعد از اینکه شما متغیر اضافه واحدت شد 10 میگی این تابع رو مثلا اجرا کن(می تونی قبلا براش روتین بنویسی). OK؟ حتی اگه مضرب هم دیگه هم نباشن میشه وقفه بیس رو طوری تنظیم کرد که کمترین خطا رو داشته باشه.
              منظور شما اینه که یک وقفه تایمر داشته باشیم بعد توی روتین وقفه چک کنیم که هر کدوم از ورودی ها نسبت به وقفه قبلی (یعنی یک میلی ثانیه قبل) تغییر وضعیت داشتند (منظورتون از تیک همین بود؟) یک واحد به متغیر شمارش اضافه بشه،
              اگه منظورتون این بود حالا اون وقفه دوم و زمان 10 میلی ثانیه برای چیه؟

              دیدگاه


                #8
                پاسخ : ایجاد تایمر کانتر نرم افزاری با میکرو

                نوشته اصلی توسط akamseda
                منظور شما اینه که یک وقفه تایمر داشته باشیم بعد توی روتین وقفه چک کنیم که هر کدوم از ورودی ها نسبت به وقفه قبلی (یعنی یک میلی ثانیه قبل) تغییر وضعیت داشتند (منظورتون از تیک همین بود؟) یک واحد به متغیر شمارش اضافه بشه،
                اگه منظورتون این بود حالا اون وقفه دوم و زمان 10 میلی ثانیه برای چیه؟
                هر وقفه تایمر رو تیک میگیم.
                در واقع 10 میلی ثانیه ای وجود نداره. ما این وقفه های 1 ثانیه ای رو توی روتین وقفه می شماریم و وقتی به 10 رسید می گیم که کد مربوطه اجرا بشه. Ok؟

                دیدگاه

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