Forum: Mikrocontroller und Digitale Elektronik UART lesen Xmega


von Faller (Gast)


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;
}

von Gast (Gast)


Lesenswert?


von Georg S. (georgschmied)


Lesenswert?

Mann wo habt ihr die Steine her?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Firma.

von Georg S. (georgschmied)


Lesenswert?

Welche Firma? Sag dieser Firma sie soll sie mir auch besorgen. Ich zahle 
auch.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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.

von Gerd (Gast)


Lesenswert?

Rechne mal frühestens mit Frühjahr 09...

von Nix (Gast)


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;
}

von Nix (Gast)


Lesenswert?

Alles in Ordnung- eine Einstellung bei der Programmierung des Aktuellen 
Quellcodes stimmte nicht

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.