اطلاعیه

Collapse
No announcement yet.

اندازه گیری زمان متغیر با codevision !!!!!!!!!!

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

    اندازه گیری زمان متغیر با codevision !!!!!!!!!!

    با سلام خدمت دوستان
    دستگاهی که مشغول به کارش هستم، وقتی قطعه ای جلوی سنسورها نباشه شکل پالسی به شکل زیر رو روی lcd نمایش میده:
    http://geladyator600.persiangig.com/Untitled2.png
    و زمانی که قطعه ای جلوی سنسورها باشه،بسته به طول قطعه،عرض T2 تغییر میکنه، هرچه طول قطعه بزرگتر باشه، T2 بزرگتر اما در کل T4 همیشه ثابت است و خروجی به شکل زیر است:
    http://geladyator600.persiangig.com/Untitled.png
    که بسته به عدد T2 برای شناسایی هر قطعه خاص در خط تولید استفاده میشه. در ضمن مهم نیست که سنسورها چی هستن و برچه اساسی کار میکنن، مهم اینه که در هرصورت شکل موج خروجی رو داریم.
    در بازه زمانی حدود 5 تا 10 دقیقه عرض پالس کل(T4) تغییرات جزئی داره مثلا از (400 تا 420 ). حالا میخوام جدولی رو درحافظه ذخیره طبق نمونه برداری ایجاد کنم. باید برای یک طول خاص ، در مدت زمان 10 دقیقه نمونه برداری کنم و اندازهT2 و T4 را ذخیره کنم، مثلا میشه 20 تا عدد متفاوت ، جون عرض پالس تحت تاثیر عوامل مختلفی هست، دائما با داره عوض میشه (400 تا 420)و مثلا طی 10 دقیقه اعدادی که برایT2 در مورد یک قطعه بدست میاد (200-201-202-199-205-210-208) و برای T4 اعداد ((400-405-406-409-410) بدست میاد. حالا باید این اعداد را ذخیره کنم و برای قطعه بعدی با طول متفاوت، باید روال قبل جهت نمونه برداری رو تکرار کنم.
    حالا چندتا سوال:
    1- من حدود 100 قطعه دارم و برای هر قطعه اگر قرار باشه 30تا عدد رو ذخیره کنم، از چه حافظه ای استفاده کنم ؟
    2- برای نمونه برداری قطعه اول، اگر بخوام بصورت اتوماتیک بگم در طی 10 دقیقه هر 500ms اعداد مربوط به T2 و T4 رو بخون و اونهایی که جدید هستند رو ذخیره کن،از چه فرمانی باید استفاده کنم؟
    سالار

    #2
    پاسخ : اندازه گیری زمان متغیر با codevision !!!!!!!!!!

    1- فکر کنم مموری SD خوب باشه.
    2- کامپایلرتون چیه؟

    دیدگاه


      #3
      پاسخ : اندازه گیری زمان متغیر با codevision !!!!!!!!!!

      نوشته اصلی توسط rozeh
      1- فکر کنم مموری SD خوب باشه.
      2- کامپایلرتون چیه؟
      کدویژن!!!!!!!
      چرا ناراحتی پاتریک!
      + امروز ی بچه دیدم سرچهارراه گل میفروخت
      - از دیدنش ناراحت شدی؟
      + نه
      پس چی ناراحتت کرده
      + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
      ------------------------------------------------------------------------------------------------------
      تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
      ------------------------------------------------------------------------------------------------------
      محصولات

      دیدگاه


        #4
        پاسخ : پاسخ : اندازه گیری زمان متغیر با codevision !!!!!!!!!!

        نوشته اصلی توسط سوران آراسته
        کدویژن!!!!!!!
        اوه! عجب سوتی دادم! :mrgreen: اصلا حواسم نبود! تنکیو سوران جان!
        خب شما اصلا کد هم نوشتین؟(استارتر)

        دیدگاه


          #5
          پاسخ : اندازه گیری زمان متغیر با codevision !!!!!!!!!!

          راستی برنامه ای که نوشتم برای این اندازه گیری به شکل زیره:

          interrupt [EXT_INT0] void ext_int0_isr(void) // Rising Edge
          { switch (count){
          case 0:{TCCR1A=0X00;TCCR1B=0x03;TCNT1=0;counter++;break ;}
          case 1:{TCCR1A=0X00;TCCR1B=0x00;t[1]=TCNT1;TCCR1A=0X00;TCCR1B=0x03;counter++;break;}
          } } }

          interrupt [EXT_INT1] void ext_int1_isr(void) // Falling Edge
          {
          switch (counter){
          case 1:{TCCR1A=0X00;TCCR1B=0x00; t[0]=TCNT1;TCCR1A=0X00;TCCR1B=0x03;count++;break;}
          case 2:{TCCR1A=0X00;TCCR1B=0x00; t[2]=TCNT1; count++; break;}
          } }
          فقط نمیدونم چرا بعد از اندازه گیری 7 - 8 - 10 تا پالس میکرو هنگ میکنه!!!!!!!
          سالار

          دیدگاه


            #6
            پاسخ : اندازه گیری زمان متغیر با codevision !!!!!!!!!!

            راستی همونجور که معلومه، با لبه بالا رونده اول تایمر روشن، با لبه پایین رونده بعدی تایمر خاموش و مقدارش خونده میشه و در همین حال تایمر دوباره روشن و با لبه بالارونده بعدی دوباره خاموش و مقدارش خونده میشه و همینطور ... 4 تا عدد T بدست میاد
            سالار

            دیدگاه


              #7
              پاسخ : اندازه گیری زمان متغیر با codevision !!!!!!!!!!

              کد:
              interrupt [EXT_INT0] void ext_int0_isr(void) // Rising Edge
              {  switch (count){
                  case 0:{TCCR1A=0X00;TCCR1B=0x03;TCNT1=0;counter++;break;}
                  case 1:{TCCR1A=0X00;TCCR1B=0x00;t[1]=TCNT1;TCCR1A=0X00;TCCR1B=0x03;counter++;break;}
              }  } }
              
              interrupt [EXT_INT1] void ext_int1_isr(void) // Falling Edge
              {
                switch (counter){
                   case 1:{TCCR1A=0X00;TCCR1B=0x00; t[0]=TCNT1;TCCR1A=0X00;TCCR1B=0x03;count++;break;}
                   case 2:{TCCR1A=0X00;TCCR1B=0x00; t[2]=TCNT1; count++; break;}      
               }    }
              نیازی به استفاده از دستور سویچ برای این کار نیست. ولی خب اشکالی هم نداره. برای جلوگیری از هنگ کردن سعی کنید همیشه در پروژه های صنعتی تون از واچداگ(Watch dog) استفاده کنید. مقدار کانت و کانتر رو کنترل هم می کنید؟ چون من فقط اضافه شدن رو توش می بینم.

              دیدگاه


                #8
                پاسخ : اندازه گیری زمان متغیر با codevision !!!!!!!!!!

                نوشته اصلی توسط rozeh
                کد:
                interrupt [EXT_INT0] void ext_int0_isr(void) // Rising Edge
                {  switch (count){
                    case 0:{TCCR1A=0X00;TCCR1B=0x03;TCNT1=0;counter++;break;}
                    case 1:{TCCR1A=0X00;TCCR1B=0x00;t[1]=TCNT1;TCCR1A=0X00;TCCR1B=0x03;counter++;break;}
                }  } }
                
                interrupt [EXT_INT1] void ext_int1_isr(void) // Falling Edge
                {
                  switch (counter){
                     case 1:{TCCR1A=0X00;TCCR1B=0x00; t[0]=TCNT1;TCCR1A=0X00;TCCR1B=0x03;count++;break;}
                     case 2:{TCCR1A=0X00;TCCR1B=0x00; t[2]=TCNT1; count++; break;}      
                 }    }
                نیازی به استفاده از دستور سویچ برای این کار نیست. ولی خب اشکالی هم نداره. برای جلوگیری از هنگ کردن سعی کنید همیشه در پروژه های صنعتی تون از واچداگ(Watch dog) استفاده کنید. مقدار کانت و کانتر رو کنترل هم می کنید؟ چون من فقط اضافه شدن رو توش می بینم.
                سلام
                میشه کدتون رو آنالیز کنین که چطور انجام شده ؟

                دیدگاه


                  #9
                  پاسخ : اندازه گیری زمان متغیر با codevision !!!!!!!!!!

                  در این کد با لبه بالارونده تایمر 1 روشن شده(TCCR1A=0X00;TCCR1B=0x03 و با لبه پایین رونده خاموش (TCCR1A=0X00;TCCR1B=0x00و مقدار آن ذخیره می شود و همزمان تایمر دوباره روشن میشود و به شمارش ادامه می دهد(TCCR1A=0X00;TCCR1B=0x03) و بهمین صورت بالبه بالارونده بعدی... و بالبه پایین رونده بعدی.... سه عدد بدست میاید که عرض 3 قسمت اصلی می باشد.
                  سالار

                  دیدگاه

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