GCC meldet Fehler

Gast #763633
Lesenswert?

Hallo,

ich benutze AVR Studio 4.13SP2 mit den aktuellen WinAVR GCC.
Ziel MCU ist ein Mega 8.

Beim initialisieren des USART bekomme ich bei der Zeile:

UCSRB = (1<<TXEN | 1<<RXEN);

immer diese Fehlermeldung:

../Schalter_Ansteck_Modul.c:35: error: lvalue required as left operand 
of assignment

In anderen Projekten (Mega16/32) funktioniert dies ohne Probleme.
Alle Beispiele im Internet und auch um Datenblatt aktivieren die
RXD und TXD Pins mit dieser Codezeile. Warum hier nicht? Ich stehe
da ein wenig auf den Schlauch. Was kann da die Ursache sein"


mfg Lars



PS: nochmal die ganze Funktion


void Init_UART(void) {
  // Baudrate auf 4800Bps setzen bei 1MHz Systemtakt
  UBRRH = 0;
  UBRRL = 12;

  // Set frame format: 8 data 2stop
  UCSRC |= (1<<URSEL)|(1<<USBS)|(1<<UCSZ1)|(1<<UCSZ0);

        // Aktivieren von receiver und transmitter
        UCSRB = (1<<TXEN | 1<<RXEN);
}
#763650
Lesenswert?

Hallo,

wie immer keine Ahnung von C (nur ASM), aber fehlen da nicht 2 Klammern?

statt UCSRB = (1<<TXEN | 1<<RXEN);
also  UCSRB = (1<<TXEN) | (1<<RXEN);

Falls falsch -> Korrekturen überlasse ich den C-Programmierern
Falls richtig -> Erlärung überlasse ich den C-Spezialisten.

Gruß aus Berlin
Michael

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