اطلاعیه

Collapse
No announcement yet.

اندازه گیری عرض پالس باریک (حدود 1 میکرو) duty<0.01%

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

    اندازه گیری عرض پالس باریک (حدود 1 میکرو) duty<0.01%

    با سلام
    من یه برنامه دارم که duty cycle کم رو می خوام اندازه بگیرم (با اینتراپتcapture timer1) مشکل اینجاست که برای عرض پالسهای کم قبل از اینکه دستورات برنامه وقفه تموم بشه پالس رد شده خلاصه اینکه زمان دستورات وقفه بیشتر از عرض پالس طول میکشه واینطوری یه لبه ازدست می ره
    البته دستورات رو حداقل کردم ولی باز نمیشه
    نکته دیگه اینکه من مجبورم از نوع L میکرو که کم مصرفتره استفاده کنم و نمی تونم فرکانس کار رو بالاتر از8 m ببرم

    #2
    پاسخ : اندازه گیری عرض پالس باریک (حدود 1 میکرو) duty&lt;0.01%

    با کریستال 16 مگ هر دستور اسمبلی یک سیکل ساعت یعنی 62.5 نانو ثانیه طول میکشه و هر وقفه یا پرش چهار سیکل ساعت یعنی 250 نانوثانیه
    فرض کنید شما دوتا وقفه نیاز دارید و یک خواندن مقدار ریجستر کلان پس 9 پالس یعنی تقریبا 1.8 مگ یا 562 نانو یا همون نیم میکرو
    ولی اینها در اسمبلی است نه در زبان سطح بالا بنابرین بهتر با اسمبلی کار کنید
    تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
    داشتن عقله زيادتر از دیگر آدم ها است

    دیدگاه


      #3
      پاسخ : اندازه گیری عرض پالس باریک (حدود 1 میکرو) duty&lt;0.01%

      با تشکر l
      برنامه وقفه timer1 که من دارم در زیر اوردم فکر نمی کنم با اسمبلی و کریستال 8M کمتر از 1 میکرو ثانیه بشه
      اگه براتون ممکنه راهنمایی کنید در واقع من فقط لازم دارم این دستورات کم بشند
      // Timer 1 input capture interrupt service routine
      interrupt [TIM1_CAPT] void timer1_capt_isr(void)
      {
      // Place your code here
      static unsigned char edge=0;
      switch(edge){
      case 0:
      TCNT1=0;
      TCCR1B&amp;=~0x40; // TCCR1B=0X81 has rise

      edge=1;
      //pw=(ovf_number*65536)+value;
      pw=value;
      break;
      case 1:
      TCNT1=0;
      edge=0;
      TCCR1B|=0x40; // TCCR1B=0xc1 has fall
      sw=(ovf_number*65536)+value;
      break;
      }
      ovf_number=0;
      value=0;

      }

      دیدگاه


        #4
        پاسخ : اندازه گیری عرض پالس باریک (حدود 1 میکرو) duty&lt;0.01%

        برای اجابت درخواست شما دوتا مساله دارم
        1- یک سالی میشه که با اسمبلی کار نکردم باید یک مروری بکنم
        2- سرم خیلی شلوغ است درگیر پروزه خودم هستم

        ولی اگه براتن مهم باشه تا دو سه روز براتون می نویسم
        تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
        داشتن عقله زيادتر از دیگر آدم ها است

        دیدگاه


          #5
          پاسخ : اندازه گیری عرض پالس باریک (حدود 1 میکرو) duty&lt;0.01%

          نوشته اصلی توسط aliila
          با کریستال 16 مگ هر دستور اسمبلی یک سیکل ساعت یعنی 62.5 نانو ثانیه طول میکشه و هر وقفه یا پرش چهار سیکل ساعت یعنی 250 نانوثانیه
          فرض کنید شما دوتا وقفه نیاز دارید و یک خواندن مقدار ریجستر کلان پس 9 پالس یعنی تقریبا 1.8 مگ یا 562 نانو یا همون نیم میکرو
          ولی اینها در اسمبلی است نه در زبان سطح بالا بنابرین بهتر با اسمبلی کار کنید
          سلام با تشکر از لطف شما

          دیدگاه


            #6
            پاسخ : اندازه گیری عرض پالس باریک (حدود 1 میکرو) duty&lt;0.01%

            نوشته اصلی توسط aliila
            برای اجابت درخواست شما دوتا مساله دارم
            1- یک سالی میشه که با اسمبلی کار نکردم باید یک مروری بکنم
            2- سرم خیلی شلوغ است درگیر پروزه خودم هستم

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

            دیدگاه

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