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

18f4550 i2c



  1. #1
    invite89f152fc

    18f4550 i2c


    ------

    bonjour tous le monde

    je souhaite communiquer en i2c avec mon pic . Mais a la sortie lorsque je regarde ma clock je vois un signal +5v.j ai mit des résistance de pull up de 4.7k.


    J'utilise un PIC 18f4550, MPLAB v8, un programmateur ICD 2 et la librairie i2c.h.

    je voudrai savoir si mon initialisation est correcte...

    void UserInit(void)
    {
    byte i;

    //Input/output pins
    tris_CS = 1; //Input, not used for I2C
    TRISBbits.TRISB0 = 1; //SDA
    TRISBbits.TRISB1 = 1; //SCL

    //Setup I2C registers
    I2C_xfer_done = FALSE;
    SSPADD = 0xC0; //I2C address of this micro
    PIE1bits.SSPIE = 0; //Turn off I2C/SPI interrupt
    PIR1bits.SSPIF = 0; //Clear any pending interrupt
    OpenI2C(SLAVE_7,SLEW_ON);
    PIE1bits.SSPIE = 1; //Turn on I2C interrupt

    //-------------------------
    // initialize variables
    //-------------------------
    for (i=0; i<BUF_SIZE; i++) // initialize input and output buffer to 0
    {
    inbuffer[i]=0;
    outbuffer[i]=0;
    }
    TimerCounter = 0xF0; //Initial value to start

    //Timer 0
    TMR0H = 0; //clear timer
    TMR0L = 0; //clear timer
    T0CONbits.PSA = 0; //Assign prescaler to Timer 0
    T0CONbits.T0PS2 = 1; //Setup prescaler
    T0CONbits.T0PS1 = 1; //Will time out every 51 us based on
    T0CONbits.T0PS0 = 1; //20 MHz Fosc
    T0CONbits.T0CS = 0; //Increment on instuction cycle

    //Enable I2C interrupts
    INTCONbits.PEIE = 1; //Turn on peripheral interrupts
    INTCONbits.GIE = 1; //Turn on global interrupts
    }



    MessagePosté le: Lun 28 Avr 2008, 08:07 Sujet du message: 18f4550 i2c Répondre en citant Editer/Supprimer ce message
    bonjour tous le monde

    je souhaite communiquer en i2c avec mon pic . Mais a la sortie lorsque je regarde ma clock je vois un signal +5v.j ai mit des résistance de pull up de 4.7k.

    je voudrai savoir si mon initialisation est correcte...

    Code:

    void UserInit(void)
    {
    byte i;

    //Input/output pins
    tris_CS = 1; //Input, not used for I2C
    TRISBbits.TRISB0 = 1; //SDA
    TRISBbits.TRISB1 = 1; //SCL

    //Setup I2C registers
    I2C_xfer_done = FALSE;
    SSPADD = 0xC0; //I2C address of this micro
    PIE1bits.SSPIE = 0; //Turn off I2C/SPI interrupt
    PIR1bits.SSPIF = 0; //Clear any pending interrupt
    OpenI2C(SLAVE_7,SLEW_ON);
    PIE1bits.SSPIE = 1; //Turn on I2C interrupt

    //-------------------------
    // initialize variables
    //-------------------------
    for (i=0; i<BUF_SIZE; i++) // initialize input and output buffer to 0
    {
    inbuffer[i]=0;
    outbuffer[i]=0;
    }
    TimerCounter = 0xF0; //Initial value to start

    //Timer 0
    TMR0H = 0; //clear timer
    TMR0L = 0; //clear timer
    T0CONbits.PSA = 0; //Assign prescaler to Timer 0
    T0CONbits.T0PS2 = 1; //Setup prescaler
    T0CONbits.T0PS1 = 1; //Will time out every 51 us based on
    T0CONbits.T0PS0 = 1; //20 MHz Fosc
    T0CONbits.T0CS = 0; //Increment on instuction cycle

    //Enable I2C interrupts
    INTCONbits.PEIE = 1; //Turn on peripheral interrupts
    INTCONbits.GIE = 1; //Turn on global interrupts
    }




    la fonction processio est appelé en boucle dans le Main

    Code:


    void ProcessIO(void)
    {
    StartI2C();
    WriteI2C(0xA0);

    WriteI2C(0xF0);
    StopI2C();

    }




    merci a vous .

    -----

  2. #2
    RISC

    Re : 18f4550 i2c

    Salut Coulox,

    Plusieurs liens qui pourront t'aider sur les PIC18 et aussi sur la liaison I2C :
    1/ Bigonoff = La Bible sur les PIC16/PIC18 en ASM: www.bigonoff.org
    2/ Les excellents cours + TP en C sur les PIC16/PIC18 de l'académie d'AIX-Marseille : http://www.microchipdirect.com/Produ...words=AC244002
    3/ Les exemples de code de Microchip : www.microchip.com/codeexamples

    a+

  3. #3
    invite89f152fc

    Re : 18f4550 i2c

    merci pour ta réponse mais je connaissais déjà les lien et le source de bigonoff sont la plus par en ASM et il utilise pas le pic 4550 ...
    et je sais utilisé le i2c.
    mon problème étant que lorsque je visualise avec un oscilo la sortie clock je vois un signal +5v ...
    je pense que mon problème est dans mon initialisation.. la tu regarder???

  4. #4
    RISC

    Re : 18f4550 i2c

    Salut,

    J'ai fait une erreur de lien dans mon précédent post que je corrige ci-après :

    2/ Les excellents cours + TP en C sur les PIC16/PIC18 de l'académie d'AIX-Marseille : http://www.aix-mrs.iufm.fr/formation...indexPIC_C.htm

    Si je me souviens bien il y a un exemple qui lit un capteur de température sur la carte PICDEM 2 PLUS en I2C

    a+

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

    Re : 18f4550 i2c

    merci c'est gentil mais moi aussi je sais utilisé google c'est pas pour etre méchant mais tu m aide pas trop la car des programme en i2c j en ai plein mais aucun qui est configuré pour le pic 18f4550...
    moi aussi je sais balancer des lien sur des forum c'est facile....

  7. #6
    invite89f152fc

    Re : 18f4550 i2c

    en ouvrant le port de l i2c je devrai voir la clk en sortie té bien d'acord avec moi?

Discussions similaires

  1. Transaction I2C entre deux pics 18f4550 (maître-esclave)
    Par lynal1 dans le forum Électronique
    Réponses: 9
    Dernier message: 12/04/2011, 14h17
  2. Pic 18f4550
    Par inviteb6ec96f1 dans le forum Électronique
    Réponses: 0
    Dernier message: 07/04/2008, 20h48
  3. PIC 18F4550 la galère...
    Par jt06 dans le forum Électronique
    Réponses: 9
    Dernier message: 21/10/2007, 21h42
  4. PIC 18f4550 usb
    Par invitefcdabab3 dans le forum Électronique
    Réponses: 4
    Dernier message: 05/04/2007, 14h58
  5. Pic 18f4550
    Par Gérard dans le forum Électronique
    Réponses: 8
    Dernier message: 06/06/2006, 23h42
Découvrez nos comparatifs produits sur l'informatique et les technologies.