int main(void) { _delay_ms(2000); DDRB=0xff; TWI_init_master(); // Function to initialize TWI while(1) { if(write_data==0x00) write_data=1; TWI_start(); // Function to send start condition TWI_write_address(address+write); // Function to write address and data direction bit(write) on SDA TWI_write_data(255); // Function to write data in slave TWI_stop(); // Function to send stop condition _delay_ms(100); // Delay of 10 mili second PORTB=0xff; TWI_start(); TWI_read_address(address+read); // Function to write address and data direction bit(read) on SDA TWI_read_data(); // Function to read data from slave TWI_stop(); _delay_ms(2000); } }
signed short int getdata(unsigned char add) { signed short int DATA; TWI_start(); TWI_write_address(0xD2); TWI_write_data(add); TWI_repeated_start(); TWI_read_address(0xD3); DATA=TWI_read_data(); TWI_stop(); return DATA; }
void MPU_read_adress(unsigned char mpuAdress, unsigned char registerAdress, unsigned char* variable){ TWI_start(); TWI_check_ack(mpuAdress); TWI_write_data(registerAdress); TWI_repeated_start(); TWI_read_address(mpuAdress|0x01); *variable = TWI_read_data(); TWI_stop(); }
void MPU_self_test(unsigned char mpuAdress){ char buf[17]=" "; TWI_start(); TWI_check_ack(mpuAdress); TWI_write_data(0x75); TWI_repeated_start(); TWI_read_address(mpuAdress|0x01); char response = TWI_read_data(); sprintf(buf,"Response: %x",response); LCD_WriteText(buf); TWI_stop(); }