Autor Tema: Problema I2C - sensor  (Leído 1171 veces)

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

Desconectado rasengan04

  • PIC10
  • *
  • Mensajes: 11
Problema I2C - sensor
« en: 20 de Mayo de 2019, 13:43:50 »
Hola buen dia
Tengo una situación curiosa ya que estoy leyendo un sensor por I2C el cual en su datasheet me indica que cuenta con  offset pero cuando lo leo me manda un 0, el sensor cuenta con un checksum  y si da por lo que creí estar leyendo bien   

Código: C
  1. #include <18F4580.h>      
  2. #FUSES NOWDT,NOPROTECT,NOLVP,NOPUT,HS
  3. #USE DELAY(CLOCK=20000000)
  4. #use i2c(Master,sda=PIN_D3,scl=PIN_D2)
  5. void main(){
  6. while(1){
  7. byte x1,x2,x3,x4,x5;
  8. i2c_start();
  9. i2c_stop();
  10. i2c_start();
  11. i2c_write(0b10100001); // 7bits de direccion y uno de lectura el datasheet no me indica un reinicio inmediatamente después de escribir
  12. x1=i2c_read();                       //ya manda el dato
  13. x2=i2c_read();
  14. x3=i2c_read();
  15. x4=i2c_read();
  16. x5=i2c_read(0);
  17. i2c_stop();
  18. }
  19. }

lo curioso vino cuando tuve que leer 2 sensores, como no se le podía modificar la dirección al sensor, tuve que programar dos lineas de I2C,

Código: C
  1. #include <18F4580.h>      
  2. #FUSES NOWDT,NOPROTECT,NOLVP,NOPUT,HS
  3. #USE DELAY(CLOCK=20000000)
  4. #use i2c(Master,sda=PIN_D3,scl=PIN_D2,stream=lucho)
  5. #use i2c(Master,sda=PIN_B4,scl=PIN_B5,stream=lucho2)
  6. byte x1,x2,x3,x4,x5;
  7.  
  8. i2c_start();
  9. i2c_write(lucho,0b10100001);
  10. x1=i2c_read(lucho);
  11. x2=i2c_read(lucho);
  12. x3=i2c_read(lucho);
  13. x4=i2c_read(lucho);
  14. x5=i2c_read(lucho,0);
  15. i2c_stop();
  16.  
  17. i2c_start();
  18. i2c_write(lucho2,0b10100001);
  19. x1=i2c_read(lucho2);
  20. x2=i2c_read(lucho2);
  21. x3=i2c_read(lucho2);
  22. x4=i2c_read(lucho2);
  23. x5=i2c_read(lucho2,0);
  24. i2c_stop();
y al recibir los datos los sensores ya me mandaban el offset que indica el datasheet  y el checksum igual sigue mandando lo mismo.
que estoy haciendo mal????
las resistencias son del mismo valor, las variable son las mismas;
Gracias.

Desconectado rasengan04

  • PIC10
  • *
  • Mensajes: 11
Re:Problema I2C - sensor
« Respuesta #1 en: 27 de Mayo de 2019, 17:57:43 »
ya encontre la solucion (por casualidad)

Código: [Seleccionar]
i2c_start();
i2c_write(0b10100001);
x1=i2c_read();
x2=i2c_read();
x3=i2c_read();
x4=i2c_read();
x5=i2c_read();
i2c_stop(0);

poner 0 en el stop y no en el ultimo dato


 

anything