Problème avec lien I2C entre PIC32 et PCF8574
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Problème avec lien I2C entre PIC32 et PCF8574



  1. #1
    jean.decuigniere

    Problème avec lien I2C entre PIC32 et PCF8574


    ------

    Bonjour à tous,

    Voici le soucis que je rencontre à l'heure actuelle:
    J'ai deux switchs branchés sur P0 et P1 de mon PCF8574 et de P2 à P7 ce sont des LEDs qui sont branchées.
    Mon lien I2C fonctionne mais dès que je fais passer mon switch P0 à 1 alors le programme se fige et reste bloqué....

    Voici mon code:

    main
    Code:
    int main() {
        int essai=0;
        InitModuleI2C();
    
        I2CEnable(MODULE_I2C1, TRUE);
    
        EcriturePCF(0x40, 0xC0);
    
        while(1)
        {
            Nop();
            essai = LecturePCF(0x40, 0x03);
            Nop();
    
            if((essai & 0x03) == 0x00)
                EcriturePCF(0x40, 0xFF);
            if((essai & 0x03) == 0x01)
                EcriturePCF(0x40, 0x7F);
            if((essai & 0x03) == 0x02)
                EcriturePCF(0x40, 0xBF);
            if((essai & 0x03) == 0x03)
                EcriturePCF(0x40, 0xDF);
    
        }
    
        return 0;
    }
    Mes fonctions read and write du PCF8574

    Code:
    void InitModuleI2C()
    {
        I2CSetFrequency(MODULE_I2C1, GetPeripheralClock(), I2C_CLOCK_FREQ);
    }
    
    int LecturePCF(BYTE adressPCF,BYTE configPCF)
    {
          int i2cByte = 0x00;
    
          I2CStart(MODULE_I2C1);
          while ( !(I2CGetStatus(MODULE_I2C1) & I2C_START) );
          I2CSendByte(MODULE_I2C1, (adressPCF + 0x01));
          while(!I2CTransmissionHasCompleted(MODULE_I2C1));
          if(I2CByteWasAcknowledged(MODULE_I2C1) &&
           I2CReceiverEnable(MODULE_I2C1, TRUE) != I2C_RECEIVE_OVERFLOW)
          {
                while(!I2CReceivedDataIsAvailable(MODULE_I2C1));
                I2CAcknowledgeByte (MODULE_I2C1, TRUE);
                i2cByte =  I2CGetByte(MODULE_I2C1);
                while( !I2CAcknowledgeHasCompleted(MODULE_I2C1));
          }
          else                           
           i2cByte = 0xff;
    
          I2CStop(MODULE_I2C1);
          DelayMs(10);
    
          EcriturePCF(adressPCF, (i2cByte | configPCF));
    
          I2CStart(MODULE_I2C1);
          while ( !(I2CGetStatus(MODULE_I2C1) & I2C_START) );
          I2CSendByte(MODULE_I2C1, (adressPCF + 0x01));
          while(!I2CTransmissionHasCompleted(MODULE_I2C1));
          if(I2CByteWasAcknowledged(MODULE_I2C1) &&
           I2CReceiverEnable(MODULE_I2C1, TRUE) != I2C_RECEIVE_OVERFLOW)
          {
                while(!I2CReceivedDataIsAvailable(MODULE_I2C1));//Le programme reste bloqué dans cette boucle lorsque seul switch P0 est actif
                I2CAcknowledgeByte (MODULE_I2C1, TRUE);
                i2cByte =  I2CGetByte(MODULE_I2C1); 
                while( !I2CAcknowledgeHasCompleted(MODULE_I2C1));
          }
          else                           
           i2cByte = 0xff;
          
          I2CStop(MODULE_I2C1);
          DelayMs(10);
    
          return i2cByte;
    }
    
    void EcriturePCF(BYTE adressPCF, BYTE data)
    {
        I2CStart(MODULE_I2C1);
        while ( !(I2CGetStatus(MODULE_I2C1) & I2C_START) );
        I2CSendByte(MODULE_I2C1, adressPCF);
        while(!I2CTransmissionHasCompleted(MODULE_I2C1));
        if(I2CByteWasAcknowledged(MODULE_I2C1))
        {
           I2CSendByte(MODULE_I2C1, data);
           while( !I2CAcknowledgeHasCompleted(MODULE_I2C1));
        }
        I2CStop(MODULE_I2C1);
        DelayMs(10);
    }
    Si quelqu'un a une idée, je suis preneur

    Cordialement,

    Jean

    -----

  2. #2
    jlcms

    Re : Problème avec lien I2C entre PIC32 et PCF8574

    Chute tension d'alim?

  3. #3
    DAUDET78

    Re : Problème avec lien I2C entre PIC32 et PCF8574

    Citation Envoyé par jean.decuigniere Voir le message
    mais dès que je fais passer mon switch P0 à 1 alors le programme se fige et reste bloqué....
    Schéma de branchement ?
    Il y a des PullDown ?

    Et si tu mets une 1K entre la broche P0 du PCF8574 et le switch. Tu envois un "1" . Il y a quelle tension sur P0 ? Si tu mesures moins de 1V, c'est que ton P0 est programmé en tant que sortie et pas en entrée.
    J'aime pas le Grec

  4. #4
    jean.decuigniere

    Re : Problème avec lien I2C entre PIC32 et PCF8574

    Bonjour et merci pour vos deux réponses déjà

    Alors ci-joint mon schéma de branchement (dsl il est fait à la va vite mais normalement c'est lisible )
    J'ai pris les mesures sur P0 et voici ce que j’obtiens:

    quand switch 1 est à l'état 0 : 0V
    quand switch 1 est à l'état 1 : 3.3V (la led s'allume)
    quand switch 1 repasse à 0 : 0V (la led reste allumée et le programme se bloque)

    J'ai aussi vu que je n'avais pas de chute de tension lors de mes manipulations.

    Cordialement,

    Jean

  5. A voir en vidéo sur Futura
  6. #5
    Tropique

    Re : Problème avec lien I2C entre PIC32 et PCF8574

    Bonjour,

    Merci de respecter les http://forums.futura-sciences.com/el...-sabonner.html et de représenter l'image en un format autre que le pdf, réservé aux documents complexes et multipages.
    Pas de complexes: je suis comme toi. Juste mieux.

  7. #6
    jean.decuigniere

    Re : Problème avec lien I2C entre PIC32 et PCF8574

    J'ai pris note mais lorsque je veux mettre un .jpeg il me met que mon fichier est invalide alors qu'il respecte les dimensions

    Cordialement,

    Jean

  8. #7
    jean.decuigniere

    Re : Problème avec lien I2C entre PIC32 et PCF8574

    Rien à faire je l'ai enregistré sous paint en .jpeg mais il me dis que c'est un fichier invalide...
    Dernière modification par jean.decuigniere ; 30/10/2012 à 10h10.

  9. #8
    Tropique

    Re : Problème avec lien I2C entre PIC32 et PCF8574

    Le fichier pdf est corrompu, il est inutilisable. Il faut soit le recréer sans erreur et le convertir, soit générer directement du gif ou autre.
    Pas de complexes: je suis comme toi. Juste mieux.

Discussions similaires

  1. I2C PIC32 MikroC Pro
    Par guifou dans le forum Électronique
    Réponses: 0
    Dernier message: 22/12/2011, 09h51
  2. probleme de lecture i2c entre pic18f2550 et accelerometre adxl345
    Par invite3f512146 dans le forum Électronique
    Réponses: 8
    Dernier message: 18/05/2011, 10h11
  3. Problème communication I2C entre RTC et uC
    Par invite5267eae1 dans le forum Électronique
    Réponses: 34
    Dernier message: 30/06/2010, 22h38
  4. PIC18F2550 - I2C - PCF8574 - LCD2x16
    Par Paintitblack dans le forum Électronique
    Réponses: 0
    Dernier message: 16/10/2009, 10h36
  5. Réponses: 13
    Dernier message: 05/12/2008, 09h50
Découvrez nos comparatifs produits sur l'informatique et les technologies.