Forum: Compiler & IDEs GCC meldet Fehler


von Lars (Gast)


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

von Michael U. (amiga)


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

von Oliver (Gast)


Lesenswert?

Mit den Klammern hat das nichts zu tun - mit dem gezeigtem Codeauschnitt 
aber auch nicht. Der compiliert fehlerfrei.

Oliver

von Lars (Gast)


Lesenswert?

So,

Fehler gefunden. Ich habe wohl ohne es zu merken in der iom8.h
in der Zeile mit der UCSRB Definition das "_SFR_IO8" gelöscht.
Wieder eingefügt und die Welt war wieder in Ordnung;)

mfg

Lars

von Rolf Magnus (Gast)


Lesenswert?

Warum pfuschst du in Systemheadern rum, wenn man fragen darf?

von Lars (Gast)


Lesenswert?

Du darfst fragen.
Ich habe da mal was nachgesehen und rauskopiert. Ändern wollte ich darin
nichts! Dabei ist es dann passiert.
Also: besser aufpassen wenn man was nachsieht!!!

von Falk B. (falk)


Lesenswert?

@ Lars (Gast)

>Ich habe da mal was nachgesehen und rauskopiert. Ändern wollte ich darin
>nichts! Dabei ist es dann passiert.
>Also: besser aufpassen wenn man was nachsieht!!!

Oder gleich das gesamte Verzeichnis schreibgeschütz machen.

MFG
Falk

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.