Bonjour
Comment on peut envoyer le resulat d'une operation vers le bus I2c du pic 16f877.
merci d'avance.
I2C + pic 16f877
Débuté par
hamidbsb
, mai 06 2008 12:44
3 réponses à ce sujet
#2
Posté 06 mai 2008 - 05:54
Je sais pas mais si ça peu t'aider :
http://n00n.free.fr/doc_robot/com_332_pic/com_332_pic.html
Et aussi :
http://ecl.ac-orleans-tours.fr/lyc-mgenevo...rs/i2c_mast.PDF
http://forums.futura-sciences.com/thread114426.html
http://www.delphifr.com/codes/PORT-SERIE-P...IMAL_38465.aspx
http://www.delphifr.com/codes/PROGRAMMEUR-16F877_20129.aspx
http://n00n.free.fr/doc_robot/com_332_pic/com_332_pic.html
Et aussi :
http://ecl.ac-orleans-tours.fr/lyc-mgenevo...rs/i2c_mast.PDF
http://forums.futura-sciences.com/thread114426.html
http://www.delphifr.com/codes/PORT-SERIE-P...IMAL_38465.aspx
http://www.delphifr.com/codes/PROGRAMMEUR-16F877_20129.aspx
#3
Posté 06 mai 2008 - 06:19
///////////////////////////////////////////////////////////////////////////// //I2C , MAITRE //config_I2C( ) //configure L'i2C , en maitre //I2C_START() //I2C_STOP() //unsigned char I2C_READ(unsigned char ack)// Retourne la valeur donnée + Valeur bare de l'ack //unsigned char I2C_WRITE(unsigned char data)//Envoyer ou non . ///////////////////////////////////////////////////////////////////////////// void config_I2C() { SSPCON=0b00101000;//Mode Maitre 7Bits d'addresse SSPADD=0x09;//F=100Khz SSPCON2=0b00000000; SSPSTAT=0b00000000; } //Fonction qui permet de dire que l'i2c est pret void I2C_PRET() { while((SEN==1)||(RSEN==1)||(PEN==1)||(ACKEN==1)||(RCEN==1)||(STAT_RW==1)) { //Attendre que I2C est pret . } } //démare un start void I2C_START() { I2C_PRET(); SEN=1; } //Repet start condition . void I2C_RSRN() { I2C_PRET(); RSEN=1; } //I2C stop void I2C_STOP() { I2C_PRET(); PEN=1; } //ACK a 1 = Autre valeur a recevoir après //ACK a 0 = Fini , on pourras faire un stop ensuite . unsigned char I2C_READ(unsigned char ack) { char temp; I2C_PRET(); RCEN=1;//Demare la reception I2C_PRET();//attend que la reception est faite temp=SSPBUF; if(ack) ACKDT=0; else ACKDT=1; ACKEN=1; return(temp); } unsigned char I2C_WRITE(unsigned char data)//Retourne L'ACK barre , si 1 , il n'as pas reçu d'ack , donc pb { I2C_PRET(); SSPBUF=data; I2C_PRET(); return (!ACKSTAT); }
I2C_START(); if(I2C_WRITE(0x35)) { recept_compt=I2C_READ(1); recept_parite=I2C_READ(1); recept_entete=I2C_READ(1); recept_add=I2C_READ(1); recept_data1=I2C_READ(1); recept_data2=I2C_READ(0); I2C_STOP();
Voila , j'ai utiliser sa , mais s'est le programme du maitre , j'ai pas les esclaves ...
Répondre à ce sujet
0 utilisateur(s) li(sen)t ce sujet
0 members, 0 guests, 0 anonymous users