collapse

* Links de Robótica

* Posts Recentes

Feira de electricidade e eletrónica por artur36
[Ontem às 23:07]


Power_OK Enermax por almamater
[Ontem às 12:10]


Recomendação de um opamp para um DAC r2r por jm_araujo
[23 de Novembro de 2017, 10:48]


RN42 e TP-Link MR3020 por doiga
[22 de Novembro de 2017, 19:22]


Ajuda Projecto IR / RF por senso
[22 de Novembro de 2017, 13:15]


Ideias para construir um quadrúpede simples por dropes
[21 de Novembro de 2017, 22:43]


Ajuda com TRIAC por senso
[17 de Novembro de 2017, 18:00]


TV LG White Screen por almamater
[15 de Novembro de 2017, 08:37]


Pergunta sobre prototipagem ( Pesquisa ) por luisjustin
[14 de Novembro de 2017, 23:22]


Medir Agua que está no Poço por Njay
[14 de Novembro de 2017, 13:28]

Autor Tópico: salvar valor negativo na EEPROM  (Lida 1359 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline sergiotux

  • Mini Robot
  • *
  • Mensagens: 19
salvar valor negativo na EEPROM
« em: 20 de Agosto de 2014, 19:51 »
Olá pessoal,

estou trabalhando com um sensor de temperatura ds18b20 e gostaria de salvar o valor da temperatura na EEPROM, mas como fazer isso quando o valor é negativo?

Alguém pode me ajudar?

Obrigado

Sérgio

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.141
    • Tróniquices
Re: salvar valor negativo na EEPROM
« Responder #1 em: 20 de Agosto de 2014, 20:41 »
Copias todos os bytes da tua variável para a EEPROM e para recuperar fazes o contrário. Vê na libc do AVR as funções eeprom_write_block e eeprom_read_block (avr/eeprom.h)

StarRider

  • Visitante
Re: salvar valor negativo na EEPROM
« Responder #2 em: 20 de Agosto de 2014, 20:42 »
Em BASIC ? PASCAL ? C ? KLINGONÊS ?????

Qual EEPROM ? Qual MCU ?

Essa questão só faz sentido no caso de estar a usar uma linguagem strongly typed e usar uma variável unsigned,
de resto para a EEPROM é totalmente transparente ... até mesmo nessa coisa chamada arduino que anda por ai  8)

O melhor era mesmo "postar" o codigo.



Offline dropes

  • Mini Robot
  • *
  • Mensagens: 1.930
Re: salvar valor negativo na EEPROM
« Responder #3 em: 20 de Agosto de 2014, 23:20 »
Njay tem razão, o valor obtido do sensor de temperatura é positivo, (não existem bits negativos) e este pode ser gravado directamente na eeprom, por se tratar de um valor de 16 Bits, serão 2 bytes (1 word) ocupados por cada registo.

Pág. 3
"The DS18B20 output temperature data is calibrated in degrees Celsius; for Fahrenheit applications, a lookup table or conversion routine must be used. The temperature data is stored as a 16-bit sign-extended two’s complement number in the temperature register (seeFigure 2). The sign bits (S) indicate if the temperature is positive or negative: for positive numbers S = 0 and for negative numbers S = 1"

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

Se for usada uma biblioteca para o sensor, então não se tem acesso directo aos bits a indicar se é positivo ou negativo, nesse caso teria de se incluir um bit extra antes de se gravar na eeprom, é uma questão de se jogar com os valores em binário.


Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.402
  • Helpdesk do sitio
Re: salvar valor negativo na EEPROM
« Responder #4 em: 20 de Agosto de 2014, 23:23 »
Quê?
Se tem um bit que diz se é positivo ou negativo, então o valor é positivo ou negativo, á N bibliotecas em que tens o valor raw como a conversão, e podes bem guardar o valor já convertido, só que como é um valor com parte decimal será um float, que vai usar 4 bytes na eeprom, é uma questão de trade-offs.
Avr fanboy