ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






کاربران برچسب زده شده

صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 14
  1. #1
    2012/01/30
    19
    1

    کمک برای استفاده از تایمر برای اندازه گیری زمان های زیر 5 میلی ثانیه

    سلام دوستان من میخام زمان یک فرایند رو اندازه گیری کنم که حدودا زمان این فرایند زیر 5 میلی ثانیه هست
    دقت هم برام خیلی مهم هست
    تنظیمات تایمر 0 هم به صورت زیر هست
    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: 16000.000 kHz
    // Mode: CTC top=OCR0
    // OC0 output: Disconnected
    // Timer Period: 1 us
    TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (1<<WGM01) | (0<<CS02) | (0<<CS01) | (1<<CS00);
    TCNT0=0x00;
    OCR0=0x0F;

    ولی عملا 1 میکرو ثانیه رو برای من نمیشماره
    دوستان نظرتوون چیه؟
    هنگ کردم
    کمک کنید
    متشگر از لطفتون
  2. #2
    2015/08/27
    1,756
    1,079

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

    سلام به شما

    فکر کنم با نحوه ی کار کرد تایمر آشنا نیستید
    این کدی که نوشتید که اصلا کار نمیکنه
    شما باید از تایمر 1 که 16 بیتی هستش استفاده کنید
  3. #3
    2012/01/30
    19
    1

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

    چرا دوست عزیز کار میکنه تو پروتیوس کار میکنه
    این برنامه کاملش هست

    /************************************************** *****
    This program was created by the
    CodeWizardAVR V3.12 Advanced
    Automatic Program Generator
    © Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l.

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    Project :
    Version :
    Date : 2017-07-27
    Author :
    Company :
    Comments:


    Chip type : ATmega32A
    Program type : Application
    AVR Core Clock frequency: 8.000000 MHz
    Memory model : Small
    External RAM size : 0
    Data Stack size : 512
    ************************************************** *****/

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    <mega32a.h>

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    "stdlib.h"

    // Alphanumeric LCD functions

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    <alcd.h>

    unsigned long int a,b,c;
    unsigned char h[];
    // External Interrupt 0 service routine
    interrupt [EXT_INT0] void ext_int0_isr(void)
    {
    b=a;
    }

    // External Interrupt 1 service routine
    interrupt [EXT_INT1] void ext_int1_isr(void)
    {
    c=a-b;
    ltoa(c,h);
    lcd_clear();
    lcd_gotoxy(0,0);
    lcd_puts(h);
    }

    // Timer 0 output compare interrupt service routine
    interrupt [TIM0_COMP] void timer0_comp_isr(void)
    {
    a++;
    }

    void main(void)
    {
    // Declare your local variables here

    // Reset Source checking
    if (MCUCSR & (1<<PORF))
    {
    // Power-on Reset
    MCUCSR=0;
    // Place your code here

    }
    else if (MCUCSR & (1<<EXTRF))
    {
    // External Reset
    MCUCSR=0;
    // Place your code here

    }
    else if (MCUCSR & (1<<BORF))
    {
    // Brown-Out Reset
    MCUCSR=0;
    // Place your code here

    }
    else
    {
    // Watchdog Reset
    MCUCSR=0;
    // Place your code here

    }

    // Input/Output Ports initialization
    // Port A initialization
    // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
    DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
    // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
    PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);

    // Port B initialization
    // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=Out Bit2=In Bit1=In Bit0=In
    DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (1<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
    // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=0 Bit2=T Bit1=T Bit0=T
    PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

    // Port C initialization
    // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
    DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
    // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
    PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);

    // Port D initialization
    // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
    DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
    // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
    PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: 8000.000 kHz
    // Mode: CTC top=OCR0
    // OC0 output: Toggle on compare match
    // Timer Period: 1 us
    // Output Pulse(s):
    // OC0 Period: 2 us Width: 1 us
    TCCR0=(0<<WGM00) | (0<<COM01) | (1<<COM00) | (1<<WGM01) | (0<<CS02) | (0<<CS01) | (1<<CS00);
    TCNT0=0x00;
    OCR0=0x07;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer1 Stopped
    // Mode: Normal top=0xFFFF
    // OC1A output: Disconnected
    // OC1B output: Disconnected
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
    TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10);
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;

    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer2 Stopped
    // Mode: Normal top=0xFF
    // OC2 output: Disconnected
    ASSR=0<<AS2;
    TCCR2=(0<<PWM2) | (0<<COM21) | (0<<COM20) | (0<<CTC2) | (0<<CS22) | (0<<CS21) | (0<<CS20);
    TCNT2=0x00;
    OCR2=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (1<<OCIE0) | (0<<TOIE0);

    // External Interrupt(s) initialization
    // INT0: On
    // INT0 Mode: Rising Edge
    // INT1: On
    // INT1 Mode: Falling Edge
    // INT2: Off
    GICR|=(1<<INT1) | (1<<INT0) | (0<<INT2);
    MCUCR=(1<<ISC11) | (0<<ISC10) | (1<<ISC01) | (1<<ISC00);
    MCUCSR=(0<<ISC2);
    GIFR=(1<<INTF1) | (1<<INTF0) | (0<<INTF2);

    // USART initialization
    // USART disabled
    UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);

    // Analog Comparator initialization
    // Analog Comparator: Off
    // The Analog Comparator's positive input is
    // connected to the AIN0 pin
    // The Analog Comparator's negative input is
    // connected to the AIN1 pin
    ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);
    SFIOR=(0<<ACME);

    // ADC initialization
    // ADC disabled
    ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);

    // SPI initialization
    // SPI disabled
    SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);

    // TWI initialization
    // TWI disabled
    TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);

    // Alphanumeric LCD initialization
    // Connections are specified in the
    // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
    // RS - PORTA Bit 0
    // RD - PORTA Bit 1
    // EN - PORTA Bit 2
    // D4 - PORTA Bit 4
    // D5 - PORTA Bit 5
    // D6 - PORTA Bit 6
    // D7 - PORTA Bit 7
    // Characters/line: 16
    lcd_init(16);

    // Global enable interrupts

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    ("sei")

    while (1)
    {
    // Place your code here

    }
    }

    دلیل: ادغام دو پست برای جلوگیری از اسپم

    نقل قول نوشته اصلی توسط rezamajdi

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    سلام به شما

    فکر کنم با نحوه ی کار کرد تایمر آشنا نیستید
    این کدی که نوشتید که اصلا کار نمیکنه
    شما باید از تایمر 1 که 16 بیتی هستش استفاده کنید
    میشه کمکم کنی دوست عزیز
  4. #4
    2015/08/27
    1,756
    1,079

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

    به این کد توجه کن



    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: 16000.000 kHz <<<<<<<<<
    // Mode: Normal top=0xFFFF
    // OC1A output: Disconnected
    // OC1B output: Disconnected
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer Period: 4.096 ms <<<<<<<<<
    // Timer1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
    TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;


    به اون دو تا کدی که علامت زده شده توجه کن
    فرکانس تایمر رو بهتره بالاتر بگیری برای دقت بیشتر
    دوره تناوب تایمر رو نگاه کن حدود 4 میلی ثانیه هستش
    اما دوره تناوب در کدی که شما نوشتی 1 میکروثانیه هستش که اصلا بدرد نمیخوره خیـــــــــــــــــــــــ ـــلی کمه . . .

    سوالی داشتید در خدمتم
    ویرایش توسط rezamajdi : 2017/07/27 در ساعت 11:17
  5. #5
    2012/01/30
    19
    1

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

    دوست من کدوم دوتا کد قرمز رنگ برای من همش سبزه
    میشه خیلی واضح کمکم کنی
    من میخام هر میکرو ثانیه رو بشمارم
    به چه صورت این کا ر رو کنم؟
    ممنون از لطفت
  6. #6
    2015/08/27
    1,756
    1,079

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

    با این کدی که من برات نوشتم میتونی هر 62.5 نانو ثانیه رو بشماری چه رصد به میکرو ثانیه . . .

    اگه هم میخوای هر میکروثانیه رو بشماری باید فرکانس تایمر رو روی 1 مگاهرتز قرار بدی همین
  7. #7
    2012/01/30
    19
    1

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

    ممنون از لطفت
    عملی هم به نظرت جواب میده؟
    چه نکاتی رو رعایت کنم که خطا رو تقریبا صفر بشه

    دلیل: ادغام دو پست برای جلوگیری از اسپم

    نقل قول نوشته اصلی توسط rezamajdi

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    به این کد توجه کن



    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: 16000.000 kHz <<<<<<<<<
    // Mode: Normal top=0xFFFF
    // OC1A output: Disconnected
    // OC1B output: Disconnected
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer Period: 4.096 ms <<<<<<<<<
    // Timer1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
    TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;


    به اون دو تا کدی که علامت زده شده توجه کن
    فرکانس تایمر رو بهتره بالاتر بگیری برای دقت بیشتر
    دوره تناوب تایمر رو نگاه کن حدود 4 میلی ثانیه هستش
    اما دوره تناوب در کدی که شما نوشتی 1 میکروثانیه هستش که اصلا بدرد نمیخوره خیـــــــــــــــــــــــ ـــلی کمه . . .

    سوالی داشتید در خدمتم
    منظور از دوره تناوب اینجا چیه؟
    شرمنده که این قدر سوال میپرسم
  8. #8
    2015/08/27
    1,756
    1,079

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

    شما کارایی که من بت گفتم رو انجام بده دقتت خیلی میره بالا
    1_از تایمر 1 که 16 بیتی هستش استفاده کن
    2_فرکانس تایمر رو در بالا ترین حد که همون 16 مگاهرتز هستش قرار بده برای این کار باید فرکانس میکرو 16 مگاهرتز باشه

    دوره تناوب همون آورفلو هستش یعنی زمانی که طول میکشه تا شمارنده تایمر از صفر تا ماکزیمم خودش ( برای تایمر 1 که 16 بیتی هستش میشه 2 به توان 16) که میشه 65535 بشماره
    پس هروقت که تایمر به ماکزیمم مقدار خودش رسید اگه یه واحد دیگه بخواد افزایش پیدا کنه اصطلاحا آور فلو میشه ( سرریز میشه ) یعنی میاد از 0 شروع به شمارش میکنه . . .
  9. #9
    2012/01/30
    19
    1

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

    باز هم کمک کیند
    ویرایش توسط hsn4890 : 2017/07/27 در ساعت 11:45 دلیل: اشتباه
  10. #10
    2012/01/30
    19
    1

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

    نقل قول نوشته اصلی توسط rezamajdi

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    شما کارایی که من بت گفتم رو انجام بده دقتت خیلی میره بالا
    1_از تایمر 1 که 16 بیتی هستش استفاده کن
    2_فرکانس تایمر رو در بالا ترین حد که همون 16 مگاهرتز هستش قرار بده برای این کار باید فرکانس میکرو 16 مگاهرتز باشه

    دوره تناوب همون آورفلو هستش یعنی زمانی که طول میکشه تا شمارنده تایمر از صفر تا ماکزیمم خودش ( برای تایمر 1 که 16 بیتی هستش میشه 2 به توان 16) که میشه 65535 بشماره
    پس هروقت که تایمر به ماکزیمم مقدار خودش رسید اگه یه واحد دیگه بخواد افزایش پیدا کنه اصطلاحا آور فلو میشه ( سرریز میشه ) یعنی میاد از 0 شروع به شمارش میکنه . . .
    دوست عزیز کاری که گفتی انجام دادم از روی رجیستر TCNT1 مقدار تایمر رو میخونم
    ولی باز هم دقیق نیست
    چیکار کنم؟
صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 14

موضوعات مشابه

  1. پاسخ: 10
    آخرين نوشته: 2020/04/13, 17:38
  2. ایجاد تایمر 10 میلی ثانیه برای مگا
    توسط david24 در انجمن میکروکنترلرهای AVR
    پاسخ: 2
    آخرين نوشته: 2017/04/27, 11:17
  3. خطا در زمان مورد اندازه گیری تایمر
    توسط mehran901 در انجمن میکروکنترلرهای AVR
    پاسخ: 1
    آخرين نوشته: 2015/12/11, 01:45
  4. چگونگی تنظیم تایمر برای زمان 10 میکرو ثانیه
    توسط babak_9051 در انجمن میکروکنترلرهای AVR
    پاسخ: 6
    آخرين نوشته: 2012/11/03, 11:06
  5. ایجاد زمان وقفه یک ثانیه ای برای تایمر با c
    توسط mojijordan در انجمن میکروکنترلرهای AVR
    پاسخ: 1
    آخرين نوشته: 2010/05/24, 21:33

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •