سلام دوستان.
من یه LCD و یه ماژول آلتراسونیک SRF02 (تبلیغ نشه نرید بخرید بابا)خریدم و هر دو را با 2wire(i2c) راه اندازی کردم تو کدویژن.البته خودم بلد نبودم و کدهاش را از اینترنت پیدا کردم.حالا با ال سی دی مشکل ندارم اما وقتی می خوام از SRF02 استفاده کنم کمی وقفه تو برنامه به وجود میاد و برنامه کند میشه.حالا فهمیدم که میشه 2wire را به صورت interupt نوشت.میخواستم ببینم دوستان میتونن کمک کنن.این کدها مر بوط به 2wire هست که برا راه اندازی هر دو این ها ازش استفاده میکنم:
void i2c_putchar1(char data)
{
TWCR = 0xA4;
while(!(TWCR & 0x80));
TWDR = 0XE0;
TWCR = 0x84;
while(!(TWCR & 0x80));
TWDR = 0;
TWCR = 0x84;
while(!(TWCR & 0x80));
TWDR = data;
TWCR = 0x84;
while(!(TWCR & 0x80));
TWCR = 0x94;
}//نوشتن در باس i2c
char i2c_red(char reg)
{
char read_data = 0;
TWCR = 0xA4;
while(!(TWCR & 0x80));
TWDR = 0xE0;
TWCR = 0x84;
while(!(TWCR & 0x80));
TWDR = reg;
TWCR = 0x84;
while(!(TWCR & 0x80));
TWCR = 0xA4;
while(!(TWCR & 0x80));
TWDR = 0xE0+1;
TWCR = 0xC4;
while(!(TWCR & 0x80));
TWCR = 0x84;
while(!(TWCR & 0x80));
read_data = TWDR;
TWCR = 0x94;
return read_data;
}//خواندن از باس i2c
char get_range(char range_unit)
{
i2c_putchar1(range_unit);
delay_ms(70);
range= i2c_red(2)<<8;
range += i2c_red(3) ;
if(range>=16&&range<=100)
return range;
}//خواندن فاصله از SRF02
این کد ها در حالت عادی ان و من میخوام intrupt عمل کنم.
با تشکر
من یه LCD و یه ماژول آلتراسونیک SRF02 (تبلیغ نشه نرید بخرید بابا)خریدم و هر دو را با 2wire(i2c) راه اندازی کردم تو کدویژن.البته خودم بلد نبودم و کدهاش را از اینترنت پیدا کردم.حالا با ال سی دی مشکل ندارم اما وقتی می خوام از SRF02 استفاده کنم کمی وقفه تو برنامه به وجود میاد و برنامه کند میشه.حالا فهمیدم که میشه 2wire را به صورت interupt نوشت.میخواستم ببینم دوستان میتونن کمک کنن.این کدها مر بوط به 2wire هست که برا راه اندازی هر دو این ها ازش استفاده میکنم:
void i2c_putchar1(char data)
{
TWCR = 0xA4;
while(!(TWCR & 0x80));
TWDR = 0XE0;
TWCR = 0x84;
while(!(TWCR & 0x80));
TWDR = 0;
TWCR = 0x84;
while(!(TWCR & 0x80));
TWDR = data;
TWCR = 0x84;
while(!(TWCR & 0x80));
TWCR = 0x94;
}//نوشتن در باس i2c
char i2c_red(char reg)
{
char read_data = 0;
TWCR = 0xA4;
while(!(TWCR & 0x80));
TWDR = 0xE0;
TWCR = 0x84;
while(!(TWCR & 0x80));
TWDR = reg;
TWCR = 0x84;
while(!(TWCR & 0x80));
TWCR = 0xA4;
while(!(TWCR & 0x80));
TWDR = 0xE0+1;
TWCR = 0xC4;
while(!(TWCR & 0x80));
TWCR = 0x84;
while(!(TWCR & 0x80));
read_data = TWDR;
TWCR = 0x94;
return read_data;
}//خواندن از باس i2c
char get_range(char range_unit)
{
i2c_putchar1(range_unit);
delay_ms(70);
range= i2c_red(2)<<8;
range += i2c_red(3) ;
if(range>=16&&range<=100)
return range;
}//خواندن فاصله از SRF02
این کد ها در حالت عادی ان و من میخوام intrupt عمل کنم.
با تشکر