اطلاعیه

Collapse
No announcement yet.

اندازه گیری فرکانس سیگنال ورودی توسط ماژول CCP1 در مد capture با کامپایلر ccs

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

    اندازه گیری فرکانس سیگنال ورودی توسط ماژول CCP1 در مد capture با کامپایلر ccs

    این برنامه در کتاب حسین چهرقانی میباشد . چاپ اول 1390 ، فصل ششم ، صفحه 150 ، مثال 6-1 . این برنامه به زبان c نوشته شده است.
    سوالات :
    در حلقه ()void main :
    1) دستور ;freq=rise*0.2:
    - چرا مقدار rise در عدد 0.2 ضرب شده است ؟
    - آیا مقدار 0.2 همان مقدار تأخیر تایمر 1 هست ؟
    - مقدار 0.2 چگونه محاسبه شده است ؟
    - چرا در LCD واقع در پروتئوس هیچ عددی نمایش داده نمیشود؟
    کد:
    #include <16F877A.h>
    #FUSES HS
    #use delay(clock=20000000)
    float rise,freq;
    int1 i=0;
    #define LCD_DATA_PORT 6
    #define LCD_TYPE 2
    #include <lcd.c>
    #int_ccp1
    void ccp1_isr(void) 
    {
    set_timer1 (0);
    if (i==1)
    rise=ccp_1;
    i=1;
    }
    void main()
    {
    lcd_init();
    set_tris_c(0xff);
    enable_interrupts(INT_ccp1);
    enable_interrupts(GLOBAL);
    setup_ccp1(CCP_CAPTURE_RE|CCP_CAPTURE_DIV_4);
    setup_timer_1(T1_INTERNAL|T1_DIV_BY_4);
    while(true);
    {
    freq=rise*0.2;
    freq=freq/4;
    lcd_putc('\f');
    lcd_gotoxy(1,1);
    printf(LCD_PUTC,"FRE=%fKHZ",1/freq*100);
    delay_ms(100);
    }
    }

    #2
    پاسخ : اندازه گیری فرکانس سیگنال ورودی توسط ماژول CCP1 در مد capture با کامپایلر ccs

    آخر خط while(true);l اون ; اضافیه.
    در ضمن فکر کنم توی خط printf هم به جاب 100 باید 1000 باشه. اینا احتمالاً اشتباه تایپیه.

    در مورد ضریب 0.2 هم برای محاسبه فرکانس بر اساس فرکانس کلاک، پریسکیلر تایمر و شمارنده لبه و .. محاسبه شده.

    دیدگاه


      #3
      پاسخ : اندازه گیری فرکانس سیگنال ورودی توسط ماژول CCP1 در مد capture با کامپایلر ccs

      سلام
      من هم دارم این برنامه رو از روی همین کتاب اجرا می کنم ولی اصلا فرکانسی روی ال سی دی پروتئوس نشون نمیده .فرکانس رو 0 نشون میده . میشه کمکم کنید؟یا یه آدرس دیگه معرفی کنید . :angry:

      دیدگاه

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