Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

commprendre la fonction d'interrption pour l'Emission/Reception d'un caractère



  1. #1
    hichooo1991

    commprendre la fonction d'interrption pour l'Emission/Reception d'un caractère


    ------

    salutation
    j suis entrain de travailler sur la communication entre deux cartes STM32F4-DISCOVERY lors de la création de mon programme je suis censé utiliser la fonction d’interruption pour réaliser l'opération emission/reception mais j'arrive pas a bien comprendre cette fonction j'espere bien que vous m'aider a la comprendre ces différentes instructions
    merci bien d'avance
    Code:
    void USART3_IRQHandler(void) 
     { // RX IRQ part 
    	 char *OutString ;
    	 if (USART3->SR & USART_SR_RXNE) { // if RXNE flag in SR is on then 
    		 int RXch = USART3->DR; // save received character & clear flag 
    		
    		  USART3->DR = ++RXch; // echo this character 
    	
    			OutString = "ABCDEFGH"; // Init string & ptr 
    			 USART_ITConfig(USART3, USART_IT_TXE, ENABLE); 
    			 USART3->DR = *OutString++; // Send first character 
    			 };
         // TX IRQ part 
    			 if (USART3->SR & USART_SR_TXE) { // If TXE flag in SR is on then 
    		if (*OutString != '\0') // if not end of string
    			USART3->DR = *OutString++; // send next character & increment pointer 
    		else // else 
    			USART_ITConfig(USART3, USART_IT_TXE, DISABLE); 
     };

    -----
    Dernière modification par Antoane ; 25/08/2015 à 19h05. Motif: Ajout balises [code]

  2. Publicité
  3. #2
    andre_teprom

    Re : commprendre la fonction d'interrption pour l'Emission/Reception d'un caractère

    Si vous traduire le code ci-dessus commentaires auront une bonne explication de ce que fait le code, qui aprés la recepcion d'un caractère de fin de texte fait l'écho de la message, mais en attachant um texte dans leur mise.

  4. #3
    spown

    Re : commprendre la fonction d'interrption pour l'Emission/Reception d'un caractère

    D'où t'as copié ce bout de code ? c'est quoi IDE ?? ( IAR , coocox ...) . Grossomodo, c'est une interruption mal faite pour TX et RX de l'USART 3

  5. #4
    andre_teprom

    Re : commprendre la fonction d'interrption pour l'Emission/Reception d'un caractère

    Citation Envoyé par spown Voir le message
    Grossomodo, c'est une interruption mal faite pour TX et RX de l'USART 3
    Je suis d'accord parce que le vecteur d'interruption est pas l'endroit le plus approprié pour effectuer le traitement d'une interruption, mais seulement activer un flag pour le traitement dans le routine principale main().

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

    Re : commprendre la fonction d'interrption pour l'Emission/Reception d'un caractère

    salutation
    si vous pourriez m'aider a corriger ce code merci bien d'avance

  8. #6
    freepicbasic

    Re : commprendre la fonction d'interrption pour l'Emission/Reception d'un caractère

    Code:
    La routine contient les 2 traitements réception et émission
    ------------------------------------------------------------
    
    void USART3_IRQHandler(void) 
     {
     char *OutString ; pointeur sur une chaine
    
    
     // RX IRQ part 
    	 if (USART3->SR & USART_SR_RXNE) { // si le flag RXNE (char reçu) dans le registre SR est a 1 alors 
    		 int RXch = USART3->DR; // sauve le caractère dans RXch et la lecture efface le flag (char reçu) 
    		
    		  USART3->DR = ++RXch; // renvoie le caractère en lui faisant +1
                                           // si on reçoie 'A' on enverra 'B'   
    	
    			// On va envoyer une chaine en réponse
    			OutString = "ABCDEFGH"; // Init le pointeur qui va s'incrémenté avec celui declaré outstring 
                                                    // on pointe vers le 1er caractère de la chaine statique   
    
    			 USART_ITConfig(USART3, USART_IT_TXE, ENABLE);  // On autorise l'interruption d'émission
    			 USART3->DR = *OutString++; // On envoie le premier char et incrémente le pointeur
    					      // pour le caractère suivant   
    			 };
    // TX IRQ part 
    	if (USART3->SR & USART_SR_TXE) { // si le flag TXE dans le registre  SR est à 1 alors 
    		if (*OutString != '\0') // fin de chaine ? => '\0'
    			USART3->DR = *OutString++; // non alors transmettre le caractère suivant pointé
      						// et incrementer le pointeur 
    		else // Oui on arrête l'émission 
    			USART_ITConfig(USART3, USART_IT_TXE, DISABLE); 
    		 };
    
    } ; manque une accolade !!!!!!!!!!!
    Dernière modification par freepicbasic ; 26/08/2015 à 12h04.
    A+, pat

  9. Publicité
  10. #7
    freepicbasic

    Re : commprendre la fonction d'interrption pour l'Emission/Reception d'un caractère

    Je ne connais pas ce µc , mais , bon quand on en connait quelques uns...

    J' ai simplement traduit en mettant quelques infos supplémentaires pour les non initiés.

    USART3->DR
    Sert à la réception et à l'émission.
    Bizarre, mais possible, donc à vérifier

    respecter l'indentation pour la clarté
    et la parité des accolades.

    Je ne sais pas à quoi ça sert, ça ressemble à un prog test...
    Dernière modification par freepicbasic ; 26/08/2015 à 12h21.
    A+, pat

  11. #8
    spown

    Re : commprendre la fonction d'interrption pour l'Emission/Reception d'un caractère

    Ignorer les questions ne donne plus envie de répondre. Travailler avec ARM M4 32 bit avec cette manière , je te conseille de changer le métier. Corriger quoi ?? Qu'est ce qui fonctionne pas ?? J'ai mentionné que c'est mal fait, mais ton code fonctionne .

    Pour répondre ã freepicbasic , USART3->DR c'est une structure qui pointe sur Data registre qui contient les données de réception et l’émission de USARTx

  12. #9
    hichooo1991

    Re : commprendre la fonction d'interrption pour l'Emission/Reception d'un caractère

    salutation j cherche a ajouté cette fct dans un prog d'echange de donnée entre 2 carte stm32
    je trouve des lacunes si vous pourriez m'aider

  13. #10
    katmai

    Re : commprendre la fonction d'interrption pour l'Emission/Reception d'un caractère

    Salut,

    T'es pas bien loin, t'as tout cqui faut !
    Tu sais comment fonctionne une interruption?

    A+

    EDIT:

    En plus Freepicbasic a commenter tout la fonction d'interruption...
    Faut modifier un peu..
    Dernière modification par katmai ; 27/08/2015 à 16h52.

Discussions similaires

  1. emission - reception HF
    Par arzew dans le forum Électronique
    Réponses: 10
    Dernier message: 03/03/2014, 07h46
  2. émission réception RC
    Par stephane-mecano dans le forum Électronique
    Réponses: 5
    Dernier message: 01/01/2014, 23h26
  3. Emission / Réception
    Par Anduriel dans le forum Électronique
    Réponses: 9
    Dernier message: 28/03/2012, 07h17
  4. Réponses: 4
    Dernier message: 20/05/2008, 13h52
  5. emission et reception en 433 mhz
    Par David01 dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 30/12/2003, 21h16
Découvrez nos comparatifs produits sur l'informatique et les technologies.