"Minus"-fråga om DS18s20 tempsensor.
hm, jo det där med ettan har jag missat, på vilket sätt ska det adderas?
du menar om jag inverterar o får säg 34 Dec så skall jag plus:a på 1 till 35 o därefter beräkna tempen?
för du menar inte en etta binärt sett på slutet?
EDIT: om jag gör som ovan så blir det mer fel än innan ju, den ökar i temp.
Jag jämför nu med en digital termometer o den visar på -2,5 grader, vilket jag får om jag drar AV en grad på min temp.
/B
du menar om jag inverterar o får säg 34 Dec så skall jag plus:a på 1 till 35 o därefter beräkna tempen?
för du menar inte en etta binärt sett på slutet?
EDIT: om jag gör som ovan så blir det mer fel än innan ju, den ökar i temp.
Jag jämför nu med en digital termometer o den visar på -2,5 grader, vilket jag får om jag drar AV en grad på min temp.
/B
detta är LSB innan invertering: "11111011" (251 Dec)
efter får jag "00000100" (4 Dec)
countremain=2 (Dec) (undrar om detta är rätt benämning, DEC? )
countperC = 16 (Dec) (Samma här, kanske ska va hex)
Men det är iaf siffrorna som kommer ut.
READ_SCRATCHPAD = Temp_read - 0.25 + (countperC - countremain) / countperC
Edit 2: Temp_read är då "-4" i fallet ovan.
EDIT: Miljön är VB6.
Vill tilläga att det hela funkar finfint på plus-sidan av temperaturskalan, det är jämfört med digital köptermometer. det är på minussidan jag får nån grad fel. För låg temp.(för högt minustal, hur man nu ska säga:) jag vill se 3 istället för 4 om jag säger så)
efter får jag "00000100" (4 Dec)
countremain=2 (Dec) (undrar om detta är rätt benämning, DEC? )
countperC = 16 (Dec) (Samma här, kanske ska va hex)
Men det är iaf siffrorna som kommer ut.
READ_SCRATCHPAD = Temp_read - 0.25 + (countperC - countremain) / countperC
Edit 2: Temp_read är då "-4" i fallet ovan.
EDIT: Miljön är VB6.
Vill tilläga att det hela funkar finfint på plus-sidan av temperaturskalan, det är jämfört med digital köptermometer. det är på minussidan jag får nån grad fel. För låg temp.(för högt minustal, hur man nu ska säga:) jag vill se 3 istället för 4 om jag säger så)
"Invertera och addera 1 till MSB => 00000101 (bin)"
Nej, jag trodde jag skulle addera 1 till det jag får i Dec-tal
"Skifta ett steg åt höger för att bli av med 0.5C-biten => 00000010 (bin) = 2 (dec)"
Ja, det gör jag men eftersom jag inte adderat 1 så blir det fel.
"Temperaturen = (2 - 0.25) + (16 - 2)/16 = 2.625 C (minus)"
Räknar på annat vis enligt ovan men det blir troligt samma sak, jag går efter databladets sätt.
Det är det första jag gör fel på.
/B
Nej, jag trodde jag skulle addera 1 till det jag får i Dec-tal
"Skifta ett steg åt höger för att bli av med 0.5C-biten => 00000010 (bin) = 2 (dec)"
Ja, det gör jag men eftersom jag inte adderat 1 så blir det fel.
"Temperaturen = (2 - 0.25) + (16 - 2)/16 = 2.625 C (minus)"
Räknar på annat vis enligt ovan men det blir troligt samma sak, jag går efter databladets sätt.
Det är det första jag gör fel på.
/B
> Jag vet inte hur jag adderar till binära tal,
Skojar du ?
00000000
00000001
00000010
00000011
00000100
00000101
00000110
00000111
00001000
Varje rad = raden ovan + 1.
EDIT :
Notera att lägga till 1 till det binära talet inte har med temperaturen att göra i sig, utan det är vad man alltid måste göra vid teckenbyte på ett 2-komp binärt tal. Att det råkar vara en temperatur har ingen betydelse.
Nu råkar det ju vara så att sista biten motsvarar 0.5 grad, om jag inte minns fel, så vad du igentligen lägger till är 0.5 grad. Om jag inte har missförstått någonting...
Skojar du ?
00000000
00000001
00000010
00000011
00000100
00000101
00000110
00000111
00001000
Varje rad = raden ovan + 1.
EDIT :
Notera att lägga till 1 till det binära talet inte har med temperaturen att göra i sig, utan det är vad man alltid måste göra vid teckenbyte på ett 2-komp binärt tal. Att det råkar vara en temperatur har ingen betydelse.
Nu råkar det ju vara så att sista biten motsvarar 0.5 grad, om jag inte minns fel, så vad du igentligen lägger till är 0.5 grad. Om jag inte har missförstått någonting...

Senast redigerad av sodjan 17 november 2005, 18:46:42, redigerad totalt 1 gång.