bonsoir
j'ai mit en oeuvre une liaison spi entre 2 pic 18f452, sa marche impec . Je voudrais y rajouter un interruption sur l'esclave et je n'y arrive pas voici le code:
merci d'avanceCode:#include <p18F452.h> #include <stdio.h> #include <delays.h> #include <spi.h> #pragma config WDT = OFF //////////////////////////////////////////////////////////// // DECLARATION // //////////////////////////////////////////////////////////// void main(void); void inter(void); unsigned char octet; //////////////////////////////////////////////////////////// // INTERRUPTION BASSE // //////////////////////////////////////////////////////////// #pragma code LowVector=0x18 void SPIInterrupt(void) { _asm GOTO inter _endasm } #pragma code #pragma interlow vect18 void inter() { octet = ReadSPI(); SSPBUF = octet; PIR1bits.SSPIF = 0; // _asm GOTO main _endasm } void main(void) { //////////////////////////////////////////////// ///////// INITIALISATION INTERRUPTION ////////// //////////////////////////////////////////////// INTCONbits.GIE = 1; //AUTORISATION INTERRUPTION GENERAL INTCONbits.PEIE = 1; //AUTORISATION INTERRUPTION PERIPHERIQUE PIE1bits.SSPIE = 1; //AUTORISATION INTERRUPTION SPI RCONbits.IPEN = 1; //AUTORISATION NIVEAU INTERRUPTION //////////////////////////////////////////////// ////////////// INITIALISATION SPI ////////////// //////////////////////////////////////////////// SSPSTATbits.CKE = 0; SSPCON1bits.SSPM0 = 0; //SLAVE MODE SSPCON1bits.SSPM1 = 0; //SLAVE MODE SSPCON1bits.SSPM2 = 1; //SLAVE MODE CS -> broche SS activé SSPCON1bits.SSPM3 = 0; //SLAVE MODE SSPCON1bits.CKP = 0; SSPCON1bits.SSPEN = 1; //ACTIVATION DU BUS SERIE SSPCON1bits.SSPOV= 0; SSPCON1bits.WCOL = 0; TRISCbits.TRISC4 = 1; // SDI en entrée TRISCbits.TRISC5 = 0; // SDO en sortie TRISCbits.TRISC3 = 1; // SCK en entrée slave mode on recupère l'horloge while(1); }
-----