UART lesen Xmega

Gast #1000141
Lesenswert?

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;
}
(Firma: TravelRec.) Persönliche Seite #1002146
Lesenswert?

Immer ruhig Blut. Als Firma kann man Samples ordern, wenn man so fair 
ist, die Steine später auch zu verwenden. Als Privatperson kannst Du 
welche erschleichen (pfui!) oder auf die Markteinführung warten 
(besser). Und ich unterstelle mal, daß es bei Dir nicht sooo dringend 
sein kann. Bedenke: für die Umarbeitung vom gewöhnten AVR-Stoff hin zum 
XMega wirst Du auch ein gutes Stück Zeit brauchen. Zum Weihnachten in 
diesem Jahr wird´s also noch nichts.
Gast #1003805
Lesenswert?

Ich habe so ein gefühl das hier etwas nicht stimmt:

void USART_Receive(void)
{
    /* Receive one char. */
    /* Wait until data received or a timeout.*/
    while ( !( USARTC0.STATUS & USART_RXCIF_bm) );
    receivedData = USARTC0.DATA;
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren