UART

Gast #411688
Lesenswert?
• ▲
▼
Ich will auf einem AT MEGA 644 ein Zeichen/ String empfangen.
Kann ich das so realisieren?:

main:
...
if(String[0] == 'D')
{
  PORTC|= (1<<PC4);
...


ISR(USART0_RX_vect)
{
  String_empf[n] = UDR0;  // empfangenes im String speichern
  n++;          // Zähler erhöhe
}

Oder wie prüfe ich ab, ob das erste Zeichen zB ein D ist?
Gast #411690
Lesenswert?
• ▲
▼
Problem, ich komme nicht in die ISR(USART0_RX_vect)woran könnte das
liegen?
Initialisiert hab ich das ganze:
#define UART_BAUD_RATE 9600    // Baudrate = 9600 Baud

UBRR0 = (F_CPU / (UART_BAUD_RATE * 16L)) - 1;  //Baudrate
UCSR0C = (3 << UCSZ00);    // 8bit, no parity, ein Stoppbit
UCSR0B = (1 << RXEN0)|(1 << RXCIE0);  // Empfänger freischalten
UCSR0B = (1 << TXEN0)|(1 << TXCIE0);  // Sender freischalten
Gast #411692
Lesenswert?
• ▲
▼
UCSR0B = (1 << RXEN0)|(1 << RXCIE0);  // Empfänger freischalten
UCSR0B = (1 << TXEN0)|(1 << TXCIE0);  // Sender freischalten

Kosmo hat Recht.
Also entweder so:
UCSR0B = (1 << RXEN0)|(1 << RXCIE0) | (1 << TXEN0)|(1 << TXCIE0);  //
Empfänger und Sender freischalten

Oder so:
UCSR0B = (1 << RXEN0)|(1 << RXCIE0);  // Empfänger freischalten
UCSR0B |= (1 << TXEN0)|(1 << TXCIE0);  // Sender freischalten

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