Récupération de trame par interruption - PIC18F6393
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Récupération de trame par interruption - PIC18F6393



  1. #1
    invite881e81b4

    Récupération de trame par interruption - PIC18F6393


    ------

    Bonjour à tous,
    Je suis actuellement en stage en DUT GEII et dans ce cadre, je commande une caméra Sony en utilisant le module USART du PIC18F6393. Lui envoyer des instructions ne pose pas de problèmes, cependant ce que je veux désormais, c'est qu'elle puisse me répondre. J'ai donc essayé de passer par une réception par interruption et c'est là que sa se complique ! J'utilise comme compilateur MPlab IDE v8.76 et lorsque j'utilise #pragma code etc.. j'ai des erreurs : pragma "code" inconnu ; pragma "0x08" inconnu. De ce que j'ai lu sur des problèmes d'interruptions, il faut utiliser #pragma, et donc j'aimerais savoir si quelqu'un a déjà eu le même soucis ou aurait des idées pour utiliser les interruptions sans #pragma ?
    Ma dernière fonction d'interruption essayer est la suivante :
    #pragma code isr = 0x08
    #pragma interrupt isr
    void isr(void)
    {
    unsigned char lecture[4] = "";
    int i, j;

    if(RC1IF == 1){
    for(i=0;i<4;i++)
    lecture[i]=RCREG1;
    for(j=0;j<4;j++)
    USARTWriteByte(lecture[j], 2); //Renvoi de lecture vers le PC par RS232
    }
    if(OERR == 1){ // contrôle d'une erreur d'overrun
    CREN=0;
    CREN=1; // reprise de la réception
    }
    }

    avec dans mon initialisation :
    RC1IE=1;
    PEIE=1;
    GIE=1;

    -----

  2. #2
    paulfjujo

    Re : Récupération de trame par interruption - PIC18F6393

    bonjour,


    en C18 cela donnerait

    Code:
    // ---- init  interruptions ------------------------
    // Serial Interrupt
    #pragma code highvector=0x0008
    void interrupt_at_high_vector(void)
    {
    _asm   goto Serial_ISR   _endasm
    }
    #pragma code
    
    #pragma interrupt Serial_ISR
    void Serial_ISR(void)				// reception d'une interruption
    {
        //char c;
    //==== UART interrupt ===========
    if(PIR1bits.RC1IF==1) // si une interruption arrive
    {
        c =Read1USART(); // le lire => RAZ  RCIF
    
         if(RCSTA1bits.FERR==1 )
       {
         RCSTA1bits.SPEN = 0 ;
         Flags.Drapeaux.FrameErr=1;
         CptFE++;
         RCSTA1bits.SPEN= 1 ;
         }
         else
         Flags.Drapeaux.FrameErr=0;
    
       if (RCSTA1bits.OERR==1)    // voir parag 16.1.26 p273
       {
           RCSTA1bits.CREN = 0 ;
           Flags.Drapeaux.Over=1;
           RCSTA1bits.CREN = 1 ;
           CptFO++;
           }
          else
          Flags.Drapeaux.Over=0;
    
       while( Busy1USART()) ; // par sécurite
       if (PORTBbits.RB1==0) Write1USART(c); // echo
    	*ptecr++ = c;
    	if (ptecr >= &buffer[SIZE]) ptecr = buffer;
    	}
    
    }
    à adapter !
    Dernière modification par paulfjujo ; 03/06/2014 à 14h31.

  3. #3
    RISC

    Re : Récupération de trame par interruption - PIC18F6393

    Salut,

    Ta version de MPLAB (v8.76) est très ancienne...
    MPLAB X a remplacé MPLAB depuis 3,5 ans... et c'est plus souple, surtout au niveau de l'éditeur ;=)
    NB : MPLAB X a besoin de l'ICD3 ou du pickit3 pour fonctionner

    Quel compilateur utilises-tu (C18, XC8, Mikroelektronika, CCS ?)

    a+

  4. #4
    invite881e81b4

    Re : Récupération de trame par interruption - PIC18F6393

    Merci pour vos réponses rapides.
    paulfjujo : mon problème est justement pour l'adapter puisque #pragma ou _asm n'est pas compris lors de la compilation.
    RISC : je vais voir s'il est possible de changer de version de MPLAB mais cela nécessite PICkit 3 or j'utilise le PICkit 2 actuellement et il me reste que 2 semaines de stage donc je ne sais pas si l'entreprise voudra bien l'acheter. Pour ce qui est du compilateur, j'utilise HI-TECH ANSI C Compiler v9.66.

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Trame RS485 vers trame Modbus
    Par inviteeac1b2f9 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 11
    Dernier message: 06/11/2013, 15h48
  2. Récupération d'une trame de 39bits
    Par invite556b3e30 dans le forum Électronique
    Réponses: 7
    Dernier message: 09/05/2012, 18h35
  3. PIC : interruption externe et interruption on change ?
    Par jlg_47 dans le forum Électronique
    Réponses: 10
    Dernier message: 09/04/2012, 12h41
  4. trame i2c
    Par invite91a552e4 dans le forum Électronique
    Réponses: 19
    Dernier message: 26/03/2010, 09h40
  5. trame gps
    Par nanard dans le forum Électronique
    Réponses: 0
    Dernier message: 30/06/2004, 09h17
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...