اطلاعیه

Collapse
No announcement yet.

اندازه گیری سه تا فرکانس مختلف با مگا 8

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

    اندازه گیری سه تا فرکانس مختلف با مگا 8

    با سلام من میخوام سه تا فرکانس مختلف از 0-100 هرتز را با یک مگا 8 اندازه بگیرم با توجه به اینکه این میکرو یه تایمر 16 بیتی داره اگه کسی راهی به ذهنش میرسه ممنون میشم راهنمایی کنید ممنون

    #2
    پاسخ : اندازه گیری سه تا فرکانس مختلف با مگا 8

    اگه خیلی حساس نیست سلکت کن یعنی یک ثانیه یکدونشو بگیر ثانیه بعد یکیشو و ثانیه بعد هم یکی دیگشو
    تشکر هم چيز بدي نيست , به امتحانش مي ارزه

    دیدگاه


      #3
      پاسخ : اندازه گیری سه تا فرکانس مختلف با مگا 8

      ممنون از پاسخت اما من نمیتونم از سخت افزار اضافه استفاده کنم و فقط باید از همون مگا 8 استفاده کنم

      دیدگاه


        #4
        پاسخ : اندازه گیری سه تا فرکانس مختلف با مگا 8

        از اونجایی که فرکانس کاری ماکزیممتون 100 هرتز بیشتر نیست میتونین از تایمر 8 بیتی هم استفاده کنین.
        برای کانال سوم هم میتونین از یک وقفه خارجی استفاده کنین.
        اگر به تایمر هم برای زمانبندی احتیاج دارین میتونین از دو وقفه خارجی و یک تایمر 16 بیتی برای این کار استفاده کنین و تایمر 8 بیتی رو برای زمانبندی استفاده کنین. و فرکانس رو هر 2 ثانیه یک بار حساب کنین.

        روال وقفه با نرخ حداکثر هر 10 میلی ثانیه یکبار اجرا میشه و در اون هم قراره یک متغیر 16 بیتی یکی اضافه بشه. اینجوری با فرض کد زیر:


        کد:
        isr:
        2	push	r24
        2	push	r25
        2	push	r0
        2	in	r0,SREG
        2	lds	r24,counter_1+0
        2	lds	r25,counter_1+1
        1	adiw	r24,1
        2	sts	counter_1+0,r24
        2	sts	counter_1+1,r25
        2	out	SREG,r0
        2	pop	r0
        2	pop	r25
        2	pop	r24
        5	reti


        هر سیکل با زمان تقریبی 30 تیک ساعت برابر با زمانی حدود 4 میکرو ثانیه در فرکانس 8 مگا هرتزی کار میکنه که با نرخ 100 هرتز میشه 400 میکرو ثانیه یا به عبارتی حدود 0.04 درصد بار زمانی روی میکرو که زمان زیادی نیست.

        دیدگاه


          #5
          پاسخ : اندازه گیری سه تا فرکانس مختلف با مگا 8

          ممنون از پاسخت من از دوتا وقفه خارجی استفاده میکنم منظور شما اینه که پالس را بدم به اینتراپت خارجی بعد هر بار که به روتین وقفه میاد یک رجیست یکی یکی اضافه بشه و بعد از یک ثانیه شمارش پالسها فرکانس بدست میاد درست متوجه شدم؟

          دیدگاه


            #6
            پاسخ : اندازه گیری سه تا فرکانس مختلف با مگا 8

            دقیقا! این کاریه که شما علی الاصول با کانتر انجام میدی و کانتر 16 بیتی فقط رنج شمارشش بالاتره. ولی چون اینجا فرکانس ماکزیممتون کمه و روال وقفه رو هم میشه کوچیک و سریع نوشت بجای شمارش اتوماتیک در رجیستر داخلی کانتر مربوطه از یک متغیر 2 بایتی معادل اون کانتر کذایی استفاده میکنین.

            دیدگاه


              #7
              پاسخ : اندازه گیری سه تا فرکانس مختلف با مگا 8

              ممنونم فقط چند تا سوال من با c و کدویژن برنامه مینویسم به نظر شما از نظر زمانی به مشکل نمیخورم؟زمان برای ایجاد زمان یک ثانیه هم یک متغییر را برای هر وقفه در روتین اینتراپت تایمر اضافه کنم تا به یک ثانیه برسم درسته؟در ضمن من فرکانسم تا هرتزه و در نهایت شمارش به 100 میرسه از متغییر 8 بیتی میتونم استفاده کنم؟

              دیدگاه


                #8
                پاسخ : اندازه گیری سه تا فرکانس مختلف با مگا 8

                شما زمان اجرای وقفه تون هر 10 میلی ثانیه یکبار هست (100 هرتز) کدویژن درسته کامپایلر خیلی عالیی نیست ولی کدش همچین ها هم بد نیست. با تمام این احوالات هم توی 10 میلی ثانیه میکرو که سهله شما هم میتونین یک سری بری کافی شاپ دم منزل چیزی بخورین و برگردین!! :mrgreen:
                مسلما متغیر یک بایتی هم کارتون رو راه میندازه منتهی چون شما خواستین با کانتر 16 بیتی مقایسه کنین من 2 بایتی در نظر گرفتم و گرنه با یک بایت زمان اجرای کد حداقل 8 پالس کمتر میشه.


                کد:
                isr:
                2	push	r24
                2	push	r0
                2	in	r0,SREG
                2	lds	r24,counter_1+0
                1	inc	r24
                2	sts	counter_1+0,r24
                2	out	SREG,r0
                2	pop	r0
                2	pop	r24
                5	reti

                دیدگاه

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