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

Problème de traitement de trame C18 pic 18f452



  1. #1
    1ndecis

    Problème de traitement de trame C18 pic 18f452


    ------

    Bonjour à tous
    Je voulais savoir quelqu'un peut m'aider.

    Je récupère une trame uart de la forme
    %a 111 112 113 121 131 %z
    lorsque je demande


    printf("%c",ch);
    j'obtiens bien ce que je souhaites.
    Par contre je veux sortir les chiffres de la trame, c'est à dire avoir 5 constantes tel que
    constante1=111
    constante2=112
    etc...

    Avez vous une idée?
    Merci d'avance
    David

    Code:
    //************************** fichier d'entete **********************************/
    #include <p18f452.h>      // Pour les registres du PIC18F452
    #include <usart.h>         // Pour le périphérique USART qui gére la liaison série
    #include <stdio.h>  
    #include <delays.h> 
    //************ Instruction de configuration du pic et de l'horloge *************/
    #pragma config WDT = OFF   // Pas de  watchdog
    #pragma config OSC = HS      // Quartz HS pour un quartz 20MHz  HS
    #pragma config  LVP=OFF 
    
    //****************************debut du programme********************************/
    void delay (int cnt)
    {
    unsigned int i;
    for (i = 0; i < cnt ; i++);
    }
    
    void main(void)            // Programme principal
    {      
    char ch=0 ;             // Caractére qui sera reçu sur la liaison série
       char to=0;
       // Configure tous les ports en entrée (1 = input / 0 = output)
       TRISA = 0b11111111;      // XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX
       TRISB = 0b11111111;      // XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX
       TRISC = 0b10111111;      // RX    | TX        | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX
       TRISD = 0b11111111;      // XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX
       TRISE = 0b111;         // XXXXXX | XXXXXX | XXXXXX
       
    TRISBbits.TRISB4=0;
    PORTBbits.RB4=1;
    ch=0;
    to=0;
       // Configure la liaison série :
       OpenUSART   (   USART_TX_INT_OFF   &   // Pas d'interruption sur l'émission
                   USART_RX_INT_OFF   &   // Pas d'interruption sur la réception
                   USART_ASYNCH_MODE   &   // Mode asynchrone
                   USART_EIGHT_BIT      &    // Transmission sur 8 bits (1 octet)
                   USART_CONT_RX      &   // Reception continue
                   USART_BRGH_HIGH      ,   // Haute vitesse
                   25);               // (20e6 - 115200) / (16 * 115200)   10
       
       // Transmissions sur la liaison série
       
       while (1)                           // Boucle infinie
       {   
    //delay(40000);
    PORTBbits.RB4=0;
    //Delay10KTCYx(150);
    PORTBbits.RB4=1;
          if (DataRdyUSART())                  // Attends la présence d'un caractère sur la liaison série
          {
             ch=ReadUSART();                  // Lit le caractère
             if ((ch>=97) && (ch<=122)) ch-=32;   // Convertie le caractère en minuscule si c'est une lettre minuscule
    printf("%c",ch);
         }
    
       }
      // CloseUSART();                        // Ferme proprement la liaison série
    }

    -----
    Dernière modification par HULK28 ; 26/01/2011 à 11h07. Motif: ajout des balises code pour meilleur lisibilité

  2. #2
    invite03481543

    Re : Problème de traitement de trame C18 pic 18f452

    Bonjour,

    plusieurs solutions:

    1/ vous intercalez des séparateurs dans votre chaine de data lors de l'envoi, puis vous détectez ces séparateurs à l'arrivée, et vous stochez les datas entre ces séparateurs dans un tableau de variables.

    2/ les datas reçues ont toujours 3 octets dans ce cas vous compter les octets reçus et vous les stockez dès que vous en avez reçu 3.
    @+

Discussions similaires

  1. Programmation de microchip 18f452 par compilateur C18
    Par ENIT-PRO dans le forum Électronique
    Réponses: 0
    Dernier message: 03/11/2010, 19h56
  2. Programme à convertir de ... à C18, ds1307, 18f6627 or 18f452,
    Par nasserarien dans le forum Électronique
    Réponses: 12
    Dernier message: 24/03/2010, 08h10
  3. [PIC C18] problème avec la lecture d'une entrée numérique
    Par Neyna dans le forum Électronique
    Réponses: 10
    Dernier message: 06/03/2010, 06h50
  4. [PIC C18] problème pour activer 2 sorties en même temps
    Par Neyna dans le forum Électronique
    Réponses: 7
    Dernier message: 05/03/2010, 22h26
  5. probleme stabilite pic 18F452.
    Par nordiste dans le forum Électronique
    Réponses: 14
    Dernier message: 28/02/2008, 18h58
Découvrez nos comparatifs produits sur l'informatique et les technologies.