Bonjour à tous,
Je dois réaliser un petit projet. Il constitue a relier un PIC16f1938 à une carte LTC2990 qui permet de surveiller une tension un courant ou une température. La connexion des deux cartes se fait à l'aide d'un bus avec protocole I²C !!
Je pense avoir bien compris le système de fonctionnement de ce I²C.
J'ai commencer un petit code sous MPLAB qui me permettra de créer un fichier .h. Ce fichier .h sera enregistré quelque part sur mon ordi puis le bootloader du pic pourra le retrouver ,,, Je n'aurai qu'a la "balancer" dans le PIC.
Voici mon code avec des commentaires ...
Code:#include <pic.h> #define SDA RC4 #define SCL RC3 #define TRUE 1 #define FALSE 0 void main () { //unsigned char adresse (1001100 ??) //unsigend char commande (00X11111 ??) TRISC=0x18; //SCL et RDA mis à "1" -> inputs SSPCON1=SSPCON1|0x08; //I²C Master mode SSPCON2=SSPCON2&0x00; //Tout à zéro sur le registre 2 SSAPDD=10; //Définition de l'horloge SMP=1; //Contrôle de la vitesse de balayage désactivé CKE=1; //Autorise niveaux logiques I²C SSPIF=0; //clear interrupt flag BCLIF=0; //clear bus collision flag SEN=1; //Start condition (met SDA à 0 et SCL à 1) //Adresser un esclave //R/W doit etre à 0 if (!ACKSTAT) //si ACK... { ACKDT=0; //...on transmet qu'il ya bien eu acknowledge } else { ACKDT=1; //sinon y en a pas eu } ACKEN=1; //send acknowledge sequence avec la valeur de ACKDT TRISC=0x00; //SCL et RDA mis à "0" -> outputs //Recupere 8bits de données (mode lecture) PEN=1; //Stop condition (met SDA à 1 et SCL à 1) }
Mon probleme est de savoir comment adresser un esclave. comment je dis au pic daller interoger un esclave?
(d'autre questions suiveront)
Cordialement
MERCI POUR VOTRE AIDE
-----