اطلاعیه

Collapse
No announcement yet.

آیا میتوان زمان های میکرو یا نانو را با میکرو اندازه گرفت ؟

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

    آیا میتوان زمان های میکرو یا نانو را با میکرو اندازه گرفت ؟

    الان من یک برنامه با میکرو نوشتم که زمان تا میلی ثانیه خوب اندازه گیری میکنه برای فرکانس 50 هرتز اما پایین تر از میلی ثانیه تغییرات زیاد داره ؛ مثلا رو ال سی دی نشون میده 2.225 بعد میشه 2.265 ؟؟؟
    کد:
    /*****************************************************
    This program was produced by the
    CodeWizardAVR V2.05.0 Advanced
    Automatic Program Generator
    © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com 
    Chip type        : ATmega16
    Program type      : Application
    AVR Core Clock frequency: 8.000000 MHz
    Memory model      : Small
    External RAM size    : 0
    Data Stack size     : 256
    *****************************************************/
    #include <mega16.h>
    #include <stdio.h>
    // Alphanumeric LCD Module functions
    #include <alcd.h>
    #include <delay.h>
    #include <stdlib.h>
    
    unsigned int tcount1;
    float delta_t;  
    char str[16],str1[16];
    // External Interrupt 0 service routine
    interrupt [EXT_INT0] void ext_int0_isr(void)
    {
    TCNT1=45536;//65536-45536=20000us=20ms=1/20ms=50HZ  
    TCCR1B=0x1;
    }
    // External Interrupt 1 service routine
    interrupt [EXT_INT1] void ext_int1_isr(void)
    {
    tcount1=TCNT1;
    TCCR1B=0x00;//stop Timer
    tcount1=tcount1-45536;
    delta_t=(float)tcount1/1000;
    }
    
    // Declare your global variables here
    
    void main(void)
    {
    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: 1000.000 kHz
    // Mode: Normal top=0xFFFF
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: On
    // Input Capture on Falling Edge
    // Timer1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x1;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    // External Interrupt(s) initialization
    // INT0: On
    // INT0 Mode: Rising Edge
    // INT1: On
    // INT1 Mode: Rising Edge
    // INT2: Off
    GICR|=0xC0;
    MCUCR=0x0F;
    MCUCSR=0x00;
    GIFR=0xC0;
    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;
    // Alphanumeric LCD initialization
    // Connections specified in the
    // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
    // RS - PORTC Bit 0
    // RD - PORTC Bit 1
    // EN - PORTC Bit 2
    // D4 - PORTC Bit 4
    // D5 - PORTC Bit 5
    // D6 - PORTC Bit 6
    // D7 - PORTC Bit 7
    // Characters/line: 16
    lcd_init(16);//Start LCD
    // Global enable interrupts
    #asm("sei")
    while (1)
       {
       lcd_clear(); //clear lcd
        lcd_gotoxy(0,0); // Row 0 Colum 0
          ftoa(delta_t,2,str1);
          sprintf(str,"Delta=%sms",str1);
          lcd_puts(str); 
          delay_ms(1000);
    
       }
    }
    برای تغییر دادن در زندگی اول باید خودم تغییر کنم نه دیگران!
    یک اشتباه جدید در زندگی بهتر از تکرار اشتباه قبلی است .

    #2
    پاسخ : آیا میتوان زمان های میکرو یا نانو را با میکرو اندازه گرفت ؟

    اگر فرکانس کار رو ماکزیمم حساب کنی و بخوای برنامه رو به اسمبلی بنویسی و از مد کپچر استفاده کنی تا فرکانس 4 مگاهرتز یا زمان 250 میکروثانیه رو میتونی اندازه گیری کنی. که البته این ایده آله و در عمل مقدار خیلی کمتر از این حرفهاست. چون باید حذف نویز رو هم فعال کنی و تاخیر بدی و ...
    خب نانو هم که داستانش معلومه.
    اینکه برنامه ات در فرکانس های بالا اعدادی که حساب کرده خیلی تغییر میکنه هم به خاطر اینه مدت زمان رسیدگی به روال وقفه است که موجب میشه اعداد حساب شده یکم تغییر داشته باشند :smile:
    البته توی برنامه ای که نوشتی وقتی از sprintf استفاده میکنی نیازی به استفاده از ftoa نیست. توی همون sprintf از f% استفاده کن و محاسبات رو توی sprintf انجام بده :smile:
    ... و (بدانيد) گرفتن تصميمهاى محكم (براى رسيدن به اهداف بزرگ) با خوش گذرانى و سفرهآ‌هاى رنگين سازگار نيست و چه بسيار كه خواب شبانه تصميمهاى محكم روز را از ميان برده و تاريكيآ‌ها، خاطره همتآ‌هاى بلند را از يادها محو كرده است. (نهجآ‌البلاغه، خطبه211)

    امام علي (ع):کسي که به وقت ياري رهبرش در خواب باشد، با لگد دشمنش بيدار مي شود (غررالحکم،ص 422)

    دیدگاه


      #3
      پاسخ : آیا میتوان زمان های میکرو یا نانو را با میکرو اندازه گرفت ؟

      متشکرم ؛ اما راهی هست که به جز وقفه با این برنامه بتونیم زمان بین دو شکل موج رو اندازه بگیریم ؟ لطفا یک مقدار توضیح بدهید
      برای تغییر دادن در زندگی اول باید خودم تغییر کنم نه دیگران!
      یک اشتباه جدید در زندگی بهتر از تکرار اشتباه قبلی است .

      دیدگاه


        #4
        پاسخ : آیا میتوان زمان های میکرو یا نانو را با میکرو اندازه گرفت ؟

        خب فقط همین وقفه است. یا اینکه بخواید از روش سرکشی استفاده کنید که اون از وقفه هم بدتره. راه دیگه ای من سراغ ندارم. حالا شاید باقی بچه ها بتونن راهنماییت کنن. :smile:
        مگر اینکه یک سخت افزار جدا به صورت real time اندازه گیری رو انجام بده.
        ... و (بدانيد) گرفتن تصميمهاى محكم (براى رسيدن به اهداف بزرگ) با خوش گذرانى و سفرهآ‌هاى رنگين سازگار نيست و چه بسيار كه خواب شبانه تصميمهاى محكم روز را از ميان برده و تاريكيآ‌ها، خاطره همتآ‌هاى بلند را از يادها محو كرده است. (نهجآ‌البلاغه، خطبه211)

        امام علي (ع):کسي که به وقت ياري رهبرش در خواب باشد، با لگد دشمنش بيدار مي شود (غررالحکم،ص 422)

        دیدگاه


          #5
          پاسخ : آیا میتوان زمان های میکرو یا نانو را با میکرو اندازه گرفت ؟

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

          دیدگاه


            #6
            پاسخ : آیا میتوان زمان های میکرو یا نانو را با میکرو اندازه گرفت ؟

            بدون میکرو که کار راحته. کافیه یک آی سی کانتر پیدا کنی که وقتی یک سیگنال مثلا مربعی بهش دادی با اولین لبه بالا رونده شروع به شمارش کنه و با لبه بعدی متوقف بشه بعد عدد شمارش شده رو به میکرو بده و باقی محاسبات. البته باید بازه فرکانس ورودی و شکل موج و ... رو بدونی و براساس بازه های فرکانسی مختلف بهش کلاک رو بدی :smile:
            ... و (بدانيد) گرفتن تصميمهاى محكم (براى رسيدن به اهداف بزرگ) با خوش گذرانى و سفرهآ‌هاى رنگين سازگار نيست و چه بسيار كه خواب شبانه تصميمهاى محكم روز را از ميان برده و تاريكيآ‌ها، خاطره همتآ‌هاى بلند را از يادها محو كرده است. (نهجآ‌البلاغه، خطبه211)

            امام علي (ع):کسي که به وقت ياري رهبرش در خواب باشد، با لگد دشمنش بيدار مي شود (غررالحکم،ص 422)

            دیدگاه


              #7
              محاسبه زمان تایمر وقفه با دقت 300 پیکوثانیه

              بسمه تغالی
              سلام دوستان
              میخواستم با استفاده از وقفه زمان رو بادقت 300 پیکوثانیه محاسبه کنم. آیا این کار با avr ممکنه؟
              یا باید از میکروهای دیگه مثل arm یا fpga یا ic استفاده کنم؟
              خواهش می کنم راهنماییم کنید.

              دیدگاه


                #8
                پاسخ : محاسبه زمان تایمر وقفه با دقت 300 پیکوثانیه

                خبریه؟
                می خوای راداری چیزی بسازی؟ :biggrin:
                CPU کامپیوتر به زور توی 3 گیگاهرتز کار میکنه اونوقت می خوای با یه AVR یه کار چند تراهرتز رو انجام بدی؟ باید یه فکری به حالش بکنی وگرنه خالی خالی نمیشه.(حتی FPGA یا ARM)

                دیدگاه


                  #9
                  پاسخ : آیا میتوان زمان های میکرو یا نانو را با میکرو اندازه گرفت ؟

                  یه چیزی تو مایه های رادار!
                  ic یا چیز دیگه ای نیست که بتونه این کار رو برام انجام بده؟
                  اصلا میشه از cpu کامپیوتر استفاده کرد؟

                  دیدگاه


                    #10
                    پاسخ : آیا میتوان زمان های میکرو یا نانو را با میکرو اندازه گرفت ؟

                    نوشته اصلی توسط shahab_micro
                    یه چیزی تو مایه های رادار!
                    ic یا چیز دیگه ای نیست که بتونه این کار رو برام انجام بده؟
                    اصلا میشه از cpu کامپیوتر استفاده کرد؟
                    نمی دونم چیکار دارید میکنید ولی می تونید توی بخش سیستمهای مخابراتی یه تاپیک بزنید و بپرسید که چطور رادارها این کارها رو انجام میدن.

                    دیدگاه


                      #11
                      پاسخ : آیا میتوان زمان های میکرو یا نانو را با میکرو اندازه گرفت ؟

                      شاید برای Lidar یا متر لیزری میخواهند !
                      اگه درست حدس زدم، کار کردن این سیستم ها با Radar کمی متفاوته
                      http://www.eca.ir/forum2/index.php?topic=21018.0

                      امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

                      دیدگاه


                        #12
                        پاسخ : آیا میتوان زمان های میکرو یا نانو را با میکرو اندازه گرفت ؟

                        اگر تونستید بال زدن مگس رو خوب ببینید میکرو هم میتونه این کار رو بکنه !!!!
                        [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                        معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                        معرفی نرم افزار Codewizard PWM
                        با من بیشتر آشنا شوید

                        دیدگاه

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