اطلاعیه

Collapse
No announcement yet.

پروتکل I2C

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

    پروتکل I2C

    سلام
    میشه پروژه ارتباط I2C دو میکرو مثل Atmega8 و Atmega16 با کد ویژن بزارید . و چجوری Master رو توی Codewizzard انتخاب کنیم ؟ باید Slave Address رو 0 بزاریم تا Master باشه؟
    پیشاپیش ممنون.

    #2
    پاسخ : پروتکل I2C

    کسی نیست کمک کنه؟

    دیدگاه


      #3
      پاسخ : پروتکل I2C

      عزیز اول اینکه جناب سپاسیار تو نت یه آموزش AVR گذاشتن که توش I2C رو خیلی ساده و رون توضیح دادن.
      دوم اینکه مستر یا اسلیو توسط تراشه ای که شرایط start , stop رو بوجود میاره ایجاد میشه

      دیدگاه


        #4
        پاسخ : پروتکل I2C

        یعنی اینکه Slave Address داخل Codewizzard رو برای مستر 0 بزارم؟

        دیدگاه


          #5
          پاسخ : پروتکل I2C

          آدرس 0 آدرس عمومیه (یعنی همه اسلیوها بفهمند) بعدشم اینکه مستر نیازی به آدرس نداره هرچی گذاشتی مشکلی نداره

          دیدگاه


            #6
            پاسخ : پروتکل I2C

            توی کتب اموزش AVR در ان مورد پروژه هست
            ولی اگر میخوای اسلیو بسازی
            میبایست از دو پین سخت افزاری SCL,SDA استفاده کنی
            و در کدویزارد قسمت TWI پیکربندی رو انجام بدی

            برای مستر هم میتونی از هر پینی و قسمت I2C رو پیکربندی کنی
            هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
            بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
            میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

            تعدادی ماژول GPS GP5MX1513F1 با بالاتریت حساسیت -170db به قیمت خرید بفروش میرسد

            دیدگاه


              #7
              پاسخ : پروتکل I2C

              میشه به برنامه من یک نگاه بندازید mega16 مستر و فرستنده هست mega8 گیرنده و اسلیو وقتی mega8 عدد 1 رو میگیره led رو روشن میکنه اما روشن نمیشه. :sad:
              http://reza1376.persiangig.com/I2c.rar
              با تشکر

              دیدگاه


                #8
                پاسخ : پروتکل I2C

                برنامه رو نگاه کردم چرا حلقه while رو پاک کردی ؟!!!!!!!!!!!!!! اینجوری میکرو یه بار بیشتر برنامه رو اجرا نمیکنه و بعدش بیکار میشه AVR که مثل کامپیوتر نیست که سیستم عامل داشته باشه :angry:
                به این جور سیستمها میگن embedded واسه اینجور سیستم حتما باید کد دستوراتت رو تو یه حلقه بی نهایت بذاری حتی اگه دستوری نمینویسی و مثلا میخواهی از روتین سرویس وقفه استفاده کنی باز باید این حلقه باشه اینجوری CPU تو حلقه منتظرمیمونه تا وفقه ایجاد بشه. در ضمن کد کد ویزارد این حلقه روبرات آخر برنامه میذاره!!!!

                من زیاد با کدویژن کارنکردم و توابعی که استفاده کردی رو نمیدونم درسته یانه !!!!! ولی برات یه فایل سورس برنامه میکرو در حالت SLAVE و MASTER به اضافه ی فایل پروتئوسش میذارم تو این فایل به کمک روتین وقفه ی پورت سری I2C عدد 0x88 یا همون 0b10001000 از مستر به اسلیو فرستاده میشه و تو اسلیو LED های متناظرش روشن مشه. آموزش کاملش رو هم تو سایت تکنو الکترو گذاشتم
                http://forum.techno-electro.com/thread-26-page-4.html

                فایل ها بالا رو میتونی از اینجا http://uplod.ir/ccwm4wbw7jpm/m_s.rar.htm دانلود کنی

                دیدگاه


                  #9
                  پاسخ : پروتکل I2C

                  ممنون ولی من از دستورات i2c.h استفاده میکنم در ضمن فایل hex داخل پوشه نبود :wow: حلقه while چون هیچی توش نبود پاک کردم :biggrin:

                  دیدگاه


                    #10
                    پاسخ : پروتکل I2C

                    اصولا برنامه های میکرو بعد از یکسری تنظیمات اولیه وارد حلقه اصلی برنامه میشند که این لوپ یه حلقه بینهایته(چون تا وقتی میکرو روشنه باید یکسری کار روتین رو انجام بده)
                    کدویزارد در کدویژن هم دقیقا تنظیمات درخواستی شما رو انجام میده بعدش هم یه حلقه while خالی با شرط یک (همواره درست که میشه همون حلقه بی نهایت خالی ) برات میسازهو شما باید برنامه اصلیتو داخل این حلقه بنویسی.
                    تنظیمات مربوط به ارتباط I2C با ماژول جانبی هم چون فقط یکبار باید انجام بشه قبل از این حلقه باید نوشته بشه

                    دیدگاه


                      #11
                      پاسخ : پروتکل I2C

                      مشکل اصلی اون برنامه ات همین پاک کردن حلقه بینهایت while هستش. ببین میکرو دستورات رو یکی یکی اجرا میکنه وقتی حلقه بینهایت تودستوراتت نباشه به آخرین دستور که میرسه دیگه کارش تموم میشه و کار دیگه ای انجام نمیده حالا از این بگذریم!!!!!!!!!!!!

                      توی فایلی که گذاشتم یه فایل به اسم twi-master-transmitter.c که حاوی سورس برنامه ی مستر در حالت فرستنده است یه پروِه جدید تو کدویژن درست کن نمیخواد چیزی رو تو ویزاردش دست بزنی بعد این فایل رو با notpad باز کن همش رو کپی کن بریز تو کدویژن بعد برنامه رو کامپایل کن کد هگزش درست میشه اون یکی فایل هم مال اسلیو هستش اونم همین بلا رو سرش بیار :wow:
                      به همین راحتی!!!!!!!!!!!!!!!!!!!!!
                      سوالی بود ما در خدمتیم :applause:

                      دیدگاه


                        #12
                        پاسخ : پروتکل I2C

                        برنامه خوبی بود اما من اصلا از ریجستر های twi سر در نمی یارم :angry: :cry2:

                        دیدگاه


                          #13
                          پاسخ : پروتکل I2C

                          گفتم که آموزش twi رو تو سایت تکنو الکترو کامل کردم و تمام رجیسترش ها شو توضیح دادم همین برنامه رو البته با کمی تغییرات توضیحش رو اونجا دادم که چیکار میکنه
                          یه سری اونجا بزن سوالی بود در خدمتم :wow:

                          خودت میتونی براحتی توابع کار با این پورت رو بنویسی :read: سعی میکنم نحوه نوشتن توابعش رو اونجا شرح بدم البته منوط به اینه که یکم سرم خلوت بشه

                          دیدگاه


                            #14
                            پاسخ : پروتکل I2C

                            میشه دوباره http://uplod.ir/ccwm4wbw7jpm/m_s.rar.htm دوباره پلود کنید از روی سیستمم پاک شده .از سایت upload.ir هم پاک شده.
                            ممنون

                            دیدگاه

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