Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 47

Prob I2C



  1. #1
    bs.amine

    Cool Prob I2C


    ------

    bonsoir tout le monde
    j'ai deja fait un code I2C avec tout les routines etc
    quand je simule le code sur ISIS je vois que les broches de ma mémoire changent d'état c'est a dire que le programme fonction mais le prob que je vois pas d'effet sur le contenu de la mémoire!!!!

    Code:
    i2cstart();
    i2csendbyte(0xA0);   //envoie adress
    i2cgetack();
    i2csendbyte(donnees);  //envoie donnee
    i2cgetack();
    i2cstop();
    le séquencement de l'envoie je l'ai trouve sur ce lien
    http://www.technologuepro.com/microc...erie_24c04.htm

    moi aussi j'utilise une 24C04

    1 er : est ce que mon séquencement est correct??
    2 eme: est ce qu'il y a autre façon de savoir est ce que les données ont été écrites sur la mémoire car celle du mode débogage me donne rien!!!

    et merci pour vous réponses

    -----

  2. Publicité
  3. 📣 Nouveau projet éditorial de Futura
    🔥🧠 Le Mag Futura est lancé, découvrez notre 1er magazine papier

    Une belle revue de plus de 200 pages et 4 dossiers scientifiques pour tout comprendre à la science qui fera le futur. Nous avons besoin de vous 🙏 pour nous aider à le lancer...

    👉 Je découvre le projet

    Quatre questions à explorer en 2022 :
    → Quels mystères nous cache encore la Lune 🌙 ?
    → Pourra-t-on bientôt tout guérir grâce aux gènes 👩‍⚕️?
    → Comment nourrir le monde sans le détruire 🌍 ?
    → L’intelligence artificielle peut-elle devenir vraiment intelligente 🤖 ?
  4. #2
    Jack
    Modérateur

    Re : Prob I2C

    Et que voudrais tu observer puisque tu ne fais aucune lecture pour vérifier si ta donnée a bien été écrite.

    De plus, en lisant n'importe quelle doc de 24C04, tu verras qu'il faut envoyer l'adresse à laquelle tu veux écrire dans la mémoire avant d'envoyer la moindre donnée.

    A+

  5. #3
    bs.amine

    Re : Prob I2C

    merci pour votre reponse
    d'apres le bout de code que j'ai mis
    que d'abord j'envoie une adresse "A0" avec ordre d'ecriture apres j'envoie la donnée.

    est ce que je dois specifier une autre adresse differente du celle de choix de circuit avec l'ordre d'ecriture (0B10100000 les quatre bits de poids fort sont fixes et les bits 3 et 2 sont mis a 0 car j'ai les E1 et E2 en masse le bit 1 je choisi le bank 0 et le bit 0 0car c'est ordre d'ecriture)
    est ce que je dois mettre une autre adress ou quoi ?
    sinon je veux plus d'explications et merci

  6. #4
    inoxxam

    Re : Prob I2C

    Salut,
    Attention il y a deux addresses:
    - L'addresse "physique de ta mémoire" que tu dois envoyer d'abord pour dire avec que composant tu veux communiquer
    - L'adresse mémoire, soit l'addresse au sein de ta mémoire à laquelle tu veux écrire.
    En gros ta transaction ce sera (j'ai pas mis les ACK et tout le tatoin):
    - Envoi addresse du composant ("Bonjour, je veux écrire sur ce composant")
    - Envoi addresse mémoire ("A cet endroit au sein de ce composant")
    - Envoi des données ("Et c'est ca que je veux écrire")
    (après tu peux envoyer une donnée ou une page, ca c'est toi qui gères).

    A tantot!

  7. A voir en vidéo sur Futura
  8. #5
    Jack
    Modérateur

    Re : Prob I2C

    +1

    Ne pas confondre l'adresse du circuit, ce qui est le cas de tout circuit relié au bus I2C avec l'adresse d'une case mémoire qui est spécifique aux mémoires.

    A+

  9. #6
    bs.amine

    Re : Prob I2C

    merci pour vous deux je vais tester mon programme et je vous tiens au courants

  10. Publicité
  11. #7
    bs.amine

    Question Re : Prob I2C

    voila mon code après modifications

    Code:
    i2cstart();
    i2csendbyte(0xA0);   //envoie adress physique
    //i2csendbyte(0xFE);
    i2cgetack();   
    i2csendbyte(compteur);// envoie adress de la case memoire ou je veux ecrire
    i2cgetack();
    i2csendbyte(compteur);  //envoie donnee
    i2cgetack();
    i2cstop();
    mais toujours pas de résultats sur ma mémoire I2C
    je suis sur isis je vois des changement d'état sur les entrées de ma mémoire et j'utilise le mode debug pour visualiser le contenu de la mémoire tjr il y a que des FF dans tout les adresses

  12. #8
    Jack
    Modérateur

    Re : Prob I2C

    puisque tu es en simulation, il ne devrait pas être difficile de nous montrer les trames sur SDA et SCL. On pourrait voir si le circuit répond par exemple.

    A+

  13. #9
    bs.amine

    Re : Prob I2C

    voila une capture d'ecran sur une erreur qui s'affiche lors de ma simulation
    la simulation se deroule mais avec ces messages la
    lien supprimé, voir le message suivant
    bonne nuit
    Dernière modification par Jack ; 27/03/2010 à 10h43.

  14. #10
    Jack
    Modérateur

    Re : Prob I2C

    Ton image est microscopique dans mon navigateur. de plus il est bon de respecter ces règles:
    http://forums.futura-sciences.com/el...-sabonner.html

    J'ai donc supprimé ton lien. Peux-tu reposter ton image en pièce jointe?
    En principe, plutôt qu'une copie d'écran, ton logiciel ne serait-il pas capable d'exporter sa simul en un fichier graphique?

    A+

  15. #11
    bs.amine

    Wink Re : Prob I2C

    désolé pour l'image
    mais elle cliquable après elle sera agrandie
    car dans plusieurs forum c'est la méthode utilise
    pas de prob je vais le mettre en pièce jointe
    pour la simulation j'arrive pas a avoir le graphe j'ai deja essayer hier
    Images attachées Images attachées  

  16. #12
    LABTOOL48

    Re : Prob I2C

    Citation Envoyé par bs.amine Voir le message
    voila une capture d'ecran sur une erreur qui s'affiche lors de ma simulation
    la simulation se deroule mais avec ces messages la

    bonne nuit
    1 adress 0xa0 ; en ecriteure
    2 adress 0x00 ; adress eeprom
    3 donnée 0x45; exemple que tu veux envoyer la donnée 45 a l'adress 0x00
    4 lire l'eeprom avec programmateur d'eeprom pour voir si l'adress 0x00 contient la donnée 45

  17. Publicité
  18. #13
    bs.amine

    Re : Prob I2C

    je suis sous simulation j'ai pas encore concevu mon circuit

    c'est deja fait ce truc la
    vous voyez
    Code:
    i2csendbyte(compteur);// envoie adress de la case memoire ou je veux ecrire
    i2cgetack();
    i2csendbyte(compteur);  //envoie donnee
    i2cgetack();
    car j'essaye d'envoyer l'adresse qui aussi la donne a envoye
    par exemple a l'adresse 2 j'envoie aussi 2 etc

  19. #14
    Jack
    Modérateur

    Re : Prob I2C

    Citation Envoyé par bs.amine Voir le message
    désolé pour l'image
    mais elle cliquable après elle sera agrandie
    car dans plusieurs forum c'est la méthode utilise
    pas de prob je vais le mettre en pièce jointe
    pour la simulation j'arrive pas a avoir le graphe j'ai deja essayer hier
    Visiblement, il s'agit de warning, donc la simul doit s'effectuer. Il n'y a pas moyen de voir SDA et SCL parce que sinon on ne peut pas avancer?

    A+

  20. #15
    bs.amine

    Re : Prob I2C

    j'ai essaye de brancher SDA et SCL sur un analyseur digital pour enregistrer les sequences de transfert mais je ne sais pas comment ca fonction
    j'arrive pas a enregistrer les sequences de transfert pour savoir d'ou viens le prob

    je suis sous ISIS proteus

  21. #16
    freepicbasic

    Re : Prob I2C

    As tu mis les résistance de rappel pullup sur SDA et SCL ?
    Et mis les fils d'adresse hard à la masse ?
    A+, pat

  22. #17
    Jack
    Modérateur

    Re : Prob I2C

    Citation Envoyé par freepicbasic Voir le message
    As tu mis les résistance de rappel pullup sur SDA et SCL ?
    Et mis les fils d'adresse hard à la masse ?
    +1
    Ce qui pourrait peut-être expliquer les warnings

    Le plus simple serait de nous montrer le schéma.

    A+

  23. #18
    bs.amine

    Question Re : Prob I2C

    oui bien sur j'ai fait le pull up avec les autres au gnd
    et voila la connexion de mon circuit
    Images attachées Images attachées  

  24. Publicité
  25. #19
    freepicbasic

    Re : Prob I2C

    Il faut positionner l'adresse avec un write
    puis lire avec un read

    je suppose que cette fonction existe
    i2creadbyte();

    i2cstart();
    i2csendbyte(0xA0); //envoie adress
    i2cgetack();
    i2csendbyte(donnees); //envoie donnee
    i2cgetack();
    i2cstop(); // facultatif...
    i2cstart();
    i2csendbyte(0xA1); //mode Read
    i2cgetack();
    donnees = i2creadbyte(); //lit la donnee
    i2cstop();
    A+, pat

  26. #20
    bs.amine

    Re : Prob I2C

    ok je vais tester ca apres

  27. #21
    freepicbasic

    Re : Prob I2C

    je n'ai pas corrigé le commentaire mais il envoie l'adresse pas une donnée
    2cstart();
    i2csendbyte(0xA0); //envoie adress
    i2cgetack();
    i2csendbyte(adress); //envoie adress
    pour un write;

    2cstart();
    i2csendbyte(0xA0); //envoie adress
    i2cgetack();
    i2csendbyte(adress); //envoie adress
    i2csendbyte(donnees); //envoie donnee
    A+, pat

  28. #22
    bs.amine

    Wink Re : Prob I2C

    le probleme reste encore
    le prob est dans l'envoie
    car la lecture j'ai verifie car apres la lecture j'ai trouve le contenu initiale de ma mémoire.

    est ce que je poste mon code complet ???
    les routines utilises sont dans la piece jointe

    bien sur je l'ai adapte a mon code

    est ce que vous avez vérifier le câblage de ma mémoire dans le poste précédant

    et voila mon séquencement

    Code:
    i2cstart();
    i2csendbyte(0xA0);   //envoie adress physique
    i2cgetack();   
    i2csendbyte(compteur);// envoie adress de la case memoire ou je veux ecrire
    i2csendbyte(compteur);  //envoie donnee
    i2cgetack();
    i2cstop();
    
    i2cstart();
    i2csendbyte(0xA1); //mode Read
    i2cgetack();
    sortie=i2cgetbyte();//lit la donnee
    
    i2cstop();
    Fichiers attachés Fichiers attachés

  29. #23
    Jack
    Modérateur

    Re : Prob I2C

    Code:
    i2csendbyte(compteur);// envoie adress de la case memoire ou je veux ecrire
    i2csendbyte(compteur);  //envoie donnee
    Il ne manque pas un getAck entre les 2?

  30. #24
    bs.amine

    Re : Prob I2C

    c'est pas oblligatoire je pense
    mais je vais tester ok

  31. Publicité
  32. #25
    bs.amine

    Wink Re : Prob I2C

    toujours rien
    ma mémoire arrive a détecter le start condition et le stop condition
    Images attachées Images attachées  

  33. #26
    Jack
    Modérateur

    Re : Prob I2C

    Le ack correspond à l'émission par le maitre d'un 9ème bit d'horloge. Si tu ne le fais pas, il va donc manquer une impulsion d'horloge et tout va alors être désynchronisé après.
    Regarde la doc, tout est expliqué .

    A+

  34. #27
    freepicbasic

    Re : Prob I2C

    Citation Envoyé par Jack Voir le message
    Code:
    i2csendbyte(compteur);// envoie adress de la case memoire ou je veux ecrire
    i2csendbyte(compteur);  //envoie donnee
    Il ne manque pas un getAck entre les 2?
    oui effectivement !
    un oubli

    mais on peut aussi faire un coup de clock sans le contrôler.
    comme on veut
    A+, pat

  35. #28
    bs.amine

    Re : Prob I2C

    teste avec l'ack
    Code:
    i2cstart();
    i2csendbyte(0xA0);   //envoie adress physique
    i2cgetack();   
    i2csendbyte(compteur);// envoie adress de la case memoire ou je veux ecrire
    i2csendbyte(compteur);  //envoie donnee
    i2cgetack();
    i2cstop();
    
    i2cstart();
    i2csendbyte(0xA1); //mode Read
    i2cgetack();
    sortie=i2cgetbyte();//lit la donnee
    
    i2cstop();
    est rien tjr
    dans mon poste precedant j'ai poste une image qui montre que ma memoire detecte le START et le STOP condition
    mais tjr rien

  36. #29
    bs.amine

    Question Re : Prob I2C

    teste avec l'ack
    Code:
    i2cstart();
    i2csendbyte(0xA0);   //envoie adress physique
    i2cgetack();   
    i2csendbyte(compteur);// envoie adress de la case memoire ou je veux ecrire
    i2csendbyte(compteur);  //envoie donnee
    i2cgetack();
    i2cstop();
    
    i2cstart();
    i2csendbyte(0xA1); //mode Read
    i2cgetack();
    sortie=i2cgetbyte();//lit la donnee
    
    i2cstop();
    est rien tjr
    dans mon poste precedant j'ai poste une image qui montre que ma memoire detecte le START et le STOP condition
    mais tjr rien

  37. #30
    freepicbasic

    Re : Prob I2C

    Il faut ajouter l'ack qui manque.

    Mais je ne sais pas ce que doit afficher le simulateur.

    i2cstart();
    i2csendbyte(0xA0); //envoie adress physique
    i2cgetack();
    i2csendbyte(compteur);// envoie adress de la case memoire ou je veux ecrire
    i2cgetack();
    i2csendbyte(données); //envoie donnee
    i2cgetack();
    i2cstop();

    i2cstart();
    i2csendbyte(0xA1); //mode Read
    i2cgetack();
    sortie=i2cgetbyte();//lit la donnee
    i2cstop();
    A+, pat

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. Prob mikroC I2C et programme
    Par lovechoco dans le forum Électronique
    Réponses: 0
    Dernier message: 02/11/2009, 19h53
  2. Spi i2c
    Par DonGonis38 dans le forum Électronique
    Réponses: 0
    Dernier message: 15/05/2009, 14h05
  3. I2c
    Par Olfox dans le forum Électronique
    Réponses: 16
    Dernier message: 04/08/2007, 00h11
  4. i2c
    Par khalid76 dans le forum Électronique
    Réponses: 15
    Dernier message: 23/01/2007, 14h32
  5. I2c
    Par annece dans le forum Électronique
    Réponses: 5
    Dernier message: 17/06/2005, 15h03
Découvrez nos comparatifs produits sur l'informatique et les technologies.