Autor Tema: Ayuda Pic 18F458 (I2C - LM75)  (Leído 3008 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Arwer

  • PIC10
  • *
  • Mensajes: 3
Ayuda Pic 18F458 (I2C - LM75)
« en: 01 de Octubre de 2009, 05:53:03 »
Muy buenas a todos, estoy con el pic 18F458 intentandolo comunicar a través del I2C con el sensor LM75, y mi problema es (o creo que es) que no me ejecuta la instrucción i2c_write, el programa se queda colgado cuando llega a esta línea.
La placa posee un par de led, y lo comprobe encendiendolos antes y después de esta instrucción y efectivamente, solo encendia el primero. La instrucción i2c_start la ejecuta sin problemas. Aquí os pongo el código.

Código: [Seleccionar]
// inicializa sensor de temperatura
unsigned char lm75_init(void) {
i2c_start();

i2c_write(0x90); //Byte de control
i2c_write(0x01); //Configura registro
i2c_write(0x18); //Configura byte

i2c_stop();

return (0);
}

//lee temperatura en grados*100
unsigned int lm75_read(void) {
unsigned int tmp;
unsigned char tmp1,tmp2;
signed char negativo;

i2c_start();

i2c_write(0x90); //Byte de control
i2c_write(0x00); //Direccion registro
  
   /*Restart*/
    i2c_start();
  
i2c_write(0x91); //Byte de control

tmp1=i2c_read(); //Leer temperatura
tmp2=i2c_read(); //Leer temperatura

i2c_stop();

tmp=(((unsigned int)tmp1<<8)|tmp2);
// calculo de grados centigrados

negativo=1;
if (tmp&0x80==1) {
tmp=~tmp+1;
negativo=-1;
}
tmp=tmp>>5;
tmp=tmp*125;
tmp=tmp/100;

return tmp*negativo;
}

Cabe destacar que tambien lo tengo inicializado en el programa principal con la línea:

Código: [Seleccionar]
#use i2c(Master,Fast,sda=PIN_C4,scl=PIN_C3)
Aunque no entiendo muy bien para que se usa el "Fast"

Muchas gracias y a ver si me ayudais a solucionar este problemilla ^^

Un saludo.
« Última modificación: 01 de Octubre de 2009, 07:17:36 por Arwer »

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Ayuda Pic 18F458 (I2C - LM75)
« Respuesta #1 en: 01 de Octubre de 2009, 09:56:54 »
El bus I2C tiene las respectivas resistencias pull-up?
No contesto mensajes privados, las consultas en el foro

Desconectado Arwer

  • PIC10
  • *
  • Mensajes: 3
Re: Ayuda Pic 18F458 (I2C - LM75)
« Respuesta #2 en: 01 de Octubre de 2009, 10:49:33 »
Mmm... buscando el esquematico no, no lo tiene, me he estado documentando respecto a este tema, y al parecer que debería llevar, 2 resistencias pull-up de 4k7? si ese es el problema creo que podré hacerle un apaño al PCB.

Muchas Gracias Suky

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Ayuda Pic 18F458 (I2C - LM75)
« Respuesta #3 en: 01 de Octubre de 2009, 10:52:35 »
Si exactamente 2 resistencias de 4.7k aunque este valor depende de la cantidad de dispositivos en el Bus, pero con ese valor va a estar bien. Aquí puedes encontrar un poco de información al respecto.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Arwer

  • PIC10
  • *
  • Mensajes: 3
Re: Ayuda Pic 18F458 (I2C - LM75)
« Respuesta #4 en: 01 de Octubre de 2009, 15:31:51 »
Muy bueno el link, la verdad me ha ayudado mucho, y al i2c solo va conectado el sensor de temperatura, por lo que creo que con esas resistencias habrá de sobra...

Muchas gracias! ya te comentare si sale  :) :)


 

anything