Arduino Mega (ATMega2560) UART does not send
I think the problem may be that your while loop within the USART_Transmit() function just needs some braces:

void USART_Transmit( unsigned char data )
{
    while (!(UCSR0A &amp; (1 &lt;&lt; UDRE0))) {}
    UDR0 = data;
}


I was able to get this working with Atmel Studio 7 and an Arduino Mega 2560.