SpiDev modul og bitshifting.
|
18-12-2019, 10:52
|
|||
|
|||
SpiDev modul og bitshifting.
Hej med jer.
Jeg sidder med en skoleopgave hvor jeg skal lave en temperaturmåler via en spi controller fra min raspberry pi. def readADCroom(ADC, channel, vref) svar = ADC.xfer2([0b00000001, 0b11000000,0b00000000) return ( ( svar[1] & 3 ) << 8 )+ svar[2] Problemet er at jeg simpelthen ikke forstår hvad der sker i linje 3 hvor return sker - her håber jeg at der er en venlig sjæl der kan foreklare hvad der sker mht bitshifting. link til koden: https://pastebin.com/apLtUMFf |
|||
19-12-2019, 21:20
|
|||
|
|||
RE: SpiDev modul og bitshifting.
Den kombinerer 10-bit resultatet (går ud fra controlleren returnere 10-bit resultat) til en integer.
svar[1] == MSB (vi leger den er 0xFF) svar[2] == LSB (vi leger den er 0xCC) Vi er kun interesseret i to bits fra MSB, da resultatet kun er 10-bits, så det er derfor vi tager svar[1] & 3 (0b11) 0xFF & 3 = 0x03 Den anden del shifter resultatet (2 bits fra svar[1]) til venstre, så fx: 0x03 << 8 == 0x0300 Derefter adder den bare LSB: 0x0100 + 0xCC = 0x01CC |
|||
17-01-2020, 10:52
|
|||
|
|||
RE: SpiDev modul og bitshifting.
Tusind tak for svaret
|
|||
|
User(s) browsing this thread: 1 Gæst(er)