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);
	}
	
	
}
Beispiel #2
0
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;

}
Beispiel #3
0
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();
	
	}
Beispiel #4
0
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();
}
Beispiel #5
0
char EE_read_byte(const int address)
{
	char dummy;
	//we need this for the first if()
	dummy = TWI_start();
	//as in EE_write_byte, first send the page address and the word address
	if((dummy != 0x08) && (dummy != 0x10))
		return TWSR;
	if(TWI_write_data(EE_ADDR|((address>>7) & 0x000E)) != 0x18)
		return TWSR;
	if(TWI_write_data((char)(address)) != 0x28)
		return TWSR;
	//send a repeated start for entering master receiver mode
	if(TWI_start() != 0x10)
		return TWSR;
	//send slave address, now with the read bit set
	if(TWI_write_data((EE_ADDR|1)|((address>>7) & 0x000E)) != 0x40)
		return TWSR;
	//now get the data from the EEPROM, don't return ACK
	if(TWI_read_data(0) != 0x58)
		return TWSR;
	//if everything was OK, return zero
	return 0;
}