I 16-Bits-Register haben, die einige Werte in LSB und MSB enthalten:Erste Wert von MSB von 16-Bit-Register
LSB:
Bei Bit 0 ... 1 der Wert 0
Bei Bit 2 den Werten 0
MBS:
Bei MSB-I-Wert 20
So ist der Wert, der im Register geschrieben werden soll, ist 0 + 0 + 20 = 160
Wenn ich mir anmelden gerade lese das ich es auf diese Weise so machte:
für den ersten Wert in Bit [0 ... 1]:
firstVal = (valFromReg & (((1 << 2)-1) << 1)/2)
secondVal = (valFromReg & 4)/4
Aber wie liest/konvertiert man den dritten Wert, um die Zahl 20 zu erhalten?
Vielleicht erkläre ich mein Problem ein bisschen falsch. Wie ich in meinem ersten Post erklärt habe, sind die ersten 3 Bits für einige Werte reserviert. Vom Bit [0 ... 1] ist der Maximalwert 3, der Bit 2-Wert kann 0 oder 1 sein und der dritte Wert kann zwischen 0 und 255 liegen. Mein Problem ist, wie dieser dritte Wert gespeichert und aus dem Register ausgelesen wird? – Josef