Pic & i2c
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Pic & i2c



  1. #1
    invite54878a5a

    Pic & i2c


    ------

    Bonjour

    Je souhaites utiliser un pic 18f26k22 pour recevoir des données du bus i2c.
    Le bus provient d'une carte embeddian, avec un MCP23017 correctement piloté par ce même bus.
    J'ai du coup enlevé le MCP et mis le pic à la même adresse.
    Le programme fais tout simplement éteindre le PORTA quand il reçoit l'interruption.
    Sous proteus cela marche mais pas sur plaquelab, la led ne s'éteind jamais... J'ai cependant bien les données à l'oscillo


    Si vous auriez une idée ? merci d'avance

    Voila mon programme :

    Code:
    #include "p18f26k22.h"
    #include "i2c.h"
    #include "delays.h"
    #include <delays.h>
    #include <stdlib.h>
    #include <i2c.h>
    
    void ISR(void);
    void SSPISR(void);
    
    #pragma code H_vector=0x08
    void H_vector(void) { _asm goto ISR _endasm }
    #pragma code
    
    #pragma interrupt ISR
    void ISR(void) 
    {
        if (PIR1bits.SSPIF)
    	{ 
    		SSPISR();
            PIR1bits.SSPIF = 0; 
        }
    }
    
    // This is the actual SSP ISR
    void SSPISR(void) 
    {
    	PORTA = 0;
    	PORTBbits.RB1=1;
    }
    
    void main(void)
    {
    	TRISA = 0;
    	PORTA = 255;
    	TRISC = 255;
    	INTCONbits.GIEH = 0;
    	RCONbits.IPEN = 1;          // Enable interrupt priorities
    	IPR1bits.SSPIP = 1;         // Set SSP interrupt priority to high
    	PIR1bits.SSPIF = 0;  // Clear the interrupt flag
    	PIE1bits.SSPIE = 1;         // Enable SSP interrupt
    	INTCONbits.GIEH = 1;
    	
    	SSPADD = 0x20<<1;
    	SSPCON2 = 0b00000000;
    	SSPBUF = 0;
    	
    	IdleI2C();
    	OpenI2C(SLAVE_7 , SLEW_OFF);
    	IdleI2C();
    	while(1);
    }

    -----
    Dernière modification par JPL ; 22/05/2014 à 14h41. Motif: Ajout de la balise Code (#) pour garder l'indentation

  2. #2
    Gérard

    Re : Pic & i2c

    Tu dois configurer ANSELA.

  3. #3
    spown

    Re : Pic & i2c

    Bonjour/bonsoir,

    Si ton registres SPI est relié avec TRISC , les pins SCK =0, SDO = 0 et SDI =1.

  4. #4
    Gérard

    Re : Pic & i2c

    Citation Envoyé par spown Voir le message
    Bonjour/bonsoir,

    Si ton registres SPI est relié avec TRISC , les pins SCK =0, SDO = 0 et SDI =1.
    Le Mr utilise le bus I2C, soit RC3 (SCL1) et RC4 (SDA1) si MSSP1 est utilisé.

  5. A voir en vidéo sur Futura
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...