Tråd bedømmelse:
  • 0 Stemmer - 0 Gennemsnit
  • 1
  • 2
  • 3
  • 4
  • 5
SpiDev modul og bitshifting.
18-12-2019, 10:52
#1
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
Find alle beskeder fra denne bruger
Citer denne besked i et svar
19-12-2019, 21:20
#2
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
Find alle beskeder fra denne bruger
Citer denne besked i et svar
17-01-2020, 10:52
#3
RE: SpiDev modul og bitshifting.
Tusind tak for svaret
Find alle beskeder fra denne bruger
Citer denne besked i et svar
« Ældre | Nyere »




User(s) browsing this thread: 1 Gæst(er)