Gast
#1000141
Mit diesem Code kann ich Daten vom Xmega an meinem PC schicken. Aber
leider empfängt er nichts??
volatile uint16_t receivedData;
void USART_Receive(void)
{
/* Receive one char. */
/* Wait until data received or a timeout.*/
while ( !( USARTC0.STATUS & USART_RXCIF_bm) );
receivedData = USARTC0.DATA;
}
void USART_Transmit(unsigned char data)
{
/* Wait for empty transmit buffer */
//while ( !( UCSR0A & (1<<UDRE0)) )
while ( !( USARTC0.STATUS & USART_DREIF_bm) )
;
/* Put data into buffer, sends the data */
USARTC0.DATA = data;
//UDR0 = data;
}
void USART_Init(unsigned int bsel)
//void USART_Init(unsigned int ubrr)
{
/* Set baud rate */
USARTC0.BAUDCTRLB = (unsigned char)(bsel>>8);
USARTC0.BAUDCTRLA = (unsigned char)bsel;
//UBRR0H = (unsigned char)(ubrr>>8);
//UBRR0L = (unsigned char)ubrr;
/* Set frame format: 8data, 1 stop bit */
USARTC0.CTRLC = (USARTC0.CTRLC & ~USART_CHSIZE_gm) |
USART_CHSIZE_8BIT_gc;
//UCSR0C = (3<<UCSZ00);
/* Enable receiver and transmitter */
USARTC0.CTRLB = (USART_RXEN_bm | USART_TXEN_bm);
//UCSR0B = (1<<RXEN0)|(1<<TXEN0);
}
int main(void)
{
PORTC.DIR |= 0x08;
USART_Init(0x0C);
while(1)
{
USART_Receive();
USART_Transmit(receivedData);
}
return 0;
}