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); }
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
Mit den Klammern hat das nichts zu tun - mit dem gezeigtem Codeauschnitt aber auch nicht. Der compiliert fehlerfrei. Oliver
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
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!!!
@ 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.