اطلاعیه

Collapse
No announcement yet.

کمک در راه اندازی i2c و spi بدون codewizard و توابع codevision

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

    کمک در راه اندازی i2c و spi بدون codewizard و توابع codevision

    سلام دوستان کسی هست که i2c ,spi رو بدون استفاده از توابع codevision و codewizard راه انداخته باشه؟؟؟ :mrgreen:
    متاسفانه من نتونستم هر کاری کردم.
    ممنون میشم اگه کسی این کارو کرده یه مثال خیلی ساده و شسته روفتشو که انجام داده بهم بده(اگه فایل .c باشه که عالیه :cry2
    ممنونم
    اشکهايي که پس از هر شکست ميريزيم همان عرقيست که براي پيروزي نريخته ايم.
    هيتلر

    #2
    پاسخ : کمک در راه اندازی i2c و spi بدون codewizard و توابع codevision

    آموزش میکرو AVR نوشته آقای سپاسیار رو تو نت سرچ کن. توش بدون استفاده از کدویزارد راه اندازی کردن

    دیدگاه


      #3
      پاسخ : کمک در راه اندازی i2c و spi بدون codewizard و توابع codevision

      نوشته اصلی توسط mojalan
      آموزش میکرو AVR نوشته آقای سپاسیار رو تو نت سرچ کن. توش بدون استفاده از کدویزارد راه اندازی کردن
      دارم برای ایشون رو spi رو با spi() رفتن فقط تنظیماتش رو توضیح دادن منم دقیقا مشکلم تو نوشتن spi() هست
      اشکهايي که پس از هر شکست ميريزيم همان عرقيست که براي پيروزي نريخته ايم.
      هيتلر

      دیدگاه


        #4
        پاسخ : کمک در راه انداز? i2c و spi بدون codewizard و توابع codevision

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

        دیدگاه


          #5
          پاسخ : کمک در راه انداز? i2c و spi بدون codewizard و توابع codevision

          نوشته اصلی توسط mojtaba_led
          با سلام
          من هفته پیش دو تا مثال از شبکه کردن چند میکرو با اس پی آى تو ،تو کامپایلر وین ای وی آر تو یه تاپیکی گزاشتم،البته چون برنامه هاش چیز منحصر بفردی در رابطه با سینتکس نداشت میشه مستقیم تو سی وی هم استفاده کرد، ببخشید الان با گوشی کامنت میزارم نمیتونم لینکش رو پیدا کنم اگه به ارسالهای اخیر بنده مراجعه کنید احتمالا پیداش میکنید.
          سلام
          ممنون
          چشم دنیالشون میگردم تا ببینم مبتونم پیدا کنم یا نه مشکل اصلی تو spi اینکه یه رجیستز داره که با اون هم مینویسه هم میده این خیلی درد سر سازه موقعی که من کار میکردم بعضی اوقات نمیخوند اشتیاه میخوند.اصلا وضعی داشتم ..
          در مورد i2c هم تو codewizard یه twi داره یه i2c من اخر تنظیماتشون رو نفهمیدم oo:اومدم از روی کتاب بخونم بیشتر گیج شدم چون جدن دفتر دستک زیاد داره و کتابم اومده همه چیو تو یه مثال پیاده کرده واسه همین میخواستم یدونم راهی هست که این مشکل spi که گفتم حل شه؟ و راه راحتتری برای تازه کارا با i2c هست؟یه راه ساده واسه شروع....راستش این تجربه رو بیشتر برای راه اندازی روی arm میخوام اما اول میخوام رو avr جواب بده..ممنون
          اشکهايي که پس از هر شکست ميريزيم همان عرقيست که براي پيروزي نريخته ايم.
          هيتلر

          دیدگاه


            #6
            پاسخ : کمک در راه اندازی i2c و spi بدون codewizard و توابع codevision

            آقا این اون تاپیکی هست که گفتم :
            http://www.eca.ir/forum2/index.php?topic=62959.msg357221#msg357221
            نوشته اصلی توسط Saeed Saeb
            در مورد i2c هم تو codewizard یه twi داره یه i2c من اخر تنظیماتشون رو نفهمیدم oo:اومدم از روی کتاب بخونم بیشتر گیج شدم چون جدن دفتر دستک زیاد داره و کتابم اومده همه چیو تو یه مثال پیاده کرده واسه همین میخواستم یدونم راهی هست که این مشکل spi که گفتم حل شه؟ و راه راحتتری برای تازه کارا با i2c هست؟یه راه ساده واسه شروع....راستش این تجربه رو بیشتر برای راه اندازی روی arm میخوام اما اول میخوام رو avr جواب بده..ممنون
            کلا به نظر من کار با spi راحتر از i2c هست.تو اون مثال ها هم که گفتم با رجیستر ها کار کردم و دقیقا از همون توابعی که تو دیتا شیت میکرو که اتمل مثال زده استفاده کردم .
            twi ، یه رابط سریال دو سیمه هست ، به صورت مستر و اسلیو که حالا این مستر و اسلیو ها هر کدوم میتوننن تو دو تا مد مستر فرستنده و مستر گیرنده و اسلیو فرستنده و اسلیو گیرنده عمل کنن با توجه به نوع کار .
            i2c هم یه پرتکل ارتباط دوسیمه (twi) هست .
            به خاطر خاصیت وایر اند هم میشه تو یه شبکه چند تا مستر داشت که در هر لحظه یکی از اون ها حکمیت رو در دست میگیره .
            حالا این ارتباط رو میشه هم به صورت سخت افزاری و هم به صورت نم افزاری پیدا کرد .
            برای ارتباط به صورت سخت افزاری باید با همون رجیستر ها ی مربوطه و پایه های scl , sda کار کنید ولی تو نرم افزاری خودمون تعریف میکنیم که خط کلاک و دیتا چه پایه هایی از میکرو هستند ولی مزیت ارتباط سخت افزاری به نرم افزاری اینه که دیگه باری جهت این نوع ارتباط با دنیای خارج به cpu تحمیل نمیشه و زمانی که سرعت اجرا روال کلی برنامه برامون مهم هست بهتره از ارتباط سخت افزاری استفاده کنیم چون اون خودش یه پریفریال جانبی هست .
            و این رو هم بگم که گفته باشم ، پایه های scl , sda باید با یه مقاومتی تو رنج 4.7 کیلو ا 10 کیلو پول پ بشه .

            حالا تو کدویژن یه کتابخونه با نام i2c هست که میشه با استفاده از اون به صورت نرم افزاری با پرتوکول i2c از طریق میکرو به عنوان یه مستر با دستگاه های جانبی به عنوان اسلیو ارتباز برقرار کرد که البته یه سری کتابخونه های دیگه هم که برای راحتی کار با پرفریال هایی که با این پرتوکول کار میکنن مثل lm75 نوشته شده و میشه با فراخونی اون ها با استفاده از توابعشون با اون دستگاه از این طریق ارتباط بر قرار کرد .

            دیدگاه


              #7
              پاسخ : کمک در راه اندازی i2c و spi بدون codewizard و توابع codevision

              نوشته اصلی توسط mojtaba_led
              آقا این اون تاپیکی هست که گفتم :
              http://www.eca.ir/forum2/index.php?topic=62959.msg357221#msg357221کلا به نظر من کار با spi راحتر از i2c هست.تو اون مثال ها هم که گفتم با رجیستر ها کار کردم و دقیقا از همون توابعی که تو دیتا شیت میکرو که اتمل مثال زده استفاده کردم .
              twi ، یه رابط سریال دو سیمه هست ، به صورت مستر و اسلیو که حالا این مستر و اسلیو ها هر کدوم میتوننن تو دو تا مد مستر فرستنده و مستر گیرنده و اسلیو فرستنده و اسلیو گیرنده عمل کنن با توجه به نوع کار .
              i2c هم یه پرتکل ارتباط دوسیمه (twi) هست .
              به خاطر خاصیت وایر اند هم میشه تو یه شبکه چند تا مستر داشت که در هر لحظه یکی از اون ها حکمیت رو در دست میگیره .
              حالا این ارتباط رو میشه هم به صورت سخت افزاری و هم به صورت نم افزاری پیدا کرد .
              برای ارتباط به صورت سخت افزاری باید با همون رجیستر ها ی مربوطه و پایه های scl , sda کار کنید ولی تو نرم افزاری خودمون تعریف میکنیم که خط کلاک و دیتا چه پایه هایی از میکرو هستند ولی مزیت ارتباط سخت افزاری به نرم افزاری اینه که دیگه باری جهت این نوع ارتباط با دنیای خارج به cpu تحمیل نمیشه و زمانی که سرعت اجرا روال کلی برنامه برامون مهم هست بهتره از ارتباط سخت افزاری استفاده کنیم چون اون خودش یه پریفریال جانبی هست .
              و این رو هم بگم که گفته باشم ، پایه های scl , sda باید با یه مقاومتی تو رنج 4.7 کیلو ا 10 کیلو پول پ بشه .

              حالا تو کدویژن یه کتابخونه با نام i2c هست که میشه با استفاده از اون به صورت نرم افزاری با پرتوکول i2c از طریق میکرو به عنوان یه مستر با دستگاه های جانبی به عنوان اسلیو ارتباز برقرار کرد که البته یه سری کتابخونه های دیگه هم که برای راحتی کار با پرفریال هایی که با این پرتوکول کار میکنن مثل lm75 نوشته شده و میشه با فراخونی اون ها با استفاده از توابعشون با اون دستگاه از این طریق ارتباط بر قرار کرد .
              ممنون حتما الان بهشون نگاه میکنم...من سوال اصلیم راجعبه ریجیستر spdr تو spi هست این ریجیستر خیلی ازارم میده مشکل زمان داره البته یه راه حلی به نظرم رسیده که باید تست بشه تا ببینیم جواب میده یا نه.. اینو در اصل یرای راه اندازی arm میخوام
              اشکهايي که پس از هر شکست ميريزيم همان عرقيست که براي پيروزي نريخته ايم.
              هيتلر

              دیدگاه


                #8
                پاسخ : کمک در راه اندازی i2c و spi بدون codewizard و توابع codevision

                نوشته اصلی توسط Saeed Saeb
                ممنون حتما الان بهشون نگاه میکنم...من سوال اصلیم راجعبه ریجیستر spdr تو spi هست این ریجیستر خیلی ازارم میده مشکل زمان داره البته یه راه حلی به نظرم رسیده که باید تست بشه تا ببینیم جواب میده یا نه.. اینو در اصل یرای راه اندازی arm میخوام
                متوجه نشدم !؟

                دیدگاه


                  #9
                  پاسخ : کمک در راه اندازی i2c و spi بدون codewizard و توابع codevision

                  نوشته اصلی توسط mojtaba_led
                  متوجه نشدم !؟
                  :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:
                  مشکلم توی کار با ریجیستر spdr هست که برای spi هست که قاطی میشه چ.ن هم واسه فرستادن هم گرفتن گاهی میخونی چیزیه که میکرو دیگه داده گاهی میخونی چیزیه که قبلا خودت توش نوشتی .. سر این اذیت میشم
                  اشکهايي که پس از هر شکست ميريزيم همان عرقيست که براي پيروزي نريخته ايم.
                  هيتلر

                  دیدگاه


                    #10
                    پاسخ : کمک در راه اندازی i2c و spi بدون codewizard و توابع codevision

                    نوشته اصلی توسط Saeed Saeb
                    :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:
                    مشکلم توی کار با ریجیستر spdr هست که برای spi هست که قاطی میشه چ.ن هم واسه فرستادن هم گرفتن گاهی میخونی چیزیه که میکرو دیگه داده گاهی میخونی چیزیه که قبلا خودت توش نوشتی .. سر این اذیت میشم
                    سلام.
                    راستش منم با این پروتکل خیلی مشکل دارم و هنوز درگیر یه پروزه هستم و شدیداً نیاز به شبکه کردن از طریق spi رو دارم. من مشکلم شبیه مشکل شماست البته یکم فرق میکنه!

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

                    من رو زمانبدی اینکار مشکل دارم. میدونید که مستر همیشه ارتباط رو آغاز میکنه و اسلیو جوابشو میده! حال بعضی وقتا اسلیو با مستر کار داره و باید سریع جوابشو از مستر بخواد و ما باید این زمانبندی رو درست حساب کنیم ! حال اگه اسلیو های بیشتری داشته باشیم اینکار سخت تر میشه. این قسمتو مشکل دارم ! :angry: اگه کسی پیشنهاد بهتری داره شدیداً نیازمند یاری سبزتان هستم!


                    ممنون

                    دیدگاه


                      #11
                      پاسخ : کمک در راه اندازی i2c و spi بدون codewizard و توابع codevision

                      سلام
                      spi یک واسط ارتباطی دو طرفه است. وقتی که یک ارتباط صورت میگیره، مقدار رجیسترهای spdr دو میکرو با هم جابجا میشه. حالا اگه شما چیزی برای ارسال نداشته باشید و فقط بخواهید دریافت کنید میتوانید یک مقدار دلخواه در spdr بنویسید (مثل 0x00) و ارتباط رو برقرار کنید، در طرف دیگر هم باید مقدار خواسته شده از قبل از ایجاد ارتباط در spdr نوشته شده باشد و بعد از ارتباط، مقدار جدید spdr نادیده گرفته شود.

                      دیدگاه


                        #12
                        پاسخ : کمک در راه اندازی i2c و spi بدون codewizard و توابع codevision

                        نوشته اصلی توسط aed
                        سلام
                        spi یک واسط ارتباطی دو طرفه است. وقتی که یک ارتباط صورت میگیره، مقدار رجیسترهای spdr دو میکرو با هم جابجا میشه. حالا اگه شما چیزی برای ارسال نداشته باشید و فقط بخواهید دریافت کنید میتوانید یک مقدار دلخواه در spdr بنویسید (مثل 0x00) و ارتباط رو برقرار کنید، در طرف دیگر هم باید مقدار خواسته شده از قبل از ایجاد ارتباط در spdr نوشته شده باشد و بعد از ارتباط، مقدار جدید spdr نادیده گرفته شود.
                        داداش من یه مدار کوچیک بستم مستر w میداد اسلیو led روشن میکردبعد سلیو s میداد مستر led میزد...اما این وسط اسلیو خوب کار میکرد اما مستر led روشن نمیکرد انگار مقدار ریجیسترش همونی بود که واسه اسلیو فرستاده بود و انگار اسلیو هیچی نداده بود چک کردم دیدم مقدار ریجیستر SPDR به جای s که باید اسلیو میداد بهش همون w بود که خودش به اسلیو میداد..
                        حالا مشکل از چیه؟ اسلیو چیزی نمیده؟یا برنامه مورد داره؟
                        اشکهايي که پس از هر شکست ميريزيم همان عرقيست که براي پيروزي نريخته ايم.
                        هيتلر

                        دیدگاه


                          #13
                          پاسخ : کمک در راه اندازی i2c و spi بدون codewizard و توابع codevision

                          من فکر میکنم هنگامی که توسط اسلیو به مستر داده ارسال میشه، میکروی مستر باید در مد اسلیو قرار بگیره. فکر کنم برای این کار باید پایه SS میکروی مستر (دریافت کننده) توسط میکروی ارسال کننده زمین بشه. البته برای اینکه میکروی مستر بتونه تو مد اسلیو کار کنه، پایه SS باید ورودی تعریف بشه و باید پول پ بشه. در این صورت هر موقع از بیرون زمین بشه، میکرو وارد مد اسلیو میشه. من دیتاشیت رو مطالعه می کنم و اگه اطلاعاتی به دست آوردم اینجا می زارم .

                          دیدگاه


                            #14
                            پاسخ : کمک در راه اندازی i2c و spi بدون codewizard و توابع codevision

                            با سلام دوستان
                            2 سوال
                            1- وقتی بخوای از دستور SPI() استفاده کنی دیگه نباید وقفه فعال بشه؟؟؟
                            2- اگه ارسال به صورتی باشه که اول MSB ارسال بشه عدد فرستاده شده برعکس میشه؟(اگه 0x01 ارسال بشه در اسلیو 0x10 دریافت میشه)
                            لطفا راهنمایی کنید

                            دیدگاه


                              #15
                              پاسخ : کمک در راه اندازی i2c و spi بدون codewizard و توابع codevision

                              نوشته اصلی توسط mehran.safavy
                              با سلام دوستان
                              2 سوال
                              1- وقتی بخوای از دستور SPI() استفاده کنی دیگه نباید وقفه فعال بشه؟؟؟
                              2- اگه ارسال به صورتی باشه که اول MSB ارسال بشه عدد فرستاده شده برعکس میشه؟(اگه 0x01 ارسال بشه در اسلیو 0x10 دریافت میشه)
                              لطفا راهنمایی کنید
                              سلام دوست من ..نیازی به وقفه نیست من تا اونجا که کار کردم spi رو بدون Interupt راه انداختم
                              در مورد msb هم نظری ندارم.... با یه lcd تست کنید
                              اشکهايي که پس از هر شکست ميريزيم همان عرقيست که براي پيروزي نريخته ايم.
                              هيتلر

                              دیدگاه

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