hahahaha dae fabim! sempre me esculachando neh bocudo!!
então cara é o seguinte eu montei um circuito com o sensor DS18b20, ai estava lendo o datasheet e me interesei pelo 1-wire, achei legal o protocolo,crc.. e aplicação do mesmo! como trabalho com desenvolvimento na area de termometria em cilos de grãos e cereais, utilizo na termometria termopar (cobre/constantan) ai de curioso queria montar um circuito para testes com o barramento, tipo colocando varios sensores no memso barramento só isso! a aplicação é apenas desenvolvimento! tipo montar e deixar funcionando hehe, algum dia quem sabe pode ser implementado em algum equipamento novo entende!!
já montei o código, entendi os comandos do mesmo, mas num vai, ta faltando alguma coisa! ligo um sensor mas quando ligo outro ja dá problema na leitura!! ele mede a diferêça!!
não entro na minha cabeça o funcionamento ainda:
alimento todos os sensores com + e - ai saio com um fio e vou ligando todos os DQ dos sensores nesse fio!
no meu códiog envio reset, selção do comando [0xcc], e peço a conversão de temperatura[0x44]
void main(void)
{
int buffer[9], conta;
float temp;
while (true)
{
reset_1w ();
escreve_byte_1w (0xcc); // comando skip Rom
escreve_byte_1w (0x44); // inicio da conversão da temperatura
reset_1w (); // reseta o dispositivo
escreve_byte_1w (0xcc) ; //comando skip rom
escreve_byte_1w (0xbe); //comando de leitura da memória de rascunho
//efetua a leitura dos nove bytes da memória de rascunho
for (conta = 0; conta<9; conta++)
buffer[conta]=le_byte_1w ();
printf ("temp LSB = %u\r\n",buffer[0]);
printf ("temp MSB = %u\r\n",buffer[1]);
printf ("TH = %u\r\n",buffer[2]);
printf ("TL = %u\r\n",buffer[3]);
printf ("contagem Remanescente = %u\r\n",buffer[6]);
printf ("Contagem por grau C = %u\r\n",buffer[7]);
printf ("CRC = %u\r\n",buffer[8]);
printf ("CRC calculado = %u\r\n", calc_crc (buffer,8));
reset_1w ();
escreve_byte_1w (0xcc);
escreve_byte_1w (0xb4);
if (le_bit_1w()) printf ("modo alimentado\r\n");
else printf ("Modo parasita\r\n");
printf ("temperatua = %Ld" , ((long)(buffer[1]<<8) + buffer[0]>>1));
if (bit_test(buffer[0],0)) printf (".5");
printf (" graus celsius (menor preciso)\r\n");
temp = (long) (buffer[1]<<8) + buffer[0];
temp = (temp / 2) - 0.25 + (float) ((buffer[7] - buffer[6])/buffer[7]);
printf ("temperatura = %3.2f graus celcius\r\n", temp);
printf ("Proximo ?\r\n");
while (getc() !=13);