#include <avr/io.h>

int main(void)
{
	// nastaveni vsech pinu jako vstupy
	DDRB = 0x00; PORTB = 0xFF;
	DDRC = 0x00; PORTC = 0xFF;
	DDRD = 0x00; PORTD = 0xFF;
	
	// adressa zarizeni
	TWAR = 0b00000101;
	while(1)
	{
		// aktivuje TWI
		TWCR = (1<<TWEA)|(1<<TWEN);
		 // Ceka dokud master nezacne komunikaci
		while( !(TWCR & (1<<TWINT)) );
		
		TWDR = PINB; // vlozis data ktere chces poslat 
		TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWEA); // Odesle data z portu B na master
		while( !(TWCR & (1<<TWINT)) ); // ceka dokud nejsou data odeslana
		
		TWDR = PINC; // vlozis data ktere chces poslat 
		TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWEA); // Odesle data z portu C na master
		while( !(TWCR & (1<<TWINT)) ); // ceka dokud nejsou data odeslana
		
		TWDR = PIND; // vlozis data ktere chces poslat 
		TWCR = (1<<TWINT)|(1<<TWEN); // Odesle data z portu D na master (posledni data -> TWEA nastavena na nulu)
		while( !(TWCR & (1<<TWINT)) );// ceka dokud nejsou data odeslana	
			
		TWCR = (1<<TWINT)|(1<<TWEA); // ukonceni komunickace
    }
}