TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: rafagranada en 29 de Octubre de 2018, 12:12:35

Título: problema con 2 ds1621
Publicado por: rafagranada en 29 de Octubre de 2018, 12:12:35
buenas  a todos

gracias por la ayuda ante todo.

no soy un gran experto programando asi que os voy a pedir una ayuda pues no puedo conseguir la lectura de 2 ds1621
 
el primero A2A1A0=0
el segundo
a2A1=0
a0=1

os dejo el cod. a ver que estoy poniendo mal

#include "16f877a.h"
#fuses XT,NOWDT,NOPROTECT,NOLVP
#byte pa=5 
#byte pb=6 
#byte pc=7 
#byte pd=8 
#byte pe=9
#use delay(clock=4Mhz)  // aqui declaramos que use el reloj que sera de 4 Mhz.
#include "DS1621.C"
#include "mipant4bit.c" // incluimos el driver que usamos para el LCD
#include "stdio.h" //incluimos esta libreria para usar funcion printf

#use standard_io(d)
#use i2c(master,sda=pin_c4, scl=pin_c3)
//Registros DS1307
/*#define ds_seconds 0x00
#define ds_minutes 0x01
#define ds_hours 0x02
#define ds_control 0x07*/
void automatico();

int lectura;
int lectura2;
FLOAT grados_temperatura,grados_temperatura2;

float medida,medida2;

void temperatura()
{
int conta=0;
init_temp();
   lcd_init();//inicializacion necesaria del lcd
   delay_ms(100);
   i2c_start();
   i2c_write(0x90);//orden configuracion
   delay_ms(10);
   i2c_write(0xAA);//lecura
   delay_ms(10);
   i2c_write(0x91); //direccion de ds1621-1
   medida=read_high_temp();    //valor en Farenheit
   grados_temperatura = (((medida-32) / 1.8)+0.25);//conversion a centigrados//(1.788989899988888889
   printf(lcd_putc,"Temp:%.1f",grados_temperatura);//muestra el valor por lcd
   lcd_putc(0xdf);
   lcd_putc("C");
   delay_ms(1500);
   i2c_stop();
 
   delay_ms(100);
   init_temp();
   i2c_start();
   i2c_write(0x91);//orden config.
   delay_ms(10);
   i2c_write(0xAA);
   delay_ms(10);
   i2c_write( 0x92 );//direiccon ds1621-2
   medida2=read_high_temp();    //valor en Farenheit
   grados_temperatura2 = (((medida2-32) / 1.8)+0.25);//conversion a centigrados//(1.788989899988888889
   lcd_gotoxy(1,2);
   printf(lcd_putc,"Temp2:%.1f",grados_temperatura2);//muestra el valor por lcd
   lcd_putc(0xdf);
   lcd_putc("C");
   delay_ms(1500);
   i2c_stop();
 
 
}

   





void main()
{
   
   set_tris_d(0);
   set_tris_b(0b11111111);
   set_tris_c(0b00000000);
   set_tris_e(0b000);
   set_tris_a(0b00111111);
   lcd_init();   
   pd=0;         
   pc=0;
   pe=0;
   
   

 
   while(1){
   temperatura();

 
}
}