اطلاعیه

Collapse
No announcement yet.

بهتری روش ارتباطی بین میکروهای pic

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

    بهتری روش ارتباطی بین میکروهای pic

    سلام به همه دوستان.
    1-کسی نظری داره در ارتباط با اینکه بهترین روش برقراری ارتباط بین دو میکرو PIC(مثلا 18f452 یا 16f877a) چیه؟(لطفا اگه توضیح دادید روشهای دیگه رو هم توضیح بدید که به یک جمع بندی خوب برسیم)
    2-اگه بخواهیم بین دو میکرو از طریق یک پایه، ارتباطی برقرار کنیم. که مثلا اتفاق افتادن شرطی رو به میکرو دوم تنها به صورت صفر و یک با دو دستور output_bit و input اعلام کنیم.آیا راهی وجود داره که اگه اون پایه رو به صورت ورودی پیکر بندی کردیم ، وسط برنامه تغییرش بدیم و خروجیش کنیم؟
    از همه دوستان که شب و روز در راه ارتقاء دانش تلاش میکنند ممنونم. :job: :job: :job: :job:

    #2
    پاسخ : بهتری روش ارتباطی بین میکروهای pic

    با سلام

    کسی نظری داره در ارتباط با اینکه بهترین روش برقراری ارتباط بین دو میکرو PIC(مثلا 18f452 یا 16f877a) چیه؟
    دوست عزیز اکثرا از دو پروتکل معروف SPI و I2C برای ارتباط بین دو میکروکنترلر و یا ادوات جانبی مثل ماژولهای الکتریکی استفاده میکنیم. بطور خلاصه و مفید میشه گفت که سرعت SPI نسبت به I2C بیشتره و در پروتکل SPI ازسه پایه میکرو استفاده میشه ولی در پروتکل I2C از دو پایه(البته این وقتیه که از دو تا میکرو استفاده میکنید) و همچنین میشه با استفاده از پروتکل I2C با بیش از دو میکرو ارتباط داشت که در این شرایط تعداد پایه های ارتباطی بین میکروها از دو به سه و یا بیشتر(برای Master) تغییر میکنه ، البته این دو مقایسه رو میشه به عنوان ساده ترین مقایسه دو پروتکل فوق در نظر گرفت ولی برای اطلاعات بیشتر از نحوه کار و این دو پروتکل باید به دیتاشیت هر دو میکرو مراجعه کنید.
    یک پروتکل ارتباطی به نام CAN هم وجود داره که این دو میکرو ساپورت نمیکنند، تو این پروتکل با استفاده از دو سیم میتونید چندین دستگاه یا میکرو رو به هم وصل کنید و سرعتش از دو پروتکل بالا هم بیشتره.


    اگه بخواهیم بین دو میکرو از طریق یک پایه، ارتباطی برقرار کنیم
    دوست من این سوال شما رو اینطوری پاسخ میدم! شما فرض کنید که با استفاده از شستی(کلید فشار) میخواین یه LED رو روشن خاموش کنید، وقتی شستی رو فشار میدید پایه ی که شستی وصله ست میشه( بسته به برنامه شما داره که پایه با صفر فعال بشه یا با یک) با ست شدن پایه LED روشن میشه و ...
    حال شما به جای شستی باید از یه قطعه ای (ترانزیستور، اپتوکوپلر، ...) استفاده کنید که این ست و ریست کردن پایه میکرو رو به صورت دیجیتالی انجام بده


    امیدوارم مطالبی که گذاشتم براتون مفید بوده باشه

    موفق باشید

    دیدگاه


      #3
      پاسخ : بهتری روش ارتباطی بین میکروهای pic

      ممنونم
      به این ترتیب به نظر شما I2C روش بهتر و راحت تریه.و کار باهاش راحت تره.
      در مورد بخش دوم منظور من این بود که مثلا وقتی یک پایه میکرو 1 رو با دستور set_tris خروجی تعریف کردیم و پایه میکرو 2 رو ورودی .اگه خواستیم این بار همین کار رو وسط برنامه برعکس کنیم و اینبار میکرو 2 فرستنده و میکرو 1 گیرنده بشه چی کار باید بکنیم.

      دیدگاه


        #4
        پاسخ : بهتری روش ارتباطی بین میکروهای pic

        نوشته اصلی توسط isv10
        سلام به همه دوستان.
        1-کسی نظری داره در ارتباط با اینکه بهترین روش برقراری ارتباط بین دو میکرو PIC(مثلا 18f452 یا 16f877a) چیه؟(لطفا اگه توضیح دادید روشهای دیگه رو هم توضیح بدید که به یک جمع بندی خوب برسیم)
        2-اگه بخواهیم بین دو میکرو از طریق یک پایه، ارتباطی برقرار کنیم. که مثلا اتفاق افتادن شرطی رو به میکرو دوم تنها به صورت صفر و یک با دو دستور output_bit و input اعلام کنیم.آیا راهی وجود داره که اگه اون پایه رو به صورت ورودی پیکر بندی کردیم ، وسط برنامه تغییرش بدیم و خروجیش کنیم؟
        از همه دوستان که شب و روز در راه ارتقاء دانش تلاش میکنند ممنونم. :job: :job: :job: :job:
        در ابتدا از جواب صحیح SA3ID تشکر میکنم .
        ببینید یک روش ساده تر هم برای ارتباط بین دو میکرو هست که با یک سیم ارتباط برقرار میشه . این روش همون RS232 هست با این تفاوت که در دستور #use rs232 پین های tx و rx یکسان انتخاب شوند و عبارت force_sw نیز نوشته شود . با این کار فرآیند ارسال و دریافت توسط یک پین از میکرو صورت می پذیرد . نکته فوق العاده مهم در این روش موضوع Collission یا تصادم می باشد . به این معنی که دو میکرو در یک زمان واحد قصد تصرف کانال ارتباطی را داشته باشند که در این صورت دیتای ارسالی از طرف هر دو میکرو نابود می شود و به مقصد نمیرسد . برای حل این مشکل شما باید به نوعی یک پروتکل برای دو میکرو تعریف نمایید که تحت این قانون ، هیچ زمانی پیش نیاید که دومیکرو قصد تصرف همزمان کانال را داشته باشند .
        در مورد سوال دومتون هم ، بله میتونید در اواسط برنامه هم جهت ورودی یا خروجی بودن یک پین را تغییر دهید . مشکلی پیش نمی آید .

        دیدگاه


          #5
          پاسخ : بهتری روش ارتباطی بین میکروهای pic

          سلام
          میشه لطف کنید در مورد پروتکل SPI اگه مطلب جاهعی دارید قرار بدین ؟!
          از کتابخانه های CCS میشه به راحتی استفاده کرد و سراغ داستان پروتکل ها نریم ؟(مخصوصا در مورد EEPROM های سریال)
          ممنون
          زمان تنها واحد حقیقی اندازه گیریه
          زمان وجود ماده رو اثبات میکنه
          بدون زمان هیچکدوم ما وجود نخواهیم داشت
          زمان یکتاست

          دیدگاه


            #6
            پاسخ : بهتری روش ارتباطی بین میکروهای pic

            بله که میشه از کتابخونه هاش استفاده کرد! نکته مهم اینه که حتما باید عدد 0 را در دستور READ به صورت آرگومان انتقال دهیم یعنی: spi_read(0);‎

            دیدگاه


              #7
              پاسخ : بهتری روش ارتباطی بین میکروهای pic

              سلام
              از پاسخهای بسیار مفیدتون سپاسگذارم.
              جناب ایجی در مورد این بخش از پاسختون
              در مورد سوال دومتون هم ، بله میتونید در اواسط برنامه هم جهت ورودی یا خروجی بودن یک پین را تغییر دهید . مشکلی پیش نمی آید .
              باز هم باید از set_tris استفاده بکنم وسط برنامه یا با output_bit و input مشکل حل میشه.

              دیدگاه


                #8
                پاسخ : بهتری روش ارتباطی بین میکروهای pic

                نوشته اصلی توسط isv10
                سلام
                از پاسخهای بسیار مفیدتون سپاسگذارم.
                جناب ایجی در مورد این بخش از پاسختون باز هم باید از set_tris استفاده بکنم وسط برنامه یا با output_bit و input مشکل حل میشه.
                حتما باید از دستور SET_TRIS استفاده کنید . دستورات ورودی/خروجی به تنهایی پاسخگو نخواهند بود .

                دیدگاه


                  #9
                  پاسخ : بهتری روش ارتباطی بین میکروهای pic

                  سلام دوست عزیز
                  شما به راحتی میتونید تعریف یه پایرو وسط برنامه نویسی عوض کنی چون من این کارو کردم
                  مثلا یه پایه ورودی بوده شده خروجی
                  فکر کنم دیجیتال هم بتونی به آنالوگ تعریف بکنی یا بلعکس
                  ولی بهترین راه به نظر من rs485

                  دیدگاه

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