Lecture I2C simple d'un capteur de type srf08

Publié le par Alain CROSET

Le petit programme ci-dessous est écrit en c pour compilateur ccs.
La cible est un 16F877, la lecture se fait sur la liaison série.

Il ne faut pas faire d'erreur sur la programmation de la liaison série, sinon pas de lecture cohérente.
Il ne faut pas non plus fair d'erreur sur la fréquence programmée et celle du quartz, sinon le timing du capteur est erroné.

L'adresse du capteur ci-dessous est E00 comme généralement programmé lors de l'achat du capteur.


#include <16f877.h>
#fuses HS,NOPROTECT,NOWDT,BROWNOUT,PUT,NOLVP
#ORG 0x1F00,0x1FFF {} /* Reserve memory for bootloader for the 8k 16F876/7 */
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

#use i2c (master, sda=PIN_C4, scl=PIN_C3)
 
main()
{
long range;
while(1)
 {
  i2c_start();                    //initate start condition
  i2c_write(0xE0);                //device address
  i2c_write(0x00);                //register address
//  i2c_write(0x50);                //set units to inches
  i2c_write(0x51);                //set units to centimeters
  i2c_stop();
 
  delay_ms(105);                   //wait for returning ping
 
  i2c_start();                    //initiate a new start condition
  i2c_write(0xE0);                //device address
  i2c_write(0x02);                //address of high byte register
  i2c_start();
  i2c_write(0xE1);                //device address but read

  range = i2c_read(1);         //read first byte and shift left
  range = range << 8;
  range += i2c_read(0);
  i2c_stop();

//  printf("range in inches = %lu\n\r", range[i]);
  printf("range in centimeters = %4lu\n\r", range);
    printf(" \n\r");
  delay_ms(100);
 }
}

Bonne chance

Publié dans Logiciel

Commenter cet article

fadhil 24/05/2011 00:00



j'ai tester cette code mais il me donne toujour 0 comme résulta



doctoral dissertation 28/01/2010 14:51


I have been visiting various blogs for my dissertation research. I have found your blog to be quite useful. Keep updating your blog with valuable information... Regards
_____________________

doctoral dissertation


Alain CROSET 29/01/2010 22:31


Thanks for your comment and your support.
If you have a blog or a web page, tell me, I can add a link on mine.
Have a good dissertation.