اطلاعیه

Collapse
No announcement yet.

اشکال در راه اندازی مد Captur در PIC

Collapse
این موضوع بسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    اشکال در راه اندازی مد Captur در PIC

    سلام
    من برای اندازه گیری عرض پالس بوسیله ی مد کپچر میکرو از این برنامه استفاده کردم .
    مشکل اصلی اینه که میکرو هربار که بهش یه پالس با عرض مشخص میدم یه جواب تازه میده !!!!!!!!!!!!!!!!!!
    و هردفعه چرند پرند بهم تحویل میده .
    یه بار میگه 124547 میکرو ثانیه
    یه بار دیگه میگه 1457 میکرو ثانیه
    خلاصه کارش رو درست انجام نمیده .
    اگر میشه بگید اشکال برنامه از کجاست ؟؟؟؟

    [code=qbasic]

    Define Loader_Used 1 'Required if using McLoader
    DEFINE OSC 4

    .
    .
    .

    time_usec var word
    time var word
    trisc = %00000100
    t1con = %00000001
    ccp1con = 0
    lcdout I,clr
    lcdout #time_usec,"*" ,#time
    main:
    t1con = %00000001
    tmr1l = 0
    tmr1h = 0
    ccp1con = %00000100
    pir1.2 = 0
    loop:
    if pir1.2 = 0 then loop
    pir1.2 = 0
    high porte.0
    ccp1con = %00000101
    loop2:
    if pir1.2 = 0 then loop2
    t1con = %00000000
    ccp1con = %00000000
    time_usec.byte1 = ccpr1h
    time_usec.byte0 = ccpr1l
    lcdout I,clr
    time = time_usec
    lcdout #time_usec,"m sec"
    pause 1
    low porte.0
    goto main
    end
    [/code]


    اضافه شده در تاریخ :
    سلام
    حتی این برنامه را که برای فاصله سنج اولتراسونیک نوشته شده بود هم امتحان کردم .
    ولی باز هم نتیجه همون شد . :angry:

    [code=qbasic]

    Define Loader_Used 1 'Required if using McLoader
    DEFINE OSC 4
    .
    .
    .

    ADCON1 = 7 ' Set PORTA and PORTE to digital
    Low RW_line ' LCD R/W line low (W)
    trisc.2=1
    trisc.1=0
    T1CON=0
    CCP1CON=%00000101
    INTCON=%11000000
    PIE1.2=1
    ON INTERRUPT GOTO CAPTURE
    W VAR WORD
    FLAG VAR BIT
    CLEAR

    MAIN:
    T1CON.0=1
    toggle portd.1
    WAIT_:
    IF FLAG=0 THEN WAIT_
    lcdout i ,clr
    lcdout i,Line1,"tm:",#w
    FLAG=0
    GOTO MAIN

    CAPTURE:
    DISABLE
    T1CON.0=0
    W.BYTE0 = CCPR1L
    W.BYTE1 = CCPR1H
    'w=w/100

    TMR1L=0
    TMR1H=0
    PIR1.2=0
    FLAG=1
    RESUME
    ENABLE
    [/code]

    #2
    پاسخ : اشکال در راه اندازی مد Captur در PIC

    سلام
    توی این برنامه که قرار دادید تایمر قبل از اینکه وقفه کپچر اتفاق بافته شروع به شمارش می کنه و با اتفاق افتادن وقفه عدد تایمر خونده میشه و. . .
    احتمالا دلیل اینکه هردفعه شما یه عدد جدید می خونید همین باشه که شمارنده از شروع به کار صفر نبوده و این مشکل براتون پیش می آد .
    برای رفع مشکل می بایست شروع شمارش تایمر رو منوط به اتفاق افتادن وقفه کپچر کنید و بعد هم منتظر کپچر (لبه مورد نظر که حالا یا بالا رونده هست یا پایین رونده ) بمونه و زمان بین این دو وقفه را بهتون نمایش بده .

    یک مسئله ی دیگه هم ممکنه هم زمان پیش اومده باشه اون هم اینه که عرض پالس اعمالی اینقدر طولانی باشه که تایمر سر رسز شده باشه و شما اون رو هم در نظر نگرفتید .

    این دو تا عامل به ذهنم رسید حالا دوستان دیگه هم نظرشون رو بگن .

    موفق باشید :smile:
    [left][move][b][color=green][size=11pt]ما می توانیم .
    ، همین ... *. * * *. * * * [color=re

    دیدگاه


      #3
      پاسخ : اشکال در راه اندازی مد Captur در PIC

      سلام
      چه عجب یکیجواب ما را داد :wow:
      خوب چطوری سررسز تایمر را چک نمایم ؟
      یه سوال دیگر هم اینکه :
      آیا باید تایمر 1 را بعنوان شمارنده ، مقدار دهی اولیه نمایم ؟

      باید مرا ببخشید من خیلی تازه کارم :redface:

      متشکر

      دیدگاه


        #4
        پاسخ : اشکال در راه اندازی مد Captur در PIC

        سلام
        در مورد اینکه چطوری سرریز تایمر رو چک کنید من برنامه نویسی خیلی یادم نمونده و دوستان دیگه حتما کمکتون می کنن
        اما در مورد مقدار دهی اولیه ی تایمر فکر می کنم که فقط شما بعد از خوندن مقدار داخل ثبات باید مقدارش رو 0 کنید (یعنی همون کاری که انجام دادید درسته ).

        امیدوارم دوستان دیگه هم نظرشون رو اعلام کنن

        موفق باشید :smile:
        [left][move][b][color=green][size=11pt]ما می توانیم .
        ، همین ... *. * * *. * * * [color=re

        دیدگاه


          #5
          پاسخ : اشکال در راه اندازی مد Captur در PIC

          سلام.آقا شرمنده من دانشگاهم شهرستانه نمیتونم بیام انجمن زیاد. برنامه ای که من نوشته بودم درست کار میکنه آخر فهمیدم گیرنده آلتراسونیکم خوب کار نمیکنه. شما واسه اینکه مطمین شی مشکل از مدارت هست یا نه یه پالس مربعی 10 هرتز یا 100 هرتز بده به مدارت ببین درست میده زمانش یا نه.با آی سی 555 هم میتونی این کار کنی
          به جای DISABLE هم بزارین intcon.7=0
          راستی وقتیکه عدد از ccpr1l , ccpr1h خوندید بعد از اینکه کارتون تموم شد رای مقایسه دوباره باید صفر بشنا.فکر کنم این کار نکردین. باید بنویسید ccpr1l=0, ccpr1h=0
          اگر سوالی دارین تا 5شنبه بپرسین.اگر از آلتراسونیکتونم جواب گرفتین حتما مدارش بزارین.مرسی
          طب اسلامی

          دیدگاه

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