اطلاعیه

Collapse
No announcement yet.

مشکل با ارتباط میکرو مگا 8 با آردوینو در پروتکل I2C یا TWI

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

    مشکل با ارتباط میکرو مگا 8 با آردوینو در پروتکل I2C یا TWI

    با درود خدمت همه دوستان و همراهانِ وادیِ الکترونیک
    چند روزیه دارم تلاش میکنم یه میکرو ATMEGA8 رو با پروتکل I2C به یه آردوینو متصل کنم . ولی تا حالا موفق نشدم. میکر در اینجا مستر و آردوینو رو اسلیو انتخاب کردم. برنامه هر دو رو اینجا میذارم. لطفا از دوستان اگه کسی تجربه ای در این زمینه داره یا میتونه راهنمایی هرچند کوچیکی بکنه واقعا ممنون میشم.
    کد برنامه میکر (مستر):
    کد:
    [FONT=Yekan]#include <mega8.h>[/FONT]#include <delay.h>
    #include <twi.h>
    
    
    #define sent() !PINB.5
     
    void main(void)
     {
      DDRB.5=0;
      PORTB.5=1;
      DDRB.1=1;
      twi_master_init(100);
      #asm("sei")
    
    
      while(1)
      {     
       if(sent()) twi_master_trans(0,"My name is Mahmoud",18,0,0);
       delay_ms(3000);
       PORTB.1=~PORTB.1;    
      }
    [FONT=Yekan] }[/FONT]

    اینم کد برنامه سمت آردوینو (اسلیو):
    کد:
    [FONT=Yekan]#include <Wire.h>[/FONT]
    
    int i=0;
    
    
    void setup() {
      Wire.begin(0);                // join i2c bus with address #8
      Wire.onReceive(receiveEvent); // register event
      Serial.begin(9600);           // start serial for output
      
    }
    
    
    void loop() {
       Serial.print("Receiving...\t");
       Serial.println(i);
       i++;
       if(i>=251) i=0;
       delay(10000);
    }
    
    
    // function that executes whenever data is received from master
    // this function is registered as an event, see setup()
    void receiveEvent(int howMany) {
      while (1 < Wire.available()) { // loop through all but the last
        char c = Wire.read(); // receive byte as a character
        Serial.print(c);         // print the character
      }
      int x = Wire.read();    // receive byte as an integer
      Serial.println(x);         // print the integer
      delay(10000);
    [FONT=Yekan]}[/FONT]
    احیانا اگه کدها اینجا خوانا نیستن، اینجا لینک عکس کدها رو میذارم.


    #2
    پاسخ : مشکل با ارتباط میکرو مگا 8 با آردوینو در پروتکل I2C یا TWI

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

    دیدگاه


      #3
      پاسخ : مشکل با ارتباط میکرو مگا 8 با آردوینو در پروتکل I2C یا TWI

      نوشته اصلی توسط soleimani_m نمایش پست ها
      تا الان که کسی جواب نداد. یا کم لطفی همکارمون زیاد شده یا واقعا کسی به این مشکل برنخورده (که بعید میدونم). در هر صورت چیزی که من تا الان فهمیدم اینه که با اینکه هردو از پروتکل استاندارد I2C استفاده میکنن اما ظاهرا کتابخونه ای که برای این کار در کد ویژن وجود داره با کتابخونه*ای که تو آردوینو وجود داره، خروجی یکسانی تولید نمیکنن. وقتی دوتا آردوینو رو با این پروتکل به هم ارتباط میدم خیلی راحت تبادل اطلاعات صورت میگیره یا وقتی که دوتا میکرو رو تو کدویژن پروگرم میکنم، خیلی راحت تبادل اطلاعات میکنن اما وقتی میکرو رو به آردوینو وصل میکنم چیزی دریافت نمیشه.
      به نظر باید یه کتابخونه بر اساس استاندارد I2C اول برای میکرو نوشت و اگه جواب نداد بر همون اساس یه کتابخونه برای آردوینو نوشت. که خوب اگه خودم بخوام اینکار رو بکنم حداقل به یه زمان 6 ماهه نیازه
      مشکل اینه که نمیتونم از پروتکل سریال استفاده کنم وگرنه خیلی زودتر کار تموم بود. ولی اینکه این دوتا رو یه پروتکل جواب نمیدن هم خیلی جالبه
      سلام
      در صورتی که هردو دستگاه به صورت سخت افزاری از I2C استفاده کنن، فکر نمیکنم مشکلی از بابت نرم افزار داشته باشن. احتمالا جایی رو دارید اشتباه میکنید.
      راه اندازی واحد I2C، اونم در AVR چیز زیاد پیچیده ای نیست. تا حالا به صورت Slave زیاد باهاش کار نکردم ولی با Master که مشکلی نداشتم تا حالا. زیادم پیاده سازیش سخت نیست؛ 6 ماه هم زمان زیادیه برای این کار! سعی کنید به صورت رجیستری برنامه اش رو بنویسید، امیدوارم با این کار جواب بگیرید.

      دیدگاه

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