TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jezus en 28 de Agosto de 2010, 11:05:01
-
Pues eso, configurar los registros TH y TL del DS1621 me va a volver loco. Hace un tiempo lo hice y no se presentó ningún problema y ahora....no sé que me pasa pero hay algo que no hago bien. El código que he hecho es el siguiente:
i2c_start();
i2c_write(0x90);//dirección del dispositivo
i2c_write(0xac);//registro control
i2c_write(0x02);//conversión continua
i2c_start();
i2c_write(0x90);//dirección del dispositivo
i2c_write(0xa1);//registro TH
i2c_write(0x28);
i2c_write(0x00);
i2c_start();
i2c_write(0x90);//dirección del dispositivo
i2c_write(0xa2);//registro TL
i2c_write(0x0a);
i2c_write(00);
i2c_start();
i2c_write(0x90);//dirección del dispositivo
i2c_write(0xee);//comienza la conversion
i2c_stop();
Este código lo he basado en el ejemplo del datasheet.
El caso es que cuando simulo con proteus el termostato no sirve y los datos TH y TL ni siquiera se cargan en el registro correspondiente. Si alguien ha trabajado con este dispositivo le agradeceria que me copiase el trozo de código donde configura TH y TL. He estado buscando mucho por internet pero no he encontrado ningún proyecto donde usen el sensor como termostato.
Gracias!
-
Hola jezus, si estás programando con CCS, este trae una librería lista para el DS1621. Puedes ver como está implementada para que veas cual es tu error o simplemente utilizarla en tu programa.
Saludos!
-
Hola jezus, si estás programando con CCS, este trae una librería lista para el DS1621. Puedes ver como está implementada para que veas cual es tu error o simplemente utilizarla en tu programa.
Saludos!
Ya se que trae esa librería, de hecho ya la mire, pero no trae la opción de fijar el termostato, sólo es para leer datos de temperatura.
Gracias de todos modos
-
Tal vez esto te sirva:
http://www.ccsinfo.com/forum/viewtopic.php?t=31727&highlight=ds1621
Saludos!
-
Tal vez esto te sirva:
http://www.ccsinfo.com/forum/viewtopic.php?t=31727&highlight=ds1621
Saludos!
muchísimas gracias bmb!!!!
busque mucho por internet y no encontré nada.Me funciona perfectamente.
gracias de nuevo!
-
Estoy que me va a dar algo....ayer mismo probé el siguiente código para configurar los registros TH y TL y funcionaba perfectamente y hoy....nada. ¿veis algún fallo en el código?
void initemp(int *r){
r=r+6;
i2c_start();
i2c_write(0x90);
i2c_write(0xee);
i2c_stop();
i2c_start();
i2c_write(0x90);
i2c_write(0xA1);
i2c_write(*r);
i2c_write(0);
i2c_stop();
r++;
i2c_start();
i2c_write(0x90);
i2c_write(0xA2);
i2c_write(*r);
i2c_write(0);
i2c_stop();
}
no me lo explico, alguien sabe por que puede pasar eso?se configura bien TH pero TL lo deja como 0. :5]
-
Hola jezus, ya intentaste hacerlo de la misma forma que lo hacen en el foro de CCS? Simplemente configuras en funciones separadas el TH y el TL:
// Escribir al registro de termostato "Temperatura Alta" (TH)
void escribe_TH(signed int8 grados)
{
i2c_start();
i2c_write(0x90);
i2c_write(0xA1);
i2c_write(grados);
i2c_write(0);
i2c_stop();
}
// Escribir al registro de termostato "Temperatura Baja" (TL)
void escribe_TL(signed int8 grados)
{
i2c_start();
i2c_write(0x90);
i2c_write(0xA2);
i2c_write(grados);
i2c_write(0);
i2c_stop();
}
Y luego llamar las rutinas así:
escribe_TH(25); // Punto de disparo Alto del termostato = 25 grados.
escribe_TL(10); // Punto de disparo Bajo del termostato = 10 grados.
Saludos!
-
Hola jezus, ya intentaste hacerlo de la misma forma que lo hacen en el foro de CCS? Simplemente configuras en funciones separadas el TH y el TL:
// Escribir al registro de termostato "Temperatura Alta" (TH)
void escribe_TH(signed int8 grados)
{
i2c_start();
i2c_write(0x90);
i2c_write(0xA1);
i2c_write(grados);
i2c_write(0);
i2c_stop();
}
// Escribir al registro de termostato "Temperatura Baja" (TL)
void escribe_TL(signed int8 grados)
{
i2c_start();
i2c_write(0x90);
i2c_write(0xA2);
i2c_write(grados);
i2c_write(0);
i2c_stop();
}
Y luego llamar las rutinas así:
escribe_TH(25); // Punto de disparo Alto del termostato = 25 grados.
escribe_TL(10); // Punto de disparo Bajo del termostato = 10 grados.
Saludos!
Si, aunque ponga justo ese código no funciona y no me lo explico ya que un día funcionó y al dia siguiente nada......
-
Ya estáááá!!!lo acabo de resolver, debo de poner un delay entre configuración de TH y TL si no no funciona.............me iba a volver loco