I2c pic18f2455
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

I2c pic18f2455



  1. #1
    invite7f65a815

    I2c pic18f2455


    ------

    Bonjour à tous,
    Je viens poster ici car je suis désespéré. En effet, je souhaite réaliser une liaison I2C entre un PIC18F2455 et une boussole électronique. Cependant depuis plusieurs semaines je cherche sans cesse sur différents sites (microchip et anglophone entre autres) mais rien a faire. Selon moi mon code est bon et mon compilateur (MCC18) compile parfaitement, par contre je ne récupère rien sur mes ports SDA et SCL (alors que je devrais au moins récupérer une clock même si la communication ne s'établie pas). Je ne demande pas a ce qu'on corrige mon code, sans aucune prétention, je ne pense pas qu'il y ait des erreur de syntaxe seulement des oublis de config ou autre chose. Je vous remercie d'avance.


    code.c :


    /* Programme C pour PIC 18F2455 */
    /* Compilateur MCC18 */

    #include <p18f2455.h>
    #include "fonctions.h"
    #include <i2c.h>


    #pragma config WDT = OFF // Wachtdog disable
    #pragma config FOSC = INTOSC_XT // activation de l'oscillateur interne
    #pragma config PBADEN = OFF // port B en I/O numériques
    #pragma config MCLRE = OFF // on n'utilise pas MCLR


    #pragma const config FCMENB = OFF //Fail Safe Clock Monitor Disabled
    #pragma const config IESOB = OFF //Internal External Osc. Switch Disabled
    #pragma config PWRT = OFF //Power Up Timer Disabled
    #pragma const config BOR = BOHW //Brown Out Reset Enabled in HW, SBOREN disabled
    #pragma config DEBUG = OFF //DEBUG Disabled




    void main(void) {

    unsigned char data; //I2C


    //------------------Configuration Clock ----------------------------------


    T2CONbits.T2CKPS1=1; //Prescaler du timer2 mis à x16
    T2CONbits.T2CKPS0=1;
    OSCCON = 0x42; // configuration de l'oscillateur

    TRISBbits.TRISB0 = 1; //Initialisation I2C
    TRISBbits.TRISB1 = 1; //Initialisation I2C

    ADCON1=0x06; //Désactiver l'acquisition analogique du port B


    //------------------Configuration clock I2C ----------------------------------

    SSPADD = 0x02; //clock = Fosc/(4*(SSPADD+1)). (ICI 100KHz)
    //SSPADD = ((Fosc/clock)/4)-1


    while(1){

    OpenI2C(MASTER,SLEW_OFF); //Overture de l'I2C en master mode
    data=ReadBoussole();

    PORTA=data;


    }

    }



    fonctions.c:


    #include <p18f2455.h>
    #include "fonctions.h"
    #include "i2c.h"

    unsigned char ReadBoussole()
    {
    unsigned char bRet = 0x00;
    IdleI2C(); //Attente du bus OK
    StartI2C(); //Envoi de message de début
    IdleI2C(); //Attente de la disponibilité du bus
    WriteI2C(0xC1); //Envoi de l'adress
    IdleI2C(); //Attente de la disponibilité du bus
    WriteI2C(0x01); //Envoi du registre a lire
    IdleI2C();
    RestartI2C();
    WriteI2C(0xC1);
    if (SSPCON2bits.ACKSTAT) //Si AckStat == 1, on n'a pas reçu d'acquittement
    {
    StopI2C(); //Envoi de la condition de stop
    return bRet;
    }
    bRet = ReadI2C(); //Lecture I2C
    NotAckI2C(); //Pas d'acquittement car on lit qu'un seul caractère
    IdleI2C();
    StopI2C(); //Envoi du stop
    return bRet; //Retour de la valeur lue
    }

    -----

  2. #2
    RISC

    Re : I2c pic18f2455

    Salut,

    As-tu regardé tes signaux à l'oscilloscope ?
    Peux-tu faire voir ton schéma électronique ?

    Il existe des centaines de projets sur internet utilisant les PIC18 et l'I2C (notamment avec des capteurs de température).

    Regarde les cours sur ce site : http://www.aix-mrs.iufm.fr/formation...indexPIC_C.htm

    a+

  3. #3
    invite7f65a815

    Re : I2c pic18f2455

    Merci d'avoir répondu aussi rapidement RISC, cependant je n'ai pas de circuit électronique a te proposer, je peux seulement te dire que je visualise mes signaux sur la plaque de developpement (PICDEM 2+) elle même ou sur une plaque a trous sur laquelle il y a 2 condo de découplage (1 pour l'alim et un pour le reset) ainsi que la liaison avec la boussole. (on a même essayé de mettre 2 resistances PULL UP de 1,8 kOhms)
    Je sais que mon PIC fonctionne, j'ai deja testé mes PWM et mes CAN sur plaque à trous.
    De plus merci pour le lien, malheureusemnet j'ai deja visité ce site de fond en comble. Je vais continuer à chercher en attendant.

Discussions similaires

  1. bus I2C
    Par inviteedcf41c6 dans le forum Électronique
    Réponses: 2
    Dernier message: 30/06/2008, 00h28
  2. question i2c
    Par invite6ad066c7 dans le forum Électronique
    Réponses: 5
    Dernier message: 15/06/2008, 16h27
  3. I2c
    Par invite8ee4d94b dans le forum Électronique
    Réponses: 16
    Dernier message: 04/08/2007, 00h11
  4. i2c
    Par invite83855357 dans le forum Électronique
    Réponses: 15
    Dernier message: 23/01/2007, 14h32
  5. I2c
    Par inviteacb3e291 dans le forum Électronique
    Réponses: 5
    Dernier message: 17/06/2005, 15h03
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...