[EUSART] Problème de com avec PIC18F23K22
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

[EUSART] Problème de com avec PIC18F23K22



  1. #1
    invite42fe2d4f

    Question [EUSART] Problème de com avec PIC18F23K22


    ------

    Bonjour,

    pour un projet, je souhaite programmer le PIC18F23K22.
    Je suis assez débutant dans le monde Microchip.

    J'ai un PICkit3 et arrive à communiquer avec le microcontrolleur.
    Je souhaite tout simplement envoyer des caractères sur le port série, 9600bauds, 8 bits, pas de parité, 1 bit de stop. (EUSART1).

    Cependant, ça n'a pas l'air de fonctionner (oscillo sur la broche du micro).
    J'utilise le code suivant:
    Le début du code (RST_IC et WIRELESS) sert pour le reste de mon montage (commande d'un switch et du reset d'un autre composant).

    Code:
    //#pragma code*/ 
    void main (void) 
     {
    // Configuration bits
    // set internal oscilator with frequency to 16MHz
    OSCCON = 0x72; 
    
    // Try to communicate with serial port with PC
    //set WIRELESS = 1 (Output, 1), RA7
    // Set RST_IC = 1 (Output, 1) RB3
    // setup for Asynchronous, 8bit, 9600bauds
    TRISA = TRISA & 0x7F; //set RA7 as Output
    PORTA = PORTA | 0x80; // set RA7 as 1
    TRISB = TRISB & 0xF7; //set RA7 as Output
    PORTB = PORTB | 0x08; // set RA7 as 1
    
    //configure serial port
    // set bauddrate to 9600 bauds
    // set BRGH and BRG16 = 0
    SPBRG1 = 0x19;
    SPBRGH1 = 0x00;
    BAUDCON1 = BAUDCON1 & 0xF7; 
    TXSTA1 = TXSTA1 & 0xFB;
    // Set TRIS to '1' for RC6 and RC7
    TRISB = TRISB | 0xC0;
    // Clear SYNC and set SPEN to activate serial port
    TXSTA1 = TXSTA1 & 0xAB;// enable TX, asynchronous mode, 8bits, low speed
    RCSTA1 = RCSTA1 | 0x90;// Enable receiver
    RCSTA1 = RCSTA1 & 0xBF;
    TXSTA1 = TXSTA1 | 0x20; 
    
    TXREG1 = 0x55;
    
    }
    Est-ce que quelqu'un peut m'apporter ses lumières ou me donner une piste ?
    J'ai essayé autant que possible de suivre la datasheet du PIC (étapes page 268)

    Merci !

    -----

  2. #2
    RISC

    Re : [EUSART] Problème de com avec PIC18F23K22

    Salut,

    Il manque la déclaration des bits de configuration dans ton programme...
    Je te recommande de jeter un oeil sur le code de la carte PICDEM2PLUS qui utilise le PIC18F46K22 qui est le "grand frère" de ton PIC.
    Le code comprend la gestion d'une liason série : http://www.microchip.com/picdem2plus

    a+

  3. #3
    paulfjujo

    Re : [EUSART] Problème de com avec PIC18F23K22

    bonsoir,


    Malheureusement, ton code est relativement indigeste ..
    pourquoi ne pas utiliser les champs de bits qui facilite la comprehension..
    tel que dans l'exemple cité par RISC
    source serial.c

    attention il n'y a pas de gestion d'erreur dans la routine d'interruption de cet exemple .

    sur les 18F46K22 ne pas oublier ANSELC=0 ; // no analog
    je ne sais pas si ton pic est dans ce cas.

  4. #4
    invite42fe2d4f

    Re : [EUSART] Problème de com avec PIC18F23K22

    Bonjour,

    j'ai bien compris que c'était indigeste et je vais essayer d'utiliser la librairie MCC18.
    Code:
    #include <p18f23k22.h>
    #include <usart.h>
    
    void main (void) 
     {
    // Configuration bits
    // set internal oscilator with frequency to 16MHz
    OSCCON = 0x72; 
    
    // Try to communicate with serial port with PC
    //set WIRELESS = 1 (Output, 1), RA7
    // Set RST_IC = 1 (Output, 1) RB3
    // setup for Asynchronous, 8bit, 9600bauds
    TRISA = TRISA & 0x7F; //set RA7 as Output
    PORTA = PORTA | 0x80; // set RA7 as 1
    TRISB = TRISB & 0xF7; //set RA7 as Output
    PORTB = PORTB | 0x08; // set RA7 as 1
    
    
    // configure USART
    Open1USART( USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH,25 );
    while(1)
    {
    Write1USART(0x65);
    }
    }
    Quand je compile, j'ai l'erreur suivante:
    D:\Projet RFID\Hardware\v2\Firmware\v0.1 \main.c:67:Warning [2058] call of function without prototype
    D:\Projet RFID\Hardware\v2\Firmware\v0.1 \main.c:72:Warning [2058] call of function without prototype

    Ce qui correspond aux fonctions Write1USART et Open1USART.
    J'ai cherché un peu et j'ai trouvé ce lien qui semble correspondre à mon problème:
    http://www.microchip.com/forums/m498169.aspx

    Ce qui se passe, c'est que dans mon pconfig.h, je n'ai pas de définition de mon PIC (j'utilise un PIC18F23K22).
    Par contre, j'ai bien un p18f23k22.h de disponible.

    Il me semble donc qu'une petite modification de pconfig.h permettrait de resoudre le problème mais je ne vois pas comment faire.

    Est-ce quelqu'un sait comment faire pour que je puisse profiter des librairies ?

    Merci beaucoup !

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

    Re : [EUSART] Problème de com avec PIC18F23K22

    Salut,

    Pour pouvoir utiliser les librairies du C18 il faut inclure le fichier header du/des périphérique(s) que tu veux utiliser.
    #include <timers.h>
    #include <usart.h>
    ...
    Voir les différents headers dans ce répertoire : c:\Program Files (x86)\Microchip\mplabc18\v3.42 \h\

    Tu trouveras la documentation des librairies périphériques du C18 ici : c:\Program Files (x86)\Microchip\mplabc18\v3.42 \doc\PIC18F Peripheral Library Help Document.chm

    a+

Discussions similaires

  1. UART et EUSART
    Par invite5bc96a17 dans le forum Électronique
    Réponses: 9
    Dernier message: 27/05/2012, 20h49
  2. Probleme EUSART du PIC 18F45K80
    Par invite00f988c1 dans le forum Électronique
    Réponses: 18
    Dernier message: 19/05/2012, 11h27
  3. Pic 18f26k20 eusart tx test
    Par invite51e48a05 dans le forum Électronique
    Réponses: 8
    Dernier message: 27/03/2012, 22h39
  4. PIC18 EUSART overrun
    Par invite51e48a05 dans le forum Électronique
    Réponses: 9
    Dernier message: 11/02/2012, 20h22
  5. Réponses: 10
    Dernier message: 22/03/2009, 11h34
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...