I2C .. c'est reparti ...
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

I2C .. c'est reparti ...



  1. #1
    Toufinet

    I2C .. c'est reparti ...


    ------

    Bonjour à tous,

    Voilà, c'est reparti pour une tournée de déboggage d'I2C ! Par ici les bierres !

    Bon, plus sérieusement, j'ai pas cherché à me compliquer la vie, j'ai fait un copié/collé du code de bigonoff ( cf part 2 )

    Lorsque je simule, je look le registre PORTC ( les bits 3 et 4 pour SDA et SCL ).
    La séquence I2C commence par un START ( ça vous surprend hein ! ).
    Je devrais donc voir bouger les bits 3 et 4 du port C, mais il n'en est rien.

    Une chose que je trouve un peu étrange, c'est que bigonoff nous indique de mettre TRISC 3,4 en entrée ( BSF TRISC,3 ; BSF TRISC,4 ).
    Hors, en tant que master, ça devrait être des sorties non ? Sur ce point, j'ai regardé la doc car en général ils disent comment initialiser un module, mais là, rien .

    Donc en fait, mon VRAI problème, c'est que je ne sais pas comment débogger ça ... quel registre regarder ? quand ? etc ...

    Voilà, si vous avez des idées, n'hésitez pas !

    PS : pour l'instant je suis encore en simulation, j'ai appris par expérience qu'il était strictement inutile de tenter en réel tant que la simu ne fonctionnait pas

    Edit : PIC16F882 pour les curieux .. mais je pense pas que ça soit utile ici ^^

    -----

  2. #2
    Toufinet

    Re : I2C .. c'est reparti ...

    Bon, après réflexion, je commence à me demander si l'I2C est simulable ...

    Je m'explique :
    On a RC3 et RC4 en inputs, donc par conséquent, générer un start bit ( passage de 1 à 0 ) devient difficile, d'autant plus que, si on met dans les stimuli RC3 et RC4 à 1, le simulateur ***pourrait*** ne pas les mettre à 0 à cause du fait que non-seulement RC3 et RC4 sont configuré en entrée, et en plus parceque dans les stimuli, on ne peut pas expliciter le fait qu'on met RC3 et RC4 à 1 via une résistance de pull-up ...

    Je ne sais pas si je me suis bien fait comprendre dans ce message, donc dites-moi ce que vous en pensez .. peut-être que je fais fausse-route
    Donc en gros, soit le simulateur n'est pas suffisament bien développé pour pouvoir simuler l'I2C, soit il y a un réel problème dans mon programme.

    Merci

  3. #3
    DavidDB

    Re : I2C .. c'est reparti ...

    Salut,

    I2C soft ou Hard???

    David.

  4. #4
    Toufinet

    Re : I2C .. c'est reparti ...

    I2C hard .

    On m'a dit sur le forum de microchip, que c'était en effet pas simulable.

    Bref, me voici maintenant dans le monde réel , toujours autant semé d'embuches

    Alors voilà, donc mon PIC16F882 en master, et un capteur de température, le TCN75A.
    Problème : lors de la configuration du TCN75A, je reçoit le 1ier ACK, mais pas le 2ième ...

    Code:
        CALL    I2C_start
        CALL    I2C_address_W
        CALL    I2C_check; <- first ACK sent by slave, and seems to be received
        MOVLW    TCN75A_conf_register
        MOVWF    OCTET
        CALL    I2C_send
        CALL    I2C_check; <- second ACK sent by slave, and doesn't seem to be received
    En mode debug dans MPLAB, au bout de X secondes d'attente, je click sur "stop", et le PIC se trouve dans le second I2C_check, en attente du 2nd ACK ...
    Code:
    I2C_check
        CALL    I2C_idle
        bank1
    I2C_check2    BTFSC    SSPCON2,ACKSTAT
        GOTO    I2C_check2
        RETURN
    Il reste dans la boucle "I2C_check2"

    Je comprend pas pourquoi je recevrais le 1ier ack, et pas le 2ième ...

    une idée ?

    PS : résistances de PULL-UP de 1kohm, FSCL environ 100kHz

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

    Re : I2C .. c'est reparti ...

    Salut,

    A mon avis, tu as simplement une erreur de BANK au vu de ton code...
    Es-tu certain que la variable "OCTET" est accèssible depuis la BANK1???

    Une chose que je trouve un peu étrange, c'est que bigonoff nous indique de mettre TRISC 3,4 en entrée
    C'est normal, car en hardware l'I2C ne travaille que sur la direction du PORT pour émettre (il change simplement l'I/O en sortie/entrée pour emettre sur le bus)

    David.

  7. #6
    Toufinet

    Re : I2C .. c'est reparti ...

    Bien vu pour la banque, c'est sans doute ça ( il me semblait bien avoir déjà rencontré exactement le même problème ! )
    Je verrais ça ce week-end , merci

Discussions similaires

  1. Pression d'un chargement réparti !
    Par invite7f60f800 dans le forum Physique
    Réponses: 29
    Dernier message: 22/11/2007, 01h40
  2. Le 18 juin, c'est reparti pour un tour !
    Par VLe dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 60
    Dernier message: 22/06/2007, 15h21
Découvrez nos comparatifs produits sur l'informatique et les technologies.