Página 1 de 1

DS1820

MensagemEnviado: 06 Mar 2015 10:01
por Pask
Amigos, eu consegui compreender como é gerado o formato de bits para a leitura de temperaturas do DS1820 conforme seu datasheet, mas não consigo entender como é feita a leitura dos valores negativos. Será que alguém poderia me ajudar? Segue link do datasheet. Vejam a página 6.

http://datasheets.maximintegrated.com/en/ds/DS18S20.pdf

Re: DS1820

MensagemEnviado: 06 Mar 2015 11:09
por xultz
Dá uma olhada na seção 3.4

https://www3.ntu.edu.sg/home/ehchua/programming/java/DataRepresentation.html

Se você utilizar um microntrolador de 16 bits, e declarar uma variável signed int, o compilador utilizará esta representação de números positivos e negativos. É meio estranho, mas ela permite realizar alguns cálculos de forma bastante otimizada.

Re: DS1820

MensagemEnviado: 06 Mar 2015 13:47
por tcpipchip
Pode lhe ajudar sobre o complemento de 2

http://www.inf.furb.br/~maw/topicos/top ... p_viii.pdf

Re: DS1820

MensagemEnviado: 06 Mar 2015 14:30
por Pask
Realmente, eu havia me esquecido do complemento de 2:

Por exemplo, na página 6 do datasheet temos a forma como o DS1820 faz a leitura da temperatura de +25ºC => 0000 0000 0011 0010
Em que os primeiros 8 bits representam o valor 25 binário mais o 1/2 dígito e os últimos 8 bits são todos 0 enquanto a temperatura for positiva.

Quando o DS1820 faz a leitura do valor de -25ºC, ele apresenta o resultado em complemento de dois => 1111 1111 1100 1110
Em que os primeiros 8 bits representam o valor 25 negativo em complemento de dois e os 8 últimos bits são todos 1 enquanto a temperatura for negativa.

Resumindo, a representação binária de números negativos só é possível em complemento de dois e todos os números negativos começam com 1.

Re: DS1820

MensagemEnviado: 07 Mar 2015 14:03
por tcpipchip
Isto mesmo!