Recevoir des données par USART avec PIC18 sur une board Olimex PIC-WEB
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Recevoir des données par USART avec PIC18 sur une board Olimex PIC-WEB



  1. #1
    thibow

    Recevoir des données par USART avec PIC18 sur une board Olimex PIC-WEB


    ------

    Bonjour,

    Je travaille actuellement sur une board Olimex PIC-WEB rev C, dotée d'un microcontroller Microchip PIC18F67J60 (voir la présentation ici http://www.olimex.com/dev/pic-web.html ) et je ne parviens pas à recevoir des données en utilisant l'EUSART intégré..

    Je suis débutant et je suis un peu perdu, voici le schema electrique : http://www.olimex.com/dev/PIC/PIC-WE...-schematic.pdf D'après ce que j'ai compris, RXD1 et TXD1 des pins 31 et 32 du PIC sont multiplexés sur les pins 11 et 12 de la puce MAX3232 présente sur la board, de même que sur le port UEXT.J'ai trouvé un exemple de code en utilisant le compilateur C18 dans la doc de Microchip et je l'ai adapté à mon PIC.Par exemple j'ai rajouté des "1" avant "USART" dans les fonctions comme Close1Usart, Open1USART.. j'ai rajouté une boucle infinie pour envoyer ma chaine de caractère sans cesse.

    je me connecte sur le port Uext avec un hyperterminal configré pour une transmission de 8bits , baudrate 2400. j'ai vu dans la doc de Microchip que certain bit était à activer, comme le SPEN, TRISC7 and TRISC6. ce que j'ai fait, sans plus de succès.J'ai également essayé de configurer manuellement les bits FOSC, STRV etc, mais cela n'a pas aidé non plus. Voici le code :

    Code:
    #define USE_OR_MASKS 
    #include "p18F67J60.h" 
    #include "usart.h" 
    #pragma config FOSC = HSPLL, STVR = OFF, FOSC2 = OFF, FCMEN = OFF 
    
    unsigned char Rxdata[25]; 
    unsigned char Txdata[] = "MICROCHIP_USART"; 
    
    
    void main(void) 
    {	
    
        unsigned char config=0,spbrg=0,baudconfig=0,i=0,j=0; 
    
        Close1USART();  //turn off usart if was previously on 
    
    //-----configure USART ----- 
        config = USART_TX_INT_OFF | USART_RX_INT_OFF | USART_ASYNCH_MODE | USART_EIGHT_BIT | USART_CONT_RX | USART_BRGH_LOW; 
    //-----SPBRG needs to be changed depending upon oscillator frequency------- 
        spbrg = 51;                    //At 8Mhz of oscillator frequency & baud rate of 2400. 
    
        Open1USART(config, spbrg);        //API configures USART for desired parameters 
    RCSTA1bits.SPEN1=1; 
    TRISCbits.TRISC7=1; 
    TRISCbits.TRISC6=1; 
    
        baudconfig =  BAUD_8_BIT_RATE | BAUD_AUTO_OFF; 
        baud1USART (baudconfig); 
    
    
    //------USART Transmission ---- 
        while(Busy1USART());             //Check if Usart is busy or not 
        
    while(1){ 
    for(j=0;j<10001;j++){  
    if (j==10000){ 
    puts1USART((char *)Txdata);  //transmit the string 
       	 j=0; 
    }            
    } 
    
    }   
    
        Close1USART(); 
        while(1);                        //end of program 
    
    }
    Merci beaucoup pour votre aide.

    -----

  2. #2
    RISC

    Re : Recevoir des données par USART avec PIC18 sur une board Olimex PIC-WEB

    Salut,

    D'après le schéma d'Olimex, le quartz est un 25MHz.
    Dans ton programme, tu as choisi HSPLL ce qui veut dire que tu multiplie par 4 la fréquence externe...donc tu overclockes ton PIC à 100MHz...
    Essaye plutôt HS ;=)

    a+

  3. #3
    thibow

    Re : Recevoir des données par USART avec PIC18 sur une board Olimex PIC-WEB

    Je n'avais pas du tout vu cela, c'est très utile en effet, merci beaucoup !

  4. #4
    thibow

    Re : Recevoir des données par USART avec PIC18 sur une board Olimex PIC-WEB

    A force de parcourir de long en large les docs, j'en viens à me demander s'il faut bel et bien utiliser les bit de configuration.. Je vois un peu partout des exemples de code du style (proviens de la doc de la librairie C18) :

    Code:
    #include <p18C452.h>
    #include <usart.h>
    void main(void)
    {
      // configure USART
      OpenUSART( USART_TX_INT_OFF  &
                 USART_RX_INT_OFF  &
                 USART_ASYNCH_MODE &
                 USART_EIGHT_BIT   &
                 USART_CONT_RX     &
                 USART_BRGH_HIGH,
                 25 );
      while(1)
      {
        while( ! PORTAbits.RA0 );  //wait for RA0 high
        WriteUSART( PORTD );       //write value of PORTD
        if(PORTD == 0x80)          // check for termination
          break;                   //   value
      }
      CloseUSART();
    }
    Ce code ne parle pas de baud1USART ni même de configuration de FOSC ou quoi que ce soit... seul open1USART est appelé.. aucun port n'est ouvert..

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

    Re : Recevoir des données par USART avec PIC18 sur une board Olimex PIC-WEB

    Salut,

    Il faut ABSOLUMENT initialiser les bits de configuration dans le fichier source.
    La plupart ne le font pas ou le font dans l'environnement MPLAB ce qui est une très très mauvaise méthode.

    Code:
    #pragma config FOSC = HS, STVR = OFF, FOSC2 = OFF, FCMEN = OFF
    a+

  7. #6
    paulfjujo

    Re : Recevoir des données par USART avec PIC18 sur une board Olimex PIC-WEB

    Bonjour


    Citation Envoyé par RISC Voir le message
    La plupart ne le font pas ou le font dans l'environnement MPLAB ce qui est une très très mauvaise méthode.
    a+
    Surtout si on utilise directement le fichier Hex issus de la compilation.
    Il faut faire un export du fichier complié pour que la config y soit incluse.
    si on l'oublie, heureusement Pickit2 le rappelle par un message d'alerte !

Discussions similaires

  1. Aide sur PIC-WEB Rev B de chez OLIMEX
    Par invitec826db14 dans le forum Électronique
    Réponses: 0
    Dernier message: 17/07/2011, 15h45
  2. PIC18 Explorer Board nécessaire avec le PICkit3 ?
    Par invitef12fc9a2 dans le forum Électronique
    Réponses: 2
    Dernier message: 07/03/2011, 04h00
  3. Entrer des données sur une page web via excel
    Par inviteb27e5358 dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 12/10/2010, 14h09
  4. Recevoir des données du pic quand j'appuis sur un bouton!!!!
    Par hissokaaaa dans le forum Électronique
    Réponses: 4
    Dernier message: 03/05/2010, 17h24
  5. Recevoir des données
    Par invite3d3ce1f9 dans le forum Électronique
    Réponses: 13
    Dernier message: 10/04/2009, 13h30
Découvrez nos comparatifs produits sur l'informatique et les technologies.