اطلاعیه

Collapse
No announcement yet.

درخواست کمک برای( i2c intrupt (2wire در کدویژن

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

    درخواست کمک برای( i2c intrupt (2wire در کدویژن

    سلام دوستان.
    من یه 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 عمل کنم.
    با تشکر
لطفا صبر کنید...
X