Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Problème de bus I2C



  1. #1
    Mikelamenace

    Problème de bus I2C


    ------

    Bonjour,

    Je tente de programmer un petit robot (je débute, mais est quelques notions). J'utilise pour cela une carte MD22 (double pont en H) en mode I2C.

    Je fais mes premiers essais à l'aide d'une carte easypic 5 sur un 18F452.

    J'ai monté un afficheur 2 lignes pour faire un peu de diagnostic.

    Pour tester mon bus, j'ai décidé d'implémenter un scruteur qui appelle chaque esclave et qui me compte le nombre de réponse.

    Simplement, voilà, mon bus, n'a pas l'air de répondre. J'ai mis des résistances de Pull up sur mes bornes RC3 et RC4 et j'ai testé à l'ohmètre que mes SDA et SCL n'étaient pas inversé.

    Le programme passe l'init, mais plante lors de "I2C_start".

    Avez-vous, une idée des choses à regarder pour le faire fonctionner ?

    Merci

    Mike

    -----

  2. #2
    Mikelamenace

    Re : Problème de bus I2C

    Hello,

    En rajoutant dans mon code des "I2C_is_idle", cela fonctionne. Je pense que le bus fonctionne et que le problème finalement vient de mon code.

    En effet, quand je mets la boucle de test (i2C_wr(boucle)=0) en rem, mon afficheur scrute toutes les valeurs. Dès que je l'enlève le rem, il se bloque à 2.

    Avez-vous, une idée ? Y a t'il une config à renseigner pour indiquer un temps maximum d'essai ?

    Tchao,

    Mike

    sub procedure scan_I2c()
    Dim boucle, retour as byte
    Dim txt as char[3]

    LCD_cmd(lcd_clear)
    LCD_out(1,1,"Adresse testee:")

    retour = 0

    for boucle = 2 to 254 step 2
    bytetostr(boucle,txt)
    Lcd_out(2,1,txt)

    I2C_Is_Idle
    I2C_Start
    I2C_Is_Idle
    if I2C_Wr(boucle) = 0 then ' si un circuit a répondu
    retour=retour+1 ' incrémente de 1 le nombre de réponse
    end if
    I2C_Stop
    next boucle


    end sub

  3. #3
    invite03481543

    Re : Problème de bus I2C

    Bonsoir,

    en I2C pour pouvoir "transmettre" ou "écouter" il faut que le bus soit libre.
    Pour cela il faut donc se placer et attendre la libération du bus.

    En C on fait:

    Code:
    while (I2C_Is_Iddle == 0) // on attend que le bus soit libre
    I2c_start();
    ...
    Tu peux également placer une temporisation qui fera sortir du while afin de ne pas rester bloqué en attente en cas de problème sur le bus.

  4. #4
    Mikelamenace

    Re : Problème de bus I2C

    Bonjour,

    Merci pour votre réponse. En fait, je ne suis pas en multi maitre, donc les fonctions Idle ne servent pas à grand chose. (Effectivement, je dois bien les controler comme vous m'avez dit)

    Pour le moment, mes investigations sont les suivantes :

    I2C_Init semble fonctionner
    I2C_start semble fonctionner
    I2C_stop semble fonctionner

    Par contre, j'ai un plantage dès que j'ai écrit une instruction du style

    I2C_wr(adresse)

    Je me demande d'ou cela peut venir. Le bus est trop rapide pour ma carte ? Est-ce que je dois configurer des fuses ?

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

    Re : Problème de bus I2C

    Pardon, j'ai envoyé sans finir mon message.

    Merci pour votre aide.

    Tchao,

    Mike

  7. #6
    Mikelamenace

    Re : Problème de bus I2C

    Bonjour,

    J'avance sur mes recherches. Lorsque je débranche mes esclaves de la partie electronique de la carte easypic, le problème est indentique. Je pense que le problème est bien un problème de configuration du pic.

    Tchao,

    Mike

  8. #7
    Mikelamenace

    Re : Problème de bus I2C

    J'ai trouvé.

    C’est parce que j’avais déclaré le port C en sortie. Et comme l’I2C utilise les pins C3 et C4, il y avait conflit.

    Tchao,

    Mike

Discussions similaires

  1. bus I2C
    Par Maje dans le forum Électronique
    Réponses: 2
    Dernier message: 29/06/2008, 23h28
  2. I2C : bus collision
    Par nusnus dans le forum Électronique
    Réponses: 15
    Dernier message: 26/10/2007, 10h42
  3. Electronique : bus I2C
    Par Mr. Ledoux dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 10/10/2007, 10h37
  4. Bus I2C
    Par Eleomir dans le forum Électronique
    Réponses: 15
    Dernier message: 15/04/2007, 10h58
  5. Bus I2c
    Par chrichri51 dans le forum Électronique
    Réponses: 6
    Dernier message: 30/10/2005, 13h53
Découvrez nos comparatifs produits sur l'informatique et les technologies.