USART Atxmega128A1 X-Plained

OP #2406329
Lesenswert?

Hallo Zusammen,

ich benutzte folgenden Code zum Initialisieren und Senden der USART 
Schnittstelle:
1
void USART_Init(void)
2
{
3
  PORTD.OUTSET |= PIN3_bm; // Für den Transmitter
4
  PORTD.DIRSET |= PIN3_bm; //     "
5
  PORTD.DIRCLR |= PIN2_bm; // Für den Reciver
6
  //keine Clockconfig--> int. 2MHz Takt nutzen --> BSEL = 12 für 9600baud
7
  USARTD0.BAUDCTRLA = 12;
8
  // 8bit UART, no parity, 1 stopbit
9
  USARTD0.CTRLC |= USART_CMODE_ASYNCHRONOUS_gc|USART_CHSIZE_8BIT_gc;
10
  // Receiver einschalten
11
  USARTD0.CTRLB |= USART_RXEN_bm;
12
}
13

14
void usart_transmit(uint8_t temp)
15
{
16
  USARTD0.DATA = temp;
17
  while (!(USARTD0.STATUS & USART_TXCIF_bm));
18
}

Leite RX und TX über einen RS232 Spannungwandler auf meine Serielle 
Schnittstelle vom PC. Benutze unter Linux HTERM. Aber es tut sich 
nichts.
OP #2411219
Lesenswert?

Mein Oszillator ist folgendermaßen eingestellt:
1
void Oszilator_Init(void)
2
{
3
  /*Oscillator auf 32Mhz einstellen PIN1 = OSC_RC32MEN wird gesetzt */
4
  OSC.CTRL |= 0x02;
5
  /*Wenn Oscillator stabil wird das Flag RC32MRDY
6
  * gesetzt und 32Mhz können benutzt werden*/
7
  while(!(OSC.STATUS & OSC_RC32MRDY_bm));
8
  /*I/O Protection*/
9
  CCP = 0xD8;
10
  /*Clock auf 32Mhz einstellen*/
11
  CLK.CTRL = 0x01;
12
}

Auf was steht jetzt Fper?

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