-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: invalid lvalue

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    07.07.2005
    Beiträge
    13

    invalid lvalue

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    hallo,
    immer wenn ich folgenden code compilieren will:



    #include <io.h>
    #include "..\lib\mydefs.h"
    #include "..\lib\lcd.h"
    #include "..\lib\stepper.h"
    #include "..\lib\rc5.h"
    #include "..\lib\uart.h"
    #include "..\lib\sensor.h"

    int main(void)
    {

    // ports auf empfang setzen

    PB0 = 0x1F;
    PB1 = 0x1F;
    PB2 = 0x1F;
    PB3 = 0x1F;
    PB4 = 0x1F;


    return 0;
    }

    komm die fehlermeldung:

    "invalid lvalue in assignment" bei jeder port-zeile. wo liegt der
    fehler ?

    vielen dank für eure hilfe

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Wenn ich mich recht erinnere ist mit PB1 nur ein Bit gemeint, dann ist der
    Wert von 0x1F ein bisserl zu gross dafür.
    Also entweder nur einmal PORTB verwenden oder nur 0 und 1 für jedes Bit.
    mfG
    HK
    /* Linux user #98697 */

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    07.07.2005
    Beiträge
    13
    habs auch schon mit 0xFF versucht und auch mal "PORTB" ausgeschrieben. hilft alles nix.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Das mit PORTB sollte funktionieren.

    Aus (zB)

    PORTB |= _BV(3); // PORT B.3 setzen

    sollte so was oder ähnliches entstehen entstehen, nachdem der Präprozessor drübergerauscht ist:

    (*(volatile uint8_t *)((0x1 + 0x20)) |= (1 << (3));

    Falls nicht, stimmt was mit deiner Umgebung oder den includes nicht.
    Verbutlich wird das PORTB erst gar nicht aufgelöst.
    avr-gcc sollte das #include <io.h> anmeckern, stattdessen:
    #include <avr/io.h>

    Johann

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    07.07.2005
    Beiträge
    13
    gcc meckert nich bei den includes, findet sie anscheinend alle aber lvalue bekomme ich immer zurückgeschmettert

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Wie siegt's denn aus, wenn du zusätzlich mit Option -v übersetzt?

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    07.07.2005
    Beiträge
    13
    hö ? da kommen dann die ganzen infos von den entwicklern wann und in welchem jahr und wer genau und so blabla.

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    U.a. solltest du auch sehen, welche Suchpfade für die Includes verwendet werden, deine gcc-Version, und wie er configured wurde, etc. Derin Problem ist je kein eigentliches C-Problem, sondern mit deiner Umbegung finzt was nicht.

    #include <avr/io.h>

    void main()
    {
    PORTB = 0;
    }

    Wird bei mir problemlos übersetzt (avr-gcc 3.4.1 unter mingw)

    >avr-gcc -v -mmcu=atmega8 -Wall -Os -ffreestanding main.c -c -o main.o -save-temps

    ...#include <io.h>...
    Hingegen gibt eine deprecated (veraltet)-Warnung.
    Das die bei dir nicht erscheint, gibt zu denken...

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    07.07.2005
    Beiträge
    13
    gnu make version 3.78.1

    pfade werden keine angzeigt

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Das -v als gcc-Schalter, nicht für make...

    So wie in meinem letzten Posting. Verwende auch mal -save-temps, damit du ein dump vom Präprozessor erhälst (als *.i).
    Das gibt bei solchen Problemen manchmal Hinweise wo der Wurm steckt. Weil du dann siehst, was der Compiler tatsächlich als Eingabe erhält, und nicht irgendwelche nichtssagenden Makros wie PORTB, hinter denen alles mögliche stecken kann.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •