اطلاعیه

Collapse
No announcement yet.

سنجش فاصله زمانی دو لبه پائین رونده با تایمر AVR

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

    سنجش فاصله زمانی دو لبه پائین رونده با تایمر AVR

    سلام بر همه دوستان :

    اگر کسی روش مناسبی برای سنجش فاصله زمانی بین دو لبه ( به صورت پائین رونده ) بنظرش میرسد ، لطف کند و من را راهنمائی کند .
    فرض بفرمائید که یک شکل موج داریم بصورت پالسهای 0 و 1 که فاصله زمانی بین هر دو لبه پائین رونده مشخص کننده صفر و یا یک بودن آن است .

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

    من با bascom کار می کنم لذا ترجیحاً لطف نمائید و براساس bascom راهنمائی بفرمائید .

    خیلی ممنون.

    #2
    پاسخ : سنجش فاصله زمانی دو لبه پائین رونده با تایمر AVR

    سلام
    می تونی یک flag تعریف کنی ،وقتی برای بار اول وقفه اجرا شد و تایمر استارت و این flag یک بشه،برای بار ذوم که وقفه اجرا شد اگه این flag یک بود تایمر رو بخونه و این flag رو صفر کنه!
    راتی یه نگاه به input capture تایمر یک هم بنداز
    موفق باشی
    در دیر مغان آمد یارم قدحی در دست
    مست از می می خواران از نرگس مستش مست

    دیدگاه


      #3
      پاسخ : سنجش فاصله زمانی دو لبه پائین رونده با تایمر AVR

      سلام دوست غزیز
      فکر کنم بشو از دو وقفه استفاده کرد که اولی با لبه بالا رونده تحریک شود و یک تامیر را فعال کند و دومی با لبه پایین رونده و تایمر را متوقف و زمان مورد نظر را اخذ کند. :eek:
      به امید دیدارهمه دوستان خوب این انجمن :bye
      کمتر سخن گویم
      بیشتر عمل کنیم

      دیدگاه


        #4
        پاسخ : سنجش فاصله زمانی دو لبه پائین رونده با تایمر AVR

        سلام به همه
        در مورد سنجش دو لبه می تونی از برنامه زیر به عنوان زیر برنامه استفاده کنی
        ak12:
        bitwait portb.0,set
        bitwait portb.0,reset
        timer0=0
        start timer0
        bitwait portb.0,set
        bitwait portb.0,reset
        stop timer0
        return

        دیدگاه


          #5
          پاسخ : سنجش فاصله زمانی دو لبه پائین رونده با تایمر AVR

          سلام
          این رو نگاه کن برنامه تکمیل ترش رو هم تا فردا میزارم در ضمن باید از RTC در پایه های TOC1 و TOC2 استفاده شود . مقدار RTC هم 32768 هرتز کار دیگه ای هم لازم نیست . تا فردا
          Config Timer2 = Timer , Async = On , Prescale = 1
          Config Int0 = Falling
          Enable Interrupts
          Enable Timer2
          Enable Int0
          On Timer2 Show2
          On Int0 Show1
          Dim A As Byte
          Dim B As Byte
          Dim H As Byte
          Dim Marker As Byte
          Marker = 0
          Stop Timer2
          Do
          Loop
          End

          Show2:
          Incr A
          If A = 128 Then
          Incr B
          A = 0
          End If
          Return

          Show1:
          If Marker = 0 Then
          Start Timer2
          Marker = 1
          End If
          If Marker = 1 Then
          Stop Timer2
          Marker = 0
          END IF
          Return
          انجمن LABVIEW
          http://www.eca.ir/forum2/index.php?board=279.0
          اموزش میکروکنترلرهای AVR به زبان ساده
          http://www.eca.ir/forum2/index.php/topic,7070.0.html

          دیدگاه


            #6
            پاسخ : سنجش فاصله زمانی دو لبه پائین رونده با تایمر AVR

            سلام
            کاره خیلی راحتیه
            چنتا راه داری ولی به نظر من از اینتراپت استفاده نکن . هم میتونی از کپچر تایمر استفاده کنی که خیلی دقیق تره و هم اینکه میتونی بیای خط پالست رو به 1 پین میکرو وصل کنی و یک flag بیتی براش تعریف کنی که یک یا صفر بودن این بیت تایمرت رو خاموش روشن کنه یا هم اینکه خط پالست رو به 2 تا اینتراپت اتصال بدی که اولی با لبه پایین رونده و دومی با لبه بالا رونده فعال شه حالا میتونی تو اینتراپت پایین رونده تایمر رو روشن و تو بالا رونده خاموشش کنی
            Good lock my friend
            خدا گفت : به جهنم ببریدش، او برگشت و با تعجب به خدا نگاه کرد. خدا گفت : به بهشت ببریدش. فرشتگان پرسیدند: چرا؟! خدا گفت : او هنوز به من امیدوار است...

            دیدگاه


              #7
              پاسخ : سنجش فاصله زمانی دو لبه پائین رونده با تایمر AVR

              دوستان سلام :
              از همگی بخاطر اینکه این همه زمان گذاشتید و به سوال بنده جواب دادید بسیار تشکر می کنم . باشد که جبران کنم .

              البته از بین راهایی که دوستان مطرح کردن ؛ هم روش flag قابل استفاده است و هم روش دو اینتراپت .
              البته باید به این نکته اشاره کنم از آنجایی که در روال سرویس وقفه ام کارهای دیگری را هم انجام می دهم ، استفاده از روش flag شاید یک مقدار باعث پیچیده شدن بی دلیل برنامه ام بشود .
              اما روش استفاده از 2 اینتراپت را قبل از اینکه دوستان جوابم را بدهند استفاده کردم و فکر کنم با اندکی تغییرات کاملاً عملی باشد .

              دوباره بخاط اینکه زحمت کشیدید و پاسخ بنده را دادید ممنونم

              بنده هم در همینجا اعلام می کنم ، بخاطر حسن نظر دوستان ، پس از انجام عملی و جواب دادن پروژه شرحی از نحوه دکود کردن stream bit مبتنی بر طول پالس و انواع آن داشته باشم .
              البته در تاپیکی جدید و با همان عنوان .
              باز هم ممنون از همگی

              دیدگاه


                #8
                پاسخ : سنجش فاصله زمانی دو لبه پائین رونده با تایمر AVR

                سلام . تکمیلش کردم محاسبه بر حسب میلی ثانیه هستش. در این مدار برای بار اول که میکروسوییچ را فشار میدید تایمر استارت میشه و برای بار دوم که میکرو سوییچ رو فشار میدید تایمر استاپ میشه و مقدار زمان رو بر حسب میلی ثانیه نمایش میده . شما می تونید به جای میکروسوییچ از یک پالس استفاده کنید . در ضمن در این برنامه از تایمر شماره دو همراه با rtc استفاده شده است که باید RTC رو به پایه های TOC1 و TOC2 وصل کنید . راستی پالسی رو هم که می خواهید زمانش رو اندازه بگیرید باید به INT0 میکرو بدید.
                http://www.4shared.com/file/22312623/3a0f483e/FALLING.html?dirPwdVerified=c95a46aa
                دوستان فایلی که گذاشته بودم رو به خاطر یک سری اشکال کوچیک عوض کردم دوباره از طریق همین لینک بالا دانلودش کنید
                انجمن LABVIEW
                http://www.eca.ir/forum2/index.php?board=279.0
                اموزش میکروکنترلرهای AVR به زبان ساده
                http://www.eca.ir/forum2/index.php/topic,7070.0.html

                دیدگاه


                  #9
                  پاسخ : سنجش فاصله زمانی دو لبه پائین رونده با تایمر AVR

                  دوست عزیز next2004 :
                  همین که زحمت کشیدید و این کدها رابرایم گذاشتید تا آخر عمر مرا مدیون خود کردید !!!!

                  ان شاء الله که بتوانم برایتان جبران کنم .

                  البته امروز که نمی شود ولی حتماً فردا تست می کنم و نتیجه را برایتان می نویسم
                  باز هم ممنون

                  دیدگاه


                    #10
                    پاسخ : سنجش فاصله زمانی دو لبه پائین رونده با تایمر AVR

                    سلام :smile:
                    شرمنده من دیروز عجله ای اپلود کردم فایل رو اشتباه گذاشتم. از لینک زیر میتونید برنامه درستشو دانلود کنید . بازم شرمنده
                    http://www.4shared.com/file/22361400/3221dc96/falling-int0.html?dirPwdVerified=c95a46aa
                    انجمن LABVIEW
                    http://www.eca.ir/forum2/index.php?board=279.0
                    اموزش میکروکنترلرهای AVR به زبان ساده
                    http://www.eca.ir/forum2/index.php/topic,7070.0.html

                    دیدگاه


                      #11
                      پاسخ : سنجش فاصله زمانی دو لبه پائین رونده با تایمر AVR

                      نوشته اصلی توسط حامد پروشانی
                      دوست عزیز next2004 :
                      همین که زحمت کشیدید و این کدها رابرایم گذاشتید تا آخر عمر مرا مدیون خود کردید !!!!
                      ان شاء الله که بتوانم برایتان جبران کنم .
                      البته امروز که نمی شود ولی حتماً فردا تست می کنم و نتیجه را برایتان می نویسم
                      باز هم ممنون
                      چقدر جالبه
                      توی اونی یکی از تاپیک ها دوستی از شما خواست در مورد USB و برنامه نویسی اون کمک بکنید ( با گذاشتن یه مثال ) شما گفتی که به خاطر محرمانه بودن پروژه ..... ولی الان ........ oo:

                      دیدگاه


                        #12
                        پاسخ : سنجش فاصله زمانی دو لبه پائین رونده با تایمر AVR

                        سلام دوستان :

                        دوست عزیز ، آقای حاجی زاده ،
                        من اصلاً متوجه منظور شما نشدم ؟ :surprised:

                        در آن پست ، دوست خوبم آقای بلورچیان از من خواسته بود برایش از پروژه هایی که انجام داده بودم یکی را بگذارم که من گفتم شدنی نیست . :NO:
                        اما در اینجا این دوست عزیز برای من این برنامه را نوشته اند .
                        فکر کنم تفاوت زیادی بین این 2 موضوع باشد .

                        فکر نمی کنم از کمک به دوستان دریغ کرده باشم و نخواهم کرد . :sad:

                        بحر حال ببخشید من را .
                        اگر راجع به اون پست سوالی دارید ، در همانجا مطرح بفرمائید تا جواب بدهم ، حتی اگر لازم باشد برنامه اش را برایتان میگذارم .

                        موفق باشید.

                        دیدگاه


                          #13
                          پاسخ : سنجش فاصله زمانی دو لبه پائین رونده با تایمر AVR

                          بی خیال :cry: :cry2:

                          دیدگاه

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