اطلاعیه

Collapse
No announcement yet.

تبدیل 16 ورودی به یک ورودی

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

    تبدیل 16 ورودی به یک ورودی

    درود بر همه استاید
    من 16 تا ورودی دارم که یا 5 ولت هستند ویا صفر هستند حالا من باید به ازا هر تغییر هر کدام از اینها یک بار همه ورودی ها رو چک کنم خوب برنامه هم نمی تونم بزارم دائما وضعیت این ها رو چک کنه پس باید یه جوری از تغییرات اینها بتونم یکی از پایه های اینتراپت ها رو فعال کنم حالا موندم چه طوری بفهمم که یکی از اینها تغییر کرده ؟؟؟ مممنون میشم کمکم کنید

    معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

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

    راه های مختلفی میشه ارائه کرد.
    - شما چقدر میخوای هزینه کنی؟
    - پیچیدگی مدار چقدر باشه؟
    - تغییر وضعیت اینا چقدر طول میکشه؟
    - چه مدت بعد از تغییر وضعیت میخوای اونا روبخونی؟
    - اگر قرار باشه پشت سرهم تغییر وضعیت بده فرکانسش چقدره؟
    - ...
    :read:
    1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
    2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
    3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

    دیدگاه


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

      فعلا یک روششو میگم من:

      1: استفاده از آی سی مقایسه کننده
      آی سی های مقایسه کننده در بازار موجوده
      اگه خواستی بگو بگردم شماره شو بهت بگم
      مدل های 4 بیتی یا 8 بیتیشو دیدم من.
      یعنی مثلا 4 بیت رو با 4 بیت مقایسه میکنه.
      اگه از مدل 4 بیتی بگیری باید 4 تا تهیه کنی.
      خب قراره 4 بیت رو با 4 بیت مقایسه کنه (هر آی سی)
      گام اول: در لحظه ی اول داده ها رو با میکرو میخونی
      گام دوم: داده ها رو به عنوان یکی از ورودیهای مقایسه کننده مستقیم میدی به آی سی
      گام سوم: به کمک یک مدار واسط یا مستقیم، همون داده ها رو ایندفعه با کمک میکرو، میدی به مقایسه کننده
      خروجی مقایسه کننده سه حالت داره معمولا: بزگتر کوچکتر مساوی
      (البته برخی مقایسه کننده ها ساده ترن و فقط مثلا یک حالت رو دارن)
      گام چهارم: یکی از اون سه تا پایه که بالا گفتم رو باید به وقفه میکرو وصل کنی
      (اگه پایه ی مساوی رو خواستی وصل کنی: مستقیم
      در غیر اینصورت بزرگتر و کوچکتر رو با هم OR میکنی و بعد به وقفه میدی)
      اینکه وقفه به چی حساس باشه بستگی به این داره که از کدوم پایه استفاده کنی
      خب!
      در لحظه ی اولداده های دوطرف با هم برابرن!
      حالا فرض میکنیم داده های اصلی تغییر کردن!
      بنابراین میکرو وارد وقفه میشه! وشروع میکنه به خوندن داده های جدید
      نکته ی بسیار مهم اینه که: در گام سوم یادته داده ها رو با میکرو میدادی به مقایسه کننده؟
      الان که داده های جدید رو میخونی باید داده ها رو پدیت کنی
      این گام بسیار مهمه! یعنی اپدیت داده ها بعد از تغییر!
      ...
      این یک روش نسبتا روتین


      1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
      2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
      3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

      دیدگاه


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

        نوشته اصلی توسط محمدصادق رستمی
        راه های مختلفی میشه ارائه کرد.
        - شما چقدر میخوای هزینه کنی؟
        - پیچیدگی مدار چقدر باشه؟
        - تغییر وضعیت اینا چقدر طول میکشه؟
        - چه مدت بعد از تغییر وضعیت میخوای اونا روبخونی؟
        - اگر قرار باشه پشت سرهم تغییر وضعیت بده فرکانسش چقدره؟
        - ...
        :read:
        ببینید جناب رستمی این که چه قدر بعد از وضعیت بخوام بدونم خوب حتی تا یک ثانیه هم می تونم صبر کنم ، در مورد پیچیدیگی و هزینه هم چی بگم والا ،اما فرکانسی موضوع رو نگاه نکنید این ها وضعیت یه سری سنسور هست دقیقا اگه می خوای بدونی مثل دزدگیر به موضوع نگاه کن که یه سری سنسور وصلن بعضی ها ولتاژ دارند بعضی ها ندارند حالا می خوای اگه تغییر وضعیت دیدی با یه اینتراپت خارجی مطلع شی که دائما مجبور نباشی توی یک لوپ وضعینت این ها رو بررسی کنی
        معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

        دیدگاه


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


          منظور شما یه این جور چیزیه احمتمالا جناب رستمی حالا یه داستانی پیدا میشه باید 16 تا پایه دیگه از میکرو بیارم واسه تعریف این ؟؟؟؟؟؟؟
          معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

          دیدگاه


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

            خب، ممنون از توضیحات شما. کمی واضح تر شد قضیه
            روش قبلی بر پایه ی مقایسه کننده بود و فقط از آی سی مقایسه کننده
            و یا احیانا از لچ (یا شیفت رجیستر) باید استفاده میشد.
            حالا یک روش دیگه میگم بر پایه ی لچ (از نوع D) و XOR
            (در مورد لچ: http://en.wikipedia.org/wiki/Latch_(electronics))
            جدول درستی XOR چیه؟ اگه دو تا ورودی مثه هم باشن خروجی 0 ه اگه متفاوت باشن 1 میشه
            حالا چطوری استفاده میکنیم؟
            فرض کن داده ها آماده هستن
            ابتدا اونها رو میدیم به یک لچ (لچ ها قابلیت های متنوعی دارن
            از جمله اینکه میشه خروجیشون رو در چند حالت مختلف کنترل کرد)
            (یک فرقی هم هست بین لچ و فلیپ فلاپ. یکیشون با لبه ی بالا رونده یا پایین رونده کار میکنه یکیشون با سطح)
            فرضمون اینه که در لحظه ی اول قرار داریم و هنوز هیچ تغییری رخ نداده
            حالا جفت بیتهای متناظر رو میدیم به یک XOR . بیت های متناظر چی هستن؟
            فرض کن داده ی اصلی اسمش باشه D0,D1,...D15 و داده هایی که به لچ دادیم
            برابر باشن با L0,L1,...L15 که L0 متناظر با D0 الی آخر... در نظر میگیریم
            اون جفت هایی که باید بدیم به XOR برابرن با D0,L0 و D1,L1 و ...
            در نهایت خروجی همه ی XOR ها رو OR میکنیم.
            خب! حالا یک قسمت بسیار مهم داریم! کنترل این سیستم با میکرو!
            در لحظه ی اول، زمانی که داده ها در وودی لچ قرار گرفتن، به کمک میکرو
            یک سطح 1 (یا 0 ، بستگی به نوع لچ) ایجاد میکنیم تا داده ها در خروجی لچ ظاهر شن
            و اون سطح رو به حالت قبل بر میگردونیم.
            این داده ها تا زمانی که دو باره سطح 1 (یا 0 بستگی...) به پایه ی مد نظر اعمال نشه تغییر نمیکنن
            خب!
            زمانی که وقفه صادر شد، در اینجا هم باید پدیت صورت بگیره!
            یعنی همون تغییر سطح برای پدیت شدن داده ها بعد از وقفه!
            اما وقفه چی؟ کی ایجاد میشه؟ چطور؟
            (لچ مثه یک حافظه عمل میکنه که ورودی هاشو بر روی خروجی قرار میده
            و خوشبختانه قابل کنترله که در چه زمانی داده ها رو در خروجی قرار بده)
            زمانی که داده های ورودی (دیتا ی اصلی) وداده های روی لچ یکی باشن
            خروجی همه ی XOR ها برابر با 0 میشه و چون همه به OR وصلن
            نهایتا خروجی برابر با 0 میشه
            حالا اگه یکی از داده های اصلی تغییر کنه
            یکی از خروجی های XORها برابر با 1 شده
            خروجی OR هم برابر با 1 میشه!
            و در نهایت میدیمش به یک وقفه!
            1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
            2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
            3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

            دیدگاه


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

              آفرین! دقیقا همینه! مقایسه کننده!
              اما اینکه چطوری داده ها رو جدا گانه بهش بدی!
              یعنی مقایسه کننده دو وجه داره:
              یکیش همون داده های اصلی هستن که قراره تغییر کنن و ما بفهمیم
              یکیش هم حالت قبلی همون داده های اصلی! که باید توسط میکرو به مقایسه کننده بدیم
              اما اینکه داده های قبلی چطوری به مقایسه کننده اعمال بشن؟
              1: به کمک پایه های میکرو! (در اینجا 16 تا نیاز داری)
              2: به کمک شیفت رجیستر با ورودی سریال و خروجی موازی
              3: به کمک آی سی تبدیل سریال به موازی
              روش اول که هیچی! قطعا تعداد پایه های زیادی نیاز داره
              و زیاد جالب نیست.اما در روش دوم:
              قراره ما داده های اصلی رو با داده های دفعه ی قبل مقایسه کنیم دیگه!
              و این"داده های دفعه قبل" که توسط میکرو خونده شدن قبلا، باید به عنوان ورودی دوم مقایسه کننده استفاده بشه.
              اما چطوری فراهم بشه؟
              اگه یک شیفت رجیستری باشه که بهش سریال بدیم و خروجی موازی بده
              و یا در حالت سوم یک آی سی که بهش سریال بدیم موازی بهمون بده
              (هر دو تاش موجوده. قبلا یکی از دوستان پرسیده بود، اسم ودیتاشیت و لینکشو گذاشته بودیم)
              به کمک میکرو، و با دو تا پایه (یکی دیتا یکی کلاک) داده هایی که قبلا خوندیم رو وارد این آی سی ها میکنیم
              احتمالا یک پایه ی دیگه از میکرو هم نیازه میشه (شد سه تا/به جای 16تا) برای کنترل کردن...
              :read:
              1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
              2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
              3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

              دیدگاه


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

                جناب رستمی
                واقعا شرمنده شدم این همه تایپ کردید و وقت گذاشتید جمع بندی می کنم نتیجه رو اینجا میزارم که شما چک کنید راه اشتباه نرم
                ولی یازم یه دنیا ممنون

                معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

                دیدگاه


                  #9
                  پاسخ : تبدیل 16 ورودی به یک ورودی

                  دشمن شما شرمنده
                  فقط یک نکته ای رو بگم:
                  در حالت کلی کاری که باید بکنیم اینه:
                  ذخیره ی داده های قبلی (یک مرحله) و مقایسه با داده های جدید!
                  یعنی کلا دو قسمت عمده داریم: ذخیره، مقایسه!
                  و بعدش تولید سیگنال آلارم! (همون وقفه)
                  حالا هر مجموعه مداری که این کار رو انجام بده
                  میتونه برای این کار مورد استفاده قرار بگیره :nerd:
                  1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
                  2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
                  3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

                  دیدگاه


                    #10
                    پاسخ : تبدیل 16 ورودی به یک ورودی


                    جناب رستمی این برای شیفا رجیستر جواب میده ؟ موجود هم هست

                    معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

                    دیدگاه


                      #11
                      پاسخ : تبدیل 16 ورودی به یک ورودی

                      من به نوبه خود از انگیزه بالای جناب رستمی و وقتی که برای ارائه پاسخ های مفید اختصاص می دهند، تشکر می کنم. در مورد سوال شما، اگر قرار است یک IC مجزا برای تشخیص تغییرات قرار داده شود و اگر هزینه ای در حدود 3 هزارتومان برای کاربرد شما مهم نیست، چرا از میکروکنترلری مانند ATtiny2313 استفاده نمی کنید که به غیر از ورودی Reset می تواند از 17 خط I/O پشتیبانی کند. در این شرایط این میکروکنترلر می تواند بصورت دائمی کار نظارت بر ورودی ها را انجام دهد و در صورت مشاهده تغییرات، برای وقفه میکروکنترلر اصلی فرمان لازم را ایجاد کند. یا حتی در یک مرحله بالاتر می تواند بجای ایجاد وقفه، از طریق یک پین وضعیت ورودی ها را بصورت سریال برای میکروی اصلی ارسال کند (ارسال یک طرفه از طریق usart یا ارتباط دو طرفه از طریق 1wire). در این شرایط دیگر نیازی به اتصال ورودی ها به میکروکنترلر اصلی نیست و فقط وضعیت آنها در این میکروکنترلر بصورت سریال دریافت می شود.
                      اوژن: به معنای افکننده و شکست دهنده است
                      دانایی، توانایی است-Knowledge is POWER
                      برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                      وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                      قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                      اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                      ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                      دیدگاه


                        #12
                        پاسخ : تبدیل 16 ورودی به یک ورودی

                        این آی سی که شما گذاشتی در جای دیگه برای ما مفیده!
                        کار این آی سی چیه؟
                        - 16 بیت ورودی موازی میگیره، خروجی سریال میده
                        - 16بیت ورودی سریال میگیره، خروجی سریال میده
                        اما چیزی که ما نیاز داریم چیه؟
                        برای مقایسه، نیاز داریم که 16 بیت با 16 بیت مقایسه بشه!
                        یعنی یک آی سی که مثلا 16 بیت به صورت سریال بگیره
                        و اون 16 بیت رو موازی قرار بده درخروجیش!
                        یعنی: serial to parallel
                        ببین 74675 چیه؟
                        اما این آی سی شما کجا کاربرد داره؟
                        میتونی به کمک این آی سی داده ها رو وارد میکرو بکنی!
                        یعنی کجا؟
                        شما قراره این 16 بیت رو بخونی
                        آیا میخوای همه رو با پایه های میکرو بخونی؟
                        اگه از این آی سی ایتفاده کنی با حداکثر 3 یا 4 پایه
                        همون داده های موازی رو به صورت سریال به کمک میکرو میخونی
                        داده ها رو که خوندی در 2 جا به کارت میاد:
                        - اول: متناسب با داده ها دستورات اجرا میشن
                        - دوم: به عنوان داده ای که باید با حالت بعدی مقایسه بشه استفاده میشه.
                        ...
                        :read:
                        1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
                        2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
                        3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

                        دیدگاه


                          #13
                          پاسخ : پاسخ : تبدیل 16 ورودی به یک ورودی

                          نوشته اصلی توسط طراح
                          من به نوبه خود از انگیزه بالای جناب رستمی و وقتی که برای ارائه پاسخ های مفید اختصاص می دهند، تشکر می کنم. در مورد سوال شما، اگر قرار است یک IC مجزا برای تشخیص تغییرات قرار داده شود و اگر هزینه ای در حدود 3 هزارتومان برای کاربرد شما مهم نیست، چرا از میکروکنترلری مانند ATtiny2313 استفاده نمی کنید که به غیر از ورودی Reset می تواند از 17 خط I/O پشتیبانی کند. در این شرایط این میکروکنترلر می تواند بصورت دائمی کار نظارت بر ورودی ها را انجام دهد و در صورت مشاهده تغییرات، برای وقفه میکروکنترلر اصلی فرمان لازم را ایجاد کند. یا حتی در یک مرحله بالاتر می تواند بجای ایجاد وقفه، از طریق یک پین وضعیت ورودی ها را بصورت سریال برای میکروی اصلی ارسال کند (ارسال یک طرفه از طریق usart یا ارتباط دو طرفه از طریق 1wire). در این شرایط دیگر نیازی به اتصال ورودی ها به میکروکنترلر اصلی نیست و فقط وضعیت آنها در این میکروکنترلر بصورت سریال دریافت می شود.
                          ممنون از توجه شما
                          اتفاقا در یکی از پروژه هامون همینکار رو کردیم.
                          داده های مختلف از جاهای مختلف به کمک یک میکرو جمع آوری میشدن (مثلا هر میکرو 8 تا دما رو بخونه، یا تعداد بیشتر به روش مالتی پلکسینگ و ...) تبدیل به یک پکیج میشدن و در نهایت برای کنترلر اصلی ارسال میشدن. و برای اطمینان از صحت، سه بار ارسال میشد و چک میشد.
                          اتفاقا از نظر هزینه و راحتی کار، فکر میکنم روش شما بسیار بسیار متناسب تر باشه
                          ...
                          :read:
                          1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
                          2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
                          3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

                          دیدگاه


                            #14
                            پاسخ : تبدیل 16 ورودی به یک ورودی

                            باز هم از استاد رستمی عزیز و استاد کی نژاد ممنونم .به نتیجه رسید
                            معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

                            دیدگاه


                              #15
                              پاسخ : پاسخ : تبدیل 16 ورودی به یک ورودی

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

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

                              دیدگاه

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