Forum: Compiler & IDEs Winavr und Bitoperationen


von Bastian (Gast)


Lesenswert?

Hallo,

beim Debuggen im AVRStudio stelle ich fest, dass mein Code im Winavr 
nich so will, wie gedacht.

Bei den Bitoperationen happert es ein bißchen:


void ColorChanger(unsigned char red, unsigned char green, unsigned char 
blue)
{

  unsigned char red_value;
  unsigned char green_value;
  unsigned char blue_value;


  green_value=0;
  blue_value=0;

  red=red&0x0F;  //Maskieren des Low-Nibbles

  red_value=red;

  red_value=red_value<<4; //Shiften des Low-Nibbles auf das High-Nibble

  red_value=red_value&red;//Engültiges Verknüpfen vom High-Nibble und 
Low-Nibble

...
}

Funktionsaufruf dann mit:
ColorChanger(0x0F, 0x00, 0x00);

Statt der red_value=0xFF kommt red_value=0 raus. :-(

Wat mach ich denn nun wieder falsch?


Gruß Bastian

von Plazebo (Gast)


Lesenswert?

Naja 0xF0 & 0x0F ist nunmal 0x00.

von Andreas K. (a-k)


Lesenswert?

Wenn du 0x0F um 4 Bits nach links schiebst, kriegst du 0xF0. Wenn du das 
dann mit 0x0F maskierst (&), kommt naturgemäss 0 raus. Könnte sein, dass 
du eigentlich "|" statt "&" meinst.

von Bastian (Gast)


Lesenswert?

Nein, wie Herr Simpson sagen würde ;-)

von Andreas K. (a-k)


Lesenswert?

Bastian wrote:

> Nein, wie Herr Simpson sagen würde ;-)

Da muss ich mich outen: ich kenne den Herrn zwar dem Namen nach, aber 
nicht seine Gewohnheiten. Daher entgeht mir hier wahrscheinlich der 
Witz.

von John S. (linux_80)


Lesenswert?

Das bedeutet normalerweise, daß der Herr Simpson erkannt hat, dass er 
einen Fehler gemacht hat.

im original:
http://force.on.neobee.net/agcb_Doh!.wav

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.