اطلاعیه

Collapse
No announcement yet.

شناخت لبه ی بالا روند وپایین رونده یک جا

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

    شناخت لبه ی بالا روند وپایین رونده یک جا

    سلام

    من می خوام یه پالسی می اد وقتی لبه ی بالا روندش اومد از یه طرق یه تایمر شروع به کار کنه و وقتی لبه ی پایین رونده ی پالس اومد تایمر متوقف شه

    یعنی در طول زمانی که پالس خارجی ما در حالت high هست تایمر کار کنه و در غیر این صورت ته

    کسی می تونه کمکی کنه؟ سورس کد ؟

    من خودم می خواستم با حالت تسخیر تایمر 16 بیتی این کار کنم ولی نتونستم

    اگه توضیح بدید ممنون میشم

    #2
    پاسخ : شناخت لبه ی بالا روند وپایین رونده یک جا

    سلام.

    بهترین کار اینه که پالستو بدی به وقفه های خارجی و حساسیت ائن وقفه رو هم رو any cheng قرار بدی.

    با هر بار تغییر وضعیت میکرو به روتین اینتراپت چرش میکنه و شما با تشخیص دادن سطح پاس(0 یا 1) می تونید تایمر رو روشن یا خاموش کنید.

    ریجیستر های TCCRX ریجیسترهای کنترلی تایمرها می باشند. به عنوان مثال ریجیستر کنترلی تایمر صفرTCCR0 می باشد.

    دیدگاه


      #3
      پاسخ : شناخت لبه ی بالا روند وپایین رونده یک جا

      خوب در این حالت قرار دادم اون وقت هر دو لبه گه با یک وقفه بسازم چطوری بگم بهش که با اولی تایمر کار کن این قبول در دومی جطور بگم واستا ؟

      یعنی تایمر شروع به کارکرد وقتی لبه پایین رونده بیاد و دوباهر اون وقفه ایجاد شد دوباره تایمر می اد کار می کنه نه اینکه واسته

      دیدگاه


        #4
        پاسخ : شناخت لبه ی بالا روند وپایین رونده یک جا

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

        یعنی تایمر شروع به کارکرد وقتی لبه پایین رونده بیاد و دوباهر اون وقفه ایجاد شد دوباره تایمر می اد کار می کنه نه اینکه واسته
        سلام.

        فرض کنید سیگنال رو دادین به INT0 و وقفه رو فعال کردین. حالا توی روتین وقفه خارجی صفر اینطور باید بنویسید

        if (PIND.2)
        TCCR1B=0x01;
        else
        TCCR1B=0x00; //end if
        اگر از تایمرهای دیگه استفاده کنید به جای TCCR1B از TCCR0 یا TCCR2 باید استفاده کنید. وقتی TCCRx برابر صفر باشد، تایمر متوقف است و وقتی مخالف صفر باشد تایمر روشن می شود و با توجه به عددی که به آن داده می شود، با یک نسبت از کلاک سیستم شروع به کار می کند.

        در برنامه بالا، با هر تغییر در سطح سیگنال، روتین وقفه اجرا می شود. اگر سیگنال صفر باشد (Low)، تایمر خاموش می شود و اگر سیگنال 5 ولت باشد (High)، تایمر روشن می شود.

        دیدگاه


          #5
          پاسخ : شناخت لبه ی بالا روند وپایین رونده یک جا

          می بخشد ایا این به معنای خاموش شدن تایمره ؟

          if (PIND.2)
          TCCR1B=0x01;

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

          دیدگاه


            #6
            پاسخ : شناخت لبه ی بالا روند وپایین رونده یک جا

            نوشته اصلی توسط علی آقایی فر
            می بخشد ایا این به معنای خاموش شدن تایمره ؟

            if (PIND.2)
            TCCR1B=0x01;

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

            نه دوست عزیز آقای راجی درست نوشته.

            اگر مقدار ریجیستر TCCR1 برابر 0 بشه تایمر خاموش میشه. وقتی هم خاموش میشه دیگه شمارش نمیکنه و عدد ریجیستر TCNT1 ثابت میمونه.


            شما ریجیستر TCCR1( که ریجیستر کنترلی تا یمر یکه و ظیفش روش خاموش کردن تایمر ، تعیین مقدار تقسیم کلاک ، تعیین مد کاری و... است) رو با ریجیستر TCNT1 که وظیفش شمارش است رو اشتباه گرفتین.

            دیدگاه


              #7
              پاسخ : شناخت لبه ی بالا روند وپایین رونده یک جا

              سلام ..................

              http://www.eca.ir/forum2/index.php?topic=18164.msg85913

              موفق باشید .
              دوستان! مدتی کمتر به سایت میام ..

              دیدگاه


                #8
                پاسخ : شناخت لبه ی بالا روند وپایین رونده یک جا

                ممنون حسام جان برای من اندازه گیری پهتا پالس مهم نبود مهم فقط اول و اخر بود ولی تاپیک کاملی روارائه کردی که قبلا هم خود پویا بهم معرفی کرده بود

                دیدگاه

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