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

Communication pic18F esclave



  1. #1
    nassim.ayadi

    Communication pic18F esclave


    ------

    Bonjour à tous,
    J'ai un projet qui consiste a communiquer en I2C entre deux ùcontroleurs.

    Le programme du ùcontroleur maitre marche trés bien et à été essayer avec des esclaves non programmables (horloge temps réelle par exemple).
    Je suis actuellement en train d'effectuer le programme pour un pic 18F2550 mis en esclave, pour l'instant j'essaie simplement de créer une interruption lorsque le pic voit que l'on communique avec lui en I2C. Seulement l'interruption ne fonctionne pas, j'ai fait des tests conditionnels sur les flags d'interruption et ils n'ont pas l'air de bouger. voici mon code, il y a surement une erreur que je n'ait pas vue (sa fait plusieurs jours que je fait des modifs et fait des recherches sur les forumsà.

    //******** C18 *********************
    #include <p18f2550.h>
    #include <stdlib.h>

    #pragma config WDT=OFF
    #pragma config LVP=OFF
    #pragma config MCLRE=OFF
    #pragma config DEBUG=OFF
    #pragma config FOSC=INTOSCIO_EC //ECPLLIO_EC to use with USB
    int i=0;

    void it_prioritaire(void) ;
    #pragma code address_it=0x08 //0x18 pour basse priorité
    void int_toto(void)
    {
    _asm GOTO it_prioritaire _endasm
    }
    #pragma code
    #pragma interrupt it_prioritaire
    void it_prioritaire(void)
    {
    PORTC=2;
    // positionnement du FLAG
    PIR1bits.SSPIF= 0;
    }


    void main(void)
    {
    // Initialisation
    TRISC = 0x00;
    PORTC = 0;
    TRISB = 0xFF; // PORTB en entrée
    INTCON=0b1100000; // autoriser les interruption (générales)
    PIE1=0b00001000; // Autoriser interruption MSSP
    IPR1bits.SSPIP=1; // Haute priorité
    IPR2bits.BCLIP=0; // BUS collision basse priorité
    PIE2 = 0; //desactivation des interruption bus collision
    SSPADD=0x44; // Adresse de l'esclave
    SSPCON1=0b00111110;
    SSPCON2=0b10000000;
    SSPSTATbits.SMP=0; // High-speed mode
    SSPSTATbits.CKE=0; // Mode I2C
    PIR1=0; // Reset Flag
    PIR2=0; // Reset Flag

    // traitement
    while(1)
    {

    }
    }

    Comme vous pouvez voir dans le programme, je lance l'interrution lorsque je recoi mon adresse et j'allume simplement une LED pour tester l'interruption, je ne traite pas encore la réponse à donner. Mais sa ne rentre jamais dans l'interrution.
    Lors d'une mesure de tram à l'oscilloscope, j'ai pu voir que la tram arrive bien au niveau du pic esclave.
    Le maitre est un ùcontroleur Atmel qui pilote un ecran LCD.

    Pour programmer j'utilise Mplab X, le compilateur C18 et le programeur Pic kit3.

    Merci de donner vos idée, il y a surement un truc que j'ai loupé.

    -----

  2. #2
    nassim.ayadi

    Re : Communication I2C pic18F esclave

    Finallement j'ai reussi à trouver l'erreur.
    En fait j'utilisais l'oscillateur interne du PIC, et je pense qu'il n'était pas assez rapide pour gerer l'I2C en mode Fast, du coup j'y ai mis un quartz.

    J'arrive bien à communiquer en I2C en vérifiant les flags (SSPIF et BF si je me souviens bien), dans la boucle while sa marche trés bien, mais si j'essaye de mettre sa dans une interrution sa ne marche pas.

    En fait je ne rentre jamais dans l'interruption, si des idée vous viennent.

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/02/2012, 11h28
  2. communication RF : PIC18F et transceiver Texas CC1101
    Par stv00 dans le forum Électronique
    Réponses: 3
    Dernier message: 24/03/2011, 12h04
  3. [PIC18 - Liaison SPI] - Envoi données Maitre > Esclave / Esclave vers Maitre
    Par jorg1n dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 12/01/2011, 16h45
  4. Problême Communication PIC Maitre Esclave
    Par Paulochon dans le forum Électronique
    Réponses: 6
    Dernier message: 28/10/2008, 11h58
  5. Communication RS485 half et full duplex et gestion maitre esclave
    Par bertouf42 dans le forum Électronique
    Réponses: 19
    Dernier message: 06/03/2008, 08h34
Découvrez nos comparatifs produits sur l'informatique et les technologies.