Dspic30f --- I2c --- Cmps03
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Dspic30f --- I2c --- Cmps03



  1. #1
    invite018af9d8

    Dspic30f --- I2c --- Cmps03


    ------

    Bonjour j'ai une boussole cmps03 avec laquelle j'essaye de recupérer l'angle par rapport au nord magnétique, j'utilise aussi un dspic 30f6014a et le protocole est l'i2c,
    Les signaux sur les ports SCA et SDL ont l'air bon mais le registre I2CRCV est desesperement vide.
    Voici le code deja "pondu" :

    setup_i2c
    Code:
    void setup_i2c(void)
    {
        IEC0bits.SI2CIE = 0;
        I2CCONbits.I2CEN = 0;	// disable I2C
        TRISG = TRISG & 0b1111111111110011; // set I2C pins as outputs
        LATGbits.LATG2 = 0; // clr the LAT bits
        LATGbits.LATG3 = 0;
        TRISG = TRISG | 0b0000000000001100; // set I2C pins as inputs
         I2CSTAT = 0b0000000000000000;
        kk = I2CRCV;
        I2CSTATbits.I2COV = 0; // clear overflow flag
        IFS0bits.SI2CIF = 0; // clear interrupt flag
        IEC0bits.SI2CIE = 1; // enable I2C interrupts
        I2CCON  = 0b1001001000000000; // enable I2C
    }
    et pour recupérer la boussole

    Code:
    while(1){
    StartI2C();	
    SlaveWriteI2C(0xC0);		
    I2CSTATbits.R_W=0;
    AckI2C();					//ACK
    SlaveWriteI2C(0x01);		
    AckI2C(); 					//ACK
    StartI2C();
    SlaveWriteI2C(0xC1);		
    I2CSTATbits.R_W=1;
    AckI2C(); 					//ACK
    bearing = MasterReadI2C();
    AckI2C(); 					//ACK
    StopI2C();
    DelayNmSec(20);
    }
    Je ne comprend pas bien non plus la différence entre les MasterWriteI2C et SlaveWriteI2C


    Merci de votre aide

    Benjamin

    -----

  2. #2
    polo974

    Re : Dspic30f --- I2c --- Cmps03

    Citation Envoyé par benlecachalot Voir le message
    ...
    Je ne comprend pas bien non plus la différence entre les MasterWriteI2C et SlaveWriteI2C

    Merci de votre aide
    Benjamin
    Il semblerait que tu mélanges les fonctions utiles au maitre (que tu veux être) et celles à l'esclave (que tu pourrais être). (sans arrière pensées sado/maso...)

    Si l'I2C t'es totalement étranger, lire (un peu partout, c'est un grand classique) quelques docs dessus.

    Si tu maitrises l'I2C (monomaitre) en général, le mieux est de choper l'exemple donné par microchip (page 200) pour commencer à y voir plus clair.
    D'après l'exemple (et ça se comprend), il faut attendre la fin de chaque opération (mais on peut le faire de façon plus ou moins intelligente...).

    Et surtout attendre l'ack que doit envoyer l'esclave!

Discussions similaires

  1. I2c
    Par Olfox dans le forum Électronique
    Réponses: 16
    Dernier message: 03/08/2007, 23h11
  2. Consommation I2C
    Par Toufinet dans le forum Électronique
    Réponses: 7
    Dernier message: 21/02/2007, 18h19
  3. I2c => Sck à 0
    Par Toufinet dans le forum Électronique
    Réponses: 13
    Dernier message: 09/02/2007, 20h50
  4. i2c
    Par invite83855357 dans le forum Électronique
    Réponses: 15
    Dernier message: 23/01/2007, 13h32
  5. I2c
    Par inviteacb3e291 dans le forum Électronique
    Réponses: 5
    Dernier message: 17/06/2005, 14h03
Découvrez nos comparatifs produits sur l'informatique et les technologies.