HALLO, kann mir bitte jemand erklären wie sich die zu sendenden Bytes zusammensetzen? channel = 4; mode = 1; gain = 0; spisendbyte(0x08|(channel&0x07)); wir hier 0x0c gesendet? spisendbyte(((mode<<5)&0xe0)|((gain<<2)&0x1c)); und hier ?
Michael wrote: > spisendbyte(0x08|(channel&0x07)); > > wir hier 0x0c gesendet? Ja, die Maskierung von channel mit 0x07 hat nur Schutzfunktion, bei korrekter Benutzung sollte die nicht notwendig sein, es bleibt also 0x08 | 0x04 übrig. > spisendbyte(((mode<<5)&0xe0)|((gain<<2)&0x1c)); > > und hier ? gain ist 0, trägt also nicht zum Ergebnis bei. mode ist 1 und wird um 5 bits verschoben, es wird also 0b00100000 draus oder 0x20.
1 | channel = 0x04 -> 00000100b |
2 | channel & 0x07 -> 00000100b |
3 | & 00000111b |
4 | ----------- |
5 | 00000100b |
6 | ... | 0x08 -> | 00001000b |
7 | ----------- |
8 | 00001100b = 0x0C |
9 | |
10 | mode = 1 |
11 | gain = 0 |
12 | mode << 5 -> 00000001b << 5 = 00100000b |
13 | ... & 0xe0 -> & 11100000b |
14 | ----------- |
15 | 00100000b |
16 | |
17 | gain << 2 -> 00000000b << 2 = 00000000b |
18 | ... & 0x1c -> & 00011100b |
19 | ----------- |
20 | 00000000b |
21 | ... | (mode<<5)&0xe0 -> | 00100000b |
22 | ----------- |
23 | 00100000b = 0x20 |
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.