#include <avr/io.h>
#include <avr/interrupt.h>
#define F_CPU 16000000UL
#include <util/delay.h>
#include <string.h>
#include <stdio.h>

#define BAUD 9600
#define UBRR F_CPU/16/BAUD-1

uint8_t dataWrite;
uint8_t dataRead;

//SS0	PORTB2
//MOSI	PORTB3
//MISO	PORTB4
//SCK	PORTB5
	
//--------------------------------------------------------------------
//Inicializacia serial port
void USART_Init (unsigned int ubrr)	
{
	// set baud rate
	UBRR0H = (unsigned char)(ubrr>>8);
	UBRR0L = (unsigned char)ubrr;
	// Enable receiver and transmitter;
	UCSR0B |= (1 << RXEN0) | (1 << TXEN0);
	//Set Frame format: 8data 1stop
	//UCSR0C |= (1 << UCSZ01) | (1 << UCSZ00); 
}
//---------------------------------------------------------------------
void USART_Transmit (char dataout) 
{
	while( !(UCSR0A & (1 << UDRE0)) );
	UDR0 = dataout;
}
//------------------------------------------------------------------------------
void USART_Transmit_text(char *text) {
	unsigned char j;
	for (j=0; j<strlen(text); j++) USART_Transmit (text[j]);
}
//---------------------------------------------------------------------
void SPI_SlaveInit()
{
	// MISO ako výstup, ostatné vstup
	DDRB |= (1 << DDB4);
	// SPI Interrupt Enable, SPI Enable, Slave mode
	SPCR = (1 << SPIE) | (1 << SPE);
}
//---------------------------------------------------------------------
ISR (SPI_STC_vect) {
	dataRead = SPDR;				//prijaté dáta
	USART_Transmit(SPDR);
}
//------------------------------------------------------------------------------
int main (void) {

	USART_Init (UBRR);			//inicializacia UART
	SPI_SlaveInit ();			//inicializacia SPI
	sei();						//Enable Global Interrupt	
	
	USART_Transmit_text("\n\rSPI_slave.c\n\r");
		
	while(1) { 
				
	}
}
//------------------------------------------------------------------------------

