Forum: Mikrocontroller und Digitale Elektronik ivalue required as left operand of assignment -.-


von Basstler (Gast)


Lesenswert?

Hi ihr,

iwi kommt bei mir dieser dumme Fehler hier:
"ivalue required as left operand of assignment..."



Was is denn bitte schon falsch an dem Gleicheitszeichen oO

void Tone (uint8_t  Laenge){

  const uint8_t Dauer = Laenge;

  PINB0 = 1;
  _delay_us(Dauer);
  PINB0 = 0;
  _delay_us(Dauer);

}

von Sven P. (Gast)


Lesenswert?

Nichts, aber an 'PINB0'. 'PINB0' ist eine Konstante mit dem Wert '0'.

Das wird auf bitweise-Arithmetik hinauslaufen, dazu gibts ein paar 
Artikel im Wiki.

von Rolf M. (rmagnus)


Lesenswert?

Basstler schrieb:
> Hi ihr,
>
> iwi kommt bei mir dieser dumme Fehler hier:
> "ivalue required as left operand of assignment..."

Keine Ahnung, was ein ivalue sein soll. Meintest du vielleicht lvalue? 
Ein lvalue ist grob gesagt etwas, das links von einer Zuweisung stehen 
darf.

> Was is denn bitte schon falsch an dem Gleicheitszeichen oO

An dem nichts, aber wie der Compiler schon anmerkt, an dem, was links 
davon steht:

>   PINB0 = 1;

Sofern es sich um einen AVR handeln sollte, ist PINB0 eine Konstante mit 
dem Wert 0, also wird der Präprozessor die obige Zeile ersetzen durch:
1
    0 = 1;

Am besten schaust dur dir nochmal im Tutorial an, wie man I/O macht.

von holger (Gast)


Lesenswert?

>Am besten schaust dur dir nochmal im Tutorial an, wie man I/O macht.

Und die ganzen Threads zu   _delay_us(Dauer);
Der Parameter für   _delay_us() muss beim compilieren
bekannt sein und ist nicht zur Laufzeit änderbar.

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.