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

emulation i2c pour pic en C



  1. #1
    spilz

    emulation i2c pour pic en C


    ------

    bonjour à tous,

    suite à une discution sur un autre sujet sur ce forum, je cherche à utiliser l'i2c avec un pic qui ne l'a pas d'origine, pour cela je cherche un emulateur qui permettrait d'utiliser 2 broches pour communiquer en i2c

    je cherche donc un programme en C qui puisse etre utiliser avec le compilateur de ccs et ajouter l'utilisation de l'i2c

    -----

  2. Publicité
  3. #2
    FSE

    Re : emulation i2c pour pic en C

    Bonjour
    Dans le répertoire Drivers de CCS il y a une serie de "serial EEPROM Functions" dont au moins la première la 2401.C repose sur une communication via I2C. Cette fonction ne semble pas faire appel à un hardware spécifique A vérifier

  4. #3
    spilz

    Re : emulation i2c pour pic en C

    je l'ai vu mais je ne comprends pas bien comment ça fonctionne, je suis débutant

  5. #4
    spilz

    Re : emulation i2c pour pic en C

    cette fonction utilise directement le protocole i2c, il faut donc que le pic possede deja un bus i2c pour pouvoir s'en servir, hors moi ce que je cherche, c'est justement emuler un protocole i2c sur un pic qui n'a pas ce bus

  6. #5
    HULK28

    Re : emulation i2c pour pic en C

    Salut,

    l'avantage avec un hardware I2C embarqué dans le µC c'est que tu n'as pas à te soucier de gérer les mécanismes du protocole I2C, il te suffit d'appeler les routines dédiés à la lecture et à l'écriture pour E²PROM en mode I2C.
    Comme te le disais Jack dans l'autre topic que tu as ouvert, la gestion par soft de l'I2C nécessite sa bonne connaissance pour avoir de bons résultats.
    Il est donc plus commode de choisir un PIC avec I2C embarqué, ce qui te permet d'utiliser les E²PROM série allant de 1Kb à 1Mb au moins.
    Si ton appli ne nécessite pas beaucoup d'octets en E²PROM, tu peux aussi choisir un PIC avec E²PROM interne, c'est alors encore plus simple.
    Le génie est fait d'1 pour cent d'inspiration et de 99% pour cent de transpiration. Edison

  7. A voir en vidéo sur Futura
  8. #6
    spilz

    Re : emulation i2c pour pic en C

    je comprends bien mais il n'existe pas de pic12Fxxx avec bus i2c, je vais vous expliquer ce que je veux faire:

    je veux utiliser des pics tres on marché pour servire d'interface entre un recepteur et le pic principal, de sorte que celui-ci ne soit pas bloqué par l'attente du signal, le 12Fxxx recoit regulierement des infos et les stocke dans une eeprom (ou autre, je ne sais pas) et le pic principale va chercher l'info quand il en a besoin, ce qui lui permet d'avoir la donnée la plus récente

    mais si vous trouvez des pics avec horloge interne pas cher (1 à 2 €, voir 3) avec bus i2c et facilement trouvable en france, je suis preneur

    ou une autre approche pour réaliser ce que je veux faire

  9. Publicité
  10. #7
    HULK28

    Re : emulation i2c pour pic en C

    Salut,

    mon conseil:

    soit tu implantes les routines assembleur que tu trouveras sur le site MICROCHIP et qui sont fiables, soit tu t'inspires du lien suivant:

    http://www.piclist.com/techref/microchip/i2c-eeprom.htm

    Dans les 2 cas tu auras besoin d'un PIC avec un minimum de place pour y loger ce code malgré tout conséquent.
    Le génie est fait d'1 pour cent d'inspiration et de 99% pour cent de transpiration. Edison

  11. #8
    Invité

    Re : emulation i2c pour pic en C

    Citation Envoyé par spilz Voir le message
    je veux utiliser des pics tres on marché pour servire d'interface entre un recepteur et le pic principal, de sorte que celui-ci ne soit pas bloqué par l'attente du signal, le 12Fxxx recoit regulierement des infos et les stocke dans une eeprom (ou autre, je ne sais pas) et le pic principale va chercher l'info quand il en a besoin, ce qui lui permet d'avoir la donnée la plus récente
    Hello,

    quel est le volume des données à stocker ? il s'agit juste de conserver la dernière valeur ?

    ton PIC devra être master I²C pour dialoguer avec le périphérique et slave I²C pour dialoguer avec l'hôte

    pour être slave I²C il faut obligatoirement un MCU avec l'interface intégrée en hardware.
    l'autre liaison en master pourra être gérée en soft.

    A+,

    Bruno

  12. #9
    Jack

    Re : emulation i2c pour pic en C

    pour être slave I²C il faut obligatoirement un MCU avec l'interface intégrée en hardware.
    l
    Pour quelles raisons ?

    A+

  13. #10
    Invité

    Re : emulation i2c pour pic en C

    Hello,

    pour une seule raison : en mode slave un dispositif I²C est à la disposition d'un master, qui peut initier une condition de départ de transmission (non négociable) à n'importe quel moment.
    pour ne rater aucune transmission il faut donc que la gestion I²C du slave se fasse par hardware, afin que celui-ci prévienne le soft par interruption qu'une transmission démarre.

    A+,

    Bruno

  14. #11
    FSE

    Re : emulation i2c pour pic en C

    Bonsoir
    Réponse au Post #6
    Je viens de retrouver une commande de mémoire RAM via I2C utilisant un PIC628 qui ne possède rien de spécifiquement I2C
    Cette appli est basée sur les Routines écrites par Alain Reboux
    J'ai ensuite migré vers du C en utilisant le compilateur FED toujours avec un 628
    En plus de la mémoire I2C il y a un processeur stereo I2C, des 8574 I2C pour gérer des platine à boutons et un moteur pas a pas pour un potentiomètre motorisé + une sortie série pour 2 PIC afficheurs
    avec un 628 de qq Euros, pas un 648 qui a 4K de Mémoire

  15. #12
    Jack

    Re : emulation i2c pour pic en C

    pour une seule raison : en mode slave un dispositif I²C est à la disposition d'un master, qui peut initier une condition de départ de transmission (non négociable) à n'importe quel moment.
    pour ne rater aucune transmission il faut donc que la gestion I²C du slave se fasse par hardware, afin que celui-ci prévienne le soft par interruption qu'une transmission démarre.
    Tu ne réponds pas vraiment à ma question puisque tu disais dans un post précedent que l'interface devait être intégrée en hardware, ce qui signifie que le µC doit posséder des registres spécialisés I2C.

    C'est complètement différent d'une gestion par interruption qui ne nécessite pas forcément ces registres spécialisés.

    A+

  16. Publicité
  17. #13
    Invité

    Re : emulation i2c pour pic en C

    Citation Envoyé par Jack Voir le message
    Tu ne réponds pas vraiment à ma question puisque tu disais dans un post précedent que l'interface devait être intégrée en hardware, ce qui signifie que le µC doit posséder des registres spécialisés I2C.

    C'est complètement différent d'une gestion par interruption qui ne nécessite pas forcément ces registres spécialisés.

    A+
    Hello,

    la réponse à ta question "pour quelles raisons il faut une gestion HW pour le mode slave I²C" est que sans module I²C la gestion des signaux du bus par le PIC ne présentera aucune garantie de fiabilité : il suffit que le maitre commence à transmettre pendant que le PIC fait autre chose pour que la transmission échoue.

    la gestion HW du module I²C slave est associée a une interruption, mais pas n'importe laquelle :
    lorsque le module I²C du PIC est correctement configuré, le registre à décalage est rempli sans intervention logicielle et une interruption est émise lorsque l'adresse est reconnue.

    autrement dit, dans le cadre de ce topic, l'implémentation d'une interface de bufferisation I²C sans interface HW de gestion slave présente un risque de perte d'information.
    c'est peut-être déjà pour cette raison que l'opérateur pense qu'il a besoin d'un PIC supplémentaire pour buffériser, auquel cas la bufférisation ne sera d'aucun secours.

    A+,

    Bruno

  18. #14
    Jack

    Re : emulation i2c pour pic en C

    je comprends ce que tu veux dire, mais au vu de l'application, en déclenchant une interruption sur variation de SDA ou de SCL, il doit bien y avoir moyen de ne louper aucun bit de la trame.

    A+

  19. #15
    Invité

    Re : emulation i2c pour pic en C

    Citation Envoyé par Jack Voir le message
    je comprends ce que tu veux dire, mais au vu de l'application, en déclenchant une interruption sur variation de SDA ou de SCL, il doit bien y avoir moyen de ne louper aucun bit de la trame.

    A+
    Sans doute, mais je préfère conseiller à l'opérateur de choisir un MCU adapté, plutôt que de l'inciter à se lancer dans une longue bidouille pour un résultat hasardeux

    A+,

    Bruno

  20. #16
    Jack

    Re : emulation i2c pour pic en C

    On est bien d'accord, mais visiblement spilz n'a pas le choix.

    A+

  21. #17
    popoye

    Re : emulation i2c pour pic en C

    Citation Envoyé par ;738621
    Hello,

    pour une seule raison : en mode slave un dispositif I²C est à la disposition d'un master, qui peut initier une condition de départ de transmission (non négociable) à n'importe quel moment.
    pour ne rater aucune transmission il faut donc que la gestion I²C du slave se fasse par hardware, afin que celui-ci prévienne le soft par interruption qu'une transmission démarre.

    A+,

    Bruno
    pour ca il suffit d'utiliser le port B avec interruption, des qu'il recevra une info, une interruption sera generé tout comme avec un module I²C en hard. C'est largement faisable un I²C en soft, mais il est vrai qu'il est bien plus facile d'utiliser un PIC avec I²C intergré.

    Pour info, j'ai deja trouvé sur le net, un type qui a fait un USB en soft sur un 8051, alors l'I²C a coté, c'est du caca. Domage, j'ai plus l'adresse, mais si quelqun le trouve ca m'interresse....

    bonne cotinuation........

  22. #18
    herve108

    Re : emulation i2c pour pic en C

    Salut spilz,

    je voudrais savoir si tu as réussi, à faire ton émulation d'i2c esclave.
    Je suis actuellement en train d'essayer de faire la même chose sur un pic 16f627.

    J'ai déja des problèmes pour repérer le signal de départ (SDA passe à0 et SCL rest à 1). Alors récupérer l'adresse, renvoyer un Ack et récupérer les data... c'est pas gagné, merci pour ton aide!

  23. Publicité

Sur le même thème :

Discussions similaires

  1. Pic 18F452 et Bus I2C : Aide à l'acquisition
    Par APG dans le forum TPE / TIPE et autres travaux
    Réponses: 5
    Dernier message: 23/08/2010, 00h01
  2. PIC F876A et i2c
    Par noisyboxes dans le forum Électronique
    Réponses: 2
    Dernier message: 16/03/2007, 08h44
  3. I2c Pour Pic 16f84a
    Par ejhon6363 dans le forum Électronique
    Réponses: 1
    Dernier message: 27/09/2006, 00h14
  4. pic 16F877 et le protocole I2C
    Par anji dans le forum Électronique
    Réponses: 4
    Dernier message: 19/06/2006, 15h31
  5. Réponses: 3
    Dernier message: 01/11/2005, 23h45