Bit Shifting

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Bl3nder
User
Beiträge: 139
Registriert: Freitag 3. Januar 2020, 17:07

Schönen guten Tag,

Ich habe eine kurze Frage und zwar habe Ich folgenden Baustein :
https://www.ti.com/lit/ds/symlink/adcs7 ... e.com%252F es geht hier um Seite 10.

Ich habe es zwar hinbekommen diesen auszulesen jedoch verstehe Ich nicht genau wieso Ich lade das Ergebnis in 2 Byte was 16 Bit entspricht.

Das mache Ich daher weil der Baustein 12Bit hat + 4 "leading Zeros" wieso muss Ich danach den Inhalt des 1Bytearry um 8 Bit verschieben das verstehe Ich leider nicht.

Mein Gedanke:
Mal angenommen der Messwert wäre der max dann denke Ich das würde so aussehen

Code: Alles auswählen

print(bin(0b000111111111 << 8))
Ergebnis:

Code: Alles auswählen

0b11111111100000000
?????

Und warum muss Ich dann die 2 Bytearrys oder am ende vergleichen ( es gibt eine Bibliothek da wird das so gemacht nur ich wollte verstehen was da genau passiert )

https://forum.digilentinc.com/topic/176 ... i-arduino/

Ich danke euch
Eine Vision ohne Aktion bleibe eine Illusion
LukeNukem
User
Beiträge: 232
Registriert: Mittwoch 19. Mai 2021, 03:40

Bl3nder hat geschrieben: Montag 7. März 2022, 21:17 Mal angenommen der Messwert wäre der max dann denke Ich das würde so aussehen

Code: Alles auswählen

print(bin(0b000111111111 << 8))
Ergebnis:

Code: Alles auswählen

0b11111111100000000
?????
Du shiftest eine Folge von acht 1-Bits um acht Stellen nach links, insofern ist das Ergebnis vollkommen korrekt -- allerdings verschluckt die Ausgabe die nicht signifikanten führenden Nullen, genau wie 015 ja auch einfach 15 ist. Wie liest Du den ADC denn aus, und was steht dann in Deiner Variablen?

Edit: Nachfrage hinzugefügt.
Bl3nder
User
Beiträge: 139
Registriert: Freitag 3. Januar 2020, 17:07

Ich verstehe nicht wieso ich um 8 Bits nach links Shifte und mein Code sieht ca aus wie auf dem unteren link .Dieser funktioniert auch ich verstehe den Zusammenhang halt nur nicht .
Eine Vision ohne Aktion bleibe eine Illusion
Sirius3
User
Beiträge: 18265
Registriert: Sonntag 21. Oktober 2012, 17:20

Du hast zwei 8bit-Werte aaaaaaaa und bbbbbbbb und willst daraus einen 16bit-Wert berechnen:
1. aaaaaaa << 8 -> aaaaaaaa00000000
2. aaaaaaaa00000000 | bbbbbbbb -> aaaaaaaabbbbbbbb
Bl3nder
User
Beiträge: 139
Registriert: Freitag 3. Januar 2020, 17:07

Ich danke dir Sirius so macht es natürlich Sinn :)
Eine Vision ohne Aktion bleibe eine Illusion
Antworten