اطلاعیه

Collapse
No announcement yet.

مالتی پلکس با AVR

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

    مالتی پلکس با AVR

    سلام سلام!

    بازم میخوام از تجربه دوستان استفاده کنم!! تو پروژه هایی که یکی از کارای میکرو مالتی پلکسه مثلا درایو 8 تا 7segment با یه decoder/driver و... ولی یکی از کاراشه! یعنی روتین برنامه چیز دیگه ایست!! میکرو کار و زندگی داره واسه خودش!اینجا از چه تکنیکی میشه استفاده کرد که میکرو در کنار اجرای روتین اصلی کار مالتی پلکس نمایش رو هم پیوسته انجام بده؟؟! :smile:

    البته میشه مالتی پلکس این 8 کانال رو آورد تو روتین اصلی برنامه جزو دستورای حلقه اصلی ولی خب روش خوبی نیست و گاها باعث اختلالاتی مثل نا همزمانی و لرزیدن نور 7segment و اینا میشه!

    چه کنیم که در کنار روتین اصلی مثلا یه تابعی کار مالتی پلکس رو به صورت موازی انجام بده؟؟!

    ممنووووون!! :rolleyes:

    #2
    پاسخ : مالتی پلکس با AVR

    از تایمرها استفاده کن برادر
    پروردگارا: به من زيستني عطا کن که در لحظه مرگ بر بي ثمري لحظه اي که براي زيستن گذشته است حسرت نخورم، و مردني عطا کن که بر بيهودگيش سوگوار نباشم. بگذار تا آن را خود انتخاب کنم، اما آنچنان که تو دوست ميداري

    دیدگاه


      #3
      پاسخ : مالتی پلکس با AVR

      نوشته اصلی توسط امیر حسنی کاخکی
      از تایمرها استفاده کن برادر
      و وقفه!

      دیدگاه


        #4
        پاسخ : مالتی پلکس با AVR

        این به زهن خودمم رسید اول ، ولی مسئله اینه که مقدار خروجی واسه مالتی پلکس تو روتین اصلی تغییر می کنه!!

        حالا چی؟

        دیدگاه


          #5
          پاسخ : مالتی پلکس با AVR

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

          دیدگاه


            #6
            پاسخ : مالتی پلکس با AVR

            اینم یک برنامه توپ

            http://www.4shared.com/file/174544596/2951e5ea/7Segment_8DIG.html

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

            دیدگاه


              #7
              پاسخ : مالتی پلکس با AVR

              خوب مگه قرار بوده کجا تغییر کنه؟
              همون تایمر از همه بهتر و راحت تره
              پروردگارا: به من زيستني عطا کن که در لحظه مرگ بر بي ثمري لحظه اي که براي زيستن گذشته است حسرت نخورم، و مردني عطا کن که بر بيهودگيش سوگوار نباشم. بگذار تا آن را خود انتخاب کنم، اما آنچنان که تو دوست ميداري

              دیدگاه


                #8
                پاسخ : مالتی پلکس با AVR

                نوشته اصلی توسط Alireza_2020
                سلام سلام!

                بازم میخوام از تجربه دوستان استفاده کنم!! تو پروژه هایی که یکی از کارای میکرو مالتی پلکسه مثلا درایو 8 تا 7segment با یه decoder/driver و... ولی یکی از کاراشه! یعنی روتین برنامه چیز دیگه ایست!! میکرو کار و زندگی داره واسه خودش!اینجا از چه تکنیکی میشه استفاده کرد که میکرو در کنار اجرای روتین اصلی کار مالتی پلکس نمایش رو هم پیوسته انجام بده؟؟! :smile:

                البته میشه مالتی پلکس این 8 کانال رو آورد تو روتین اصلی برنامه جزو دستورای حلقه اصلی ولی خب روش خوبی نیست و گاها باعث اختلالاتی مثل نا همزمانی و لرزیدن نور 7segment و اینا میشه!

                چه کنیم که در کنار روتین اصلی مثلا یه تابعی کار مالتی پلکس رو به صورت موازی انجام بده؟؟!

                ممنووووون!! :rolleyes:
                من این کار رو قبلا برای ساعت با 7-seg انجام دادم. جواب نمیده چون در عمل اینقدر وقت میکرو صرف روشن خاموش کردن میشه که به وقفه ساعت نمی رسه جواب بده.
                از درایور سون سگمنت در کنار مالتیپلکسر معمولی استفاده کنی بهتر جواب میگیری.

                دیدگاه


                  #9
                  پاسخ : مالتی پلکس با AVR

                  درسته!! :smile:

                  بهترین راه اینه که اصلا آرگومان تابع نمایش رو عمومی تعریف کنیم ثانیا کل تابع نمایش رو تو روتین وقفه سرریز تایمر بذاریم و prescaler تایمر رو هم جوری تنظیم کنیم که با در نظر گرفتن تعداد کانالهای مالتی پلکس فرکانس اجرای نهایی کمتر از 60 50 هرتز نشه که لرزش نداشته باشه،در این صورت نمایش از روتین اصلی کاملا جدا میشه!!! و تقریبا بلافاصله هم به تغییر مقدار متغیرش جواب میده!

                  ممنوووووووون! :biggrin: :applause:

                  دیدگاه


                    #10
                    پاسخ : مالتی پلکس با AVR

                    ولی اگه بخواییم هم زمان روی lcd بنویسیم keyboard رو بخونیم و 7segment رو راه اندازی کنیم مشکل تو دریافت اطلاعات از keyboard و نوشتن روی lcd مشکل به وجود نمیاد؟

                    دیدگاه


                      #11
                      پاسخ : مالتی پلکس با AVR

                      کی برد رو از همه کانالاش یه خط مشترک با دیود بگیر و کلا یه وقفه خارجی کن ازش خلاص میشی تو همه کتابا هم شماتیکش هست
                      lcd هم من تو این پروژه ندارم ولی به سرعت نیاز نداره لچ میکنه خودش مشکلی پیش نمیاد!!!
                      7seg هم که به این روشی که بالا گفتم میفته گردن تایمر

                      روتین اصلی خالی خالیه برو حالشو ببر! :biggrin:

                      دیدگاه


                        #12
                        پاسخ : مالتی پلکس با AVR

                        روشی که برای کیبرد ذکر کردی رو میشه یکم در موردش توضیح بدی.
                        یا شماتیکی بدی.
                        ممنون.

                        دیدگاه


                          #13
                          پاسخ : مالتی پلکس با AVR

                          با کمال میل!! :biggrin:

                          ببین فرض کنیم کیبرد رو با منطق 1 فعال بخونیم دراینصورت 4 ستون رو به ترتیب 1 میکنیم و 4 سطر رو میخونیم، خب پس هر دکمه ای که فشار داده بشه یکی از سطر ها 1 خواهد شد خب ما همونطوری که کیبرد به یه پورت 8 تایی وصله این 4 سطر رو با چهار تا دیود مثل 1n4148 به هم مشترک میکنیم و به int خارجی میدیم !

                          کل کیبرد میشه وقفه! حله؟

                          شماتیکشو دارم تو محل کارم شنبه میذارم!! :biggrin:

                          دیدگاه


                            #14
                            پاسخ : مالتی پلکس با AVR

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

                            دیدگاه


                              #15
                              پاسخ : مالتی پلکس با AVR

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

                              با وقفه فقط میفهمیم که یه کلیدی فشرده شده و باید روتین تشخیص کلید فشرده شده اجرا شه! یعنی هر کلیدی که فشرده شد وقفه فعال شه و روتین کیبرد رو اجرا کنه :smile:

                              مزیت این روش اینه که مادامی که کلیدی فشرده نشده برنامه اصلا در گیر چک کردن کیبرد نیست!

                              دیدگاه

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