aflatoon
یک شنبه 05 بهمن 1393, 17:41 عصر
سلام خدمت تمامی دوستان
من از 6 عدد srf08 استفاده میکنم و از تک تکشون به صورت مجزا عدد میگیرم
اگر با سیم کوتاه سنسورامو وصل کنم باز هم به صورت همزمان از همشون عدد میگیرم
اما وقتی یه سیم با طول 3 متر به sda scl وصل میکنم تمام سنسورها -256 میدن
مقاومت 1K pullup هم یه 5V دارم
فرکانسم هم 100KH است
قبلا این کارو با arduino 2560 انجام دادن و توی این متراژا مشکلی نداشتم
چجوری میتونم این مشکل رو حل کنم
لطفا دوستانی که کار کردن کمک کنن ، دیگه عقلم به جایی قد نمیده
انم برنامه
while (1)
{
// Place your code here
write_i2c(0xF0,0x00,0x51);
delay_ms(70);
x=read_i2c(0xF0,0x02,0);
y=read_i2c(0xF0,0x03,0);
g=read_i2c(0xF0,0x01,0);
s=(x*255)+y;
itoa(s,namayesh);
lcd_gotoxy(0,0);
lcd_puts(namayesh);
delay_ms(500);
write_i2c(0xEA,0x00,0x51);
delay_ms(70);
x_1=read_i2c(0xEA,0x02,0);
y_1=read_i2c(0xEA,0x03,0);
g_1=read_i2c(0xEA,0x01,0);
s_1=(x_1*255)+y_1;
itoa(s_1,namayesh_1);
lcd_gotoxy(0,1);
lcd_puts(namayesh_1);
delay_ms(500);
lcd_clear(); }
}
void write_i2c(unsigned char busaddres , unsigned char reg , unsigned char data)
{
i2c_start();
i2c_write(busaddres);
i2c_write(reg);
i2c_write(data);
i2c_stop();
}
//----------------------------------------------------------------------------------------
unsigned char read_i2c(unsigned char busaddres , unsigned char reg , unsigned char ack )
{
unsigned char b;
b = busaddres + 1;
i2c_start();
i2c_write(busaddres);
i2c_write(reg);
i2c_start();
i2c_write(b);
b=i2c_read(ack);
i2c_stop();
return b;
}
من از 6 عدد srf08 استفاده میکنم و از تک تکشون به صورت مجزا عدد میگیرم
اگر با سیم کوتاه سنسورامو وصل کنم باز هم به صورت همزمان از همشون عدد میگیرم
اما وقتی یه سیم با طول 3 متر به sda scl وصل میکنم تمام سنسورها -256 میدن
مقاومت 1K pullup هم یه 5V دارم
فرکانسم هم 100KH است
قبلا این کارو با arduino 2560 انجام دادن و توی این متراژا مشکلی نداشتم
چجوری میتونم این مشکل رو حل کنم
لطفا دوستانی که کار کردن کمک کنن ، دیگه عقلم به جایی قد نمیده
انم برنامه
while (1)
{
// Place your code here
write_i2c(0xF0,0x00,0x51);
delay_ms(70);
x=read_i2c(0xF0,0x02,0);
y=read_i2c(0xF0,0x03,0);
g=read_i2c(0xF0,0x01,0);
s=(x*255)+y;
itoa(s,namayesh);
lcd_gotoxy(0,0);
lcd_puts(namayesh);
delay_ms(500);
write_i2c(0xEA,0x00,0x51);
delay_ms(70);
x_1=read_i2c(0xEA,0x02,0);
y_1=read_i2c(0xEA,0x03,0);
g_1=read_i2c(0xEA,0x01,0);
s_1=(x_1*255)+y_1;
itoa(s_1,namayesh_1);
lcd_gotoxy(0,1);
lcd_puts(namayesh_1);
delay_ms(500);
lcd_clear(); }
}
void write_i2c(unsigned char busaddres , unsigned char reg , unsigned char data)
{
i2c_start();
i2c_write(busaddres);
i2c_write(reg);
i2c_write(data);
i2c_stop();
}
//----------------------------------------------------------------------------------------
unsigned char read_i2c(unsigned char busaddres , unsigned char reg , unsigned char ack )
{
unsigned char b;
b = busaddres + 1;
i2c_start();
i2c_write(busaddres);
i2c_write(reg);
i2c_start();
i2c_write(b);
b=i2c_read(ack);
i2c_stop();
return b;
}