TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado 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();
}
}