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

Communication RS232 avec Picdem 2+ et p18f4520



  1. #1
    Madje55

    Thumbs down Communication RS232 avec Picdem 2+ et p18f4520


    ------

    Bonjour,

    Ma question peut paraitre basique mais étant débutant en ce qui concerne les microcontroleurs, je me lance.

    J'aimerais définir le terminal windows comme terminal de sortie pour les fonctions telles que printf(), pour afficher le résultat d'un calcul par exemple.

    J'ai connecté un câble série RS232 entre mon PC et la carte PICDEM2+ puis lancé l'Hyper Terminal Windows configuré en 9600 N 8 1.

    J'ai essayé de lancer le programme simple suivant:

    Code:
    #include <stdio.h>
    
    int main()
    {
        printf("Hello, world\n");
        return 0;
    }
    Mais rien ne s'affiche. Je pense que MpLab ne doit pas être configuré correctement, mais je ne vois pas comment faire.

    Merci d'avance.

    Edit: J'utilise MPLAB v8.5 et le compilateur C18.

    -----

  2. Publicité
  3. #2
    kronanberg

    Re : Communication RS232 avec Picdem 2+ et p18f4520

    Salut !!

    Je pense que ton résonnement est un peu simple.
    Si tu veux créer une fonction qui t'affiche des caractère sur l'Hyperterminal au lieu dd l'ecran LCD de ta carte, il faut que tu mette en oeuvre la communication RS232.

    Il faudrait que tu configure deja ta communication pour que quand tu envoies un caractère à partir du PIC ça s'affiche sur l'hyperterminal.

    Et ensuite il faudra juste que tu fasse une fonction qui gère le transfert de chaine de caractère et tu devrai pouvoir afficher tes informations sur l'écran LCD !!

  4. #3
    Madje55

    Re : Communication RS232 avec Picdem 2+ et p18f4520

    Salut,

    Oui il me semblait bein devoir configurer tout ça. Je suis en train de prendre connaissance des bibliothèques assocées à l'UART du pic.

    A ce propos quelqu'un connait la différence entre UART et USART?

  5. #4
    kronanberg

    Re : Communication RS232 avec Picdem 2+ et p18f4520

    Quelques mot sur L UART et USART :

    UART : Universal Asynchronous Receiver Transmitter
    USART : Universal Synchronous & Asynchronous Receiver Transmitter

    En général, on voit plutot des modules USART sur les microcontroleur car il permettent de réaliser une liaison série synchrone et asynchrone.
    Le principe du mode synchrone est d'envoyerune horloge avec les données.

    Mais j'utilise toujours ce module en mode Asynchrone !!!

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

    Re : Communication RS232 avec Picdem 2+ et p18f4520

    Bonjour,

    Voila se que tu peut mettre en entête de ton fichier

    Code:
    #include <stdio.h>
    #include <p18f4520.h>
    #include <usart.h>
    ensuite tu initialise la communication USART avec cette fonction:

    Code:
    //Ouverture du port USART en 115200baud avec horloge 40MHz 8bits asynchrone
     OpenUSART(USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH,21);
    Comme tu peut le voir ici j'ai mis:
    USART_TX_INT_OFF : émission sans interruption,
    USART_RX_INT_ON réception en interruption c'est à dire que lorsque ton PIC reçoit une donnée sur sont port série, il déclenche une interruption (levé tu drapeau PIR1bits.RCIF).
    USART_ASYNCH_MODE: Le mode asynchrone c'est a dire qu'il reçoit ou émet à n'importe quel moment,
    USART_EIGHT_BIT: émission sur 8bits,
    USART_CONT_RX: je sais pas trop ce que c'est,
    USART_BRGH_HIGH: haute vitesse du port,
    21: valeur qui correspond à un débit de 115200bauds pour 40Mhz, cette valeur est calculer à l'aide de la formule de la datasheet

    Voila après il te suffit d'utilisé la fonction printf pour émettre

    A+

  8. #6
    Madje55

    Re : Communication RS232 avec Picdem 2+ et p18f4520

    Bonjour, merci des réponses,


    Re,

    J'ai pris connaissance des fichiers header. J'ai donc essayé d'écrire le programme suivant, mais il ne fonctionne toujours pas.


    Code:
    #include <p18f4520.h>
    #include <usart.h>
    
    
    void main(void)
    {
    
    TRISCbits.TRISC6=1;  //RX - UART Définit l'entrée RS232
    TRISCbits.TRISC7=1;    //TX - UART Définit l'entrée RS232
    
    /*Configuration de l'USART */
    OpenUSART( USART_TX_INT_ON & //Interruption de la transmission activée
              USART_RX_INT_ON & //Interruption de la réception activée
             USART_ASYNCH_MODE & // Mode asynchrone
             USART_EIGHT_BIT & //Données sur 8 bits
             USART_CONT_RX &  //Réception continue
             USART_BRGH_HIGH, //High baud rate
                   25); //
    
    WriteUSART("Hello! \n");
    
    
    CloseUSART( );
    
    
    }
    Le programme m'a l'air simpliste, j'ai du oublier quelque chose...

    PS: Je n'obtiens ni erreur ni warning mais je n'observe rien sur le terminal non plus.

  9. Publicité
  10. #7
    xamox

    Re : Communication RS232 avec Picdem 2+ et p18f4520

    Yop,
    Alors déja tu as mis:

    Code:
    TRISCbits.TRISC6=1;  //RX - UART Définit l'entrée RS232
    TRISCbits.TRISC7=1;    //TX - UART Définit l'entrée RS232
    Donc y a déja un truc qui va pas t'as mis le port par rapport au PIC (point de vu du PIC) l'entrée série (RX) est sur la broche RC7 et la sortie (TX) sur RC6, donc sa serais plutôt

    Code:
    TRISCbits.TRISC6=0;  //TX - UART Définit la sortie RS232
    TRISCbits.TRISC7=1;    //RX - UART Définit l'entrée RS232
    Voila essai déja ça après si sa marche pas donne moi la fréquence de ton PIC pour que je vérifie ta valeur de SPBRG

    A+

  11. #8
    xamox

    Re : Communication RS232 avec Picdem 2+ et p18f4520

    Bon désolé ma phrase du dessus n'est pas clair, j'ai pas prévisualisé avant de poster....
    Mais tu peu quand même copier le code que je t'ai mis et remplacer le tient, t'avais mis le port emission en entrée.... Mais il me semble que la fonction OpenUsart configure les ports comme il faut donc je pense pas que sa vienne de la...

    Donc y a juste la valeur de SPBRG a vérifier, t'as calculé comment le chiffre 25 (le dernier paramètre de ta fonction OpenUsart??)

    A+

  12. #9
    Madje55

    Re : Communication RS232 avec Picdem 2+ et p18f4520

    Bonjour xamox,

    Il me semble que dans la datasheet il y a marqué que les 2 ports doivent être configurés en entrée. Je vais revérifier.

    Pour spbrg, je me suis servi de la formule suivante:

    FOSC is the oscillator frequency

    With USART_BRGH_HIGH:
    baud rate = FOSC / (16 * (spbrg + 1))

  13. #10
    Madje55

    Re : Communication RS232 avec Picdem 2+ et p18f4520

    Bon, j'ai fait ce que j'aurais du faire depuis le début... me plonger dans la doc du C18 . Apparement j'utilisais la mauvaise fonction.

    Mon programme fonctionne donc, le voici pour ceux qui auraient le même souci:
    Code:
    #include <p18f4520.h>
    #include <usart.h>
    #include <stdio.h>
    
    rom char mystring[] = "Send me to the USART";
    char strbuffer[21];
    
    void str2ram(static char *dest, static char rom *src) //Cette fonction permet de copier la donnée dans la mémoire ROM
    {
    while ((*dest++ = *src++) != '\0');
    }
    
    void main(void)
    {
    
    TRISCbits.TRISC6=1;  //RX - UART Définit l'entrée RS232
    TRISCbits.TRISC7=1;	 //TX - UART Définit l'entrée RS232
    
    /*Configuration de l'USART */
    OpenUSART( USART_TX_INT_ON & //Interruption de la transmission activée
    	       USART_RX_INT_ON & //Interruption de la réception activée
    		   USART_ASYNCH_MODE & // Mode asynchrone
    		   USART_EIGHT_BIT & //Données sur 8 bits
    		   USART_CONT_RX &  //Réception continue
    		   USART_BRGH_HIGH, //High baud rate
    					25); // With USART_BRGH_HIGH: baud rate = FOSC / (16 * (spbrg + 1)) 
    
    
    str2ram (strbuffer, mystring);
    putsUSART (strbuffer);
    
    CloseUSART( );
    
    }
    Merci bien.

  14. #11
    Madje55

    Re : Communication RS232 avec Picdem 2+ et p18f4520

    Re bonjour,

    J'ai un petit souci avec l'affichage sur l'hyperterminal. En effet, j'ai une acquisition continue (défilement de valeurs les unes après les autres).

    Pourtant je n'ai pas mis de boucle while(1) dans mon programme, et j'ai bien défini dans le paramétrage de l'USART : USART_SING_RX (single reception).

    De plus lorsque j'utilise l'instruction Delay10KTCY(), le défilement est plus lent mais j'obtiens des valeurs fausses (3, 1, 9 etc alors que je suis censé obtenir 0).

    Delay10KTCYx()

  15. #12
    xamox

    Re : Communication RS232 avec Picdem 2+ et p18f4520

    Bonjour,
    Si tu pouvait juste poster ton code pour voir.

  16. Publicité
  17. #13
    Madje55

    Re : Communication RS232 avec Picdem 2+ et p18f4520

    Bonjour,

    C'est le code juste au dessus.

  18. #14
    xamox

    Re : Communication RS232 avec Picdem 2+ et p18f4520

    Bon ben je ne vois pas de grosse erreur dans le programme.
    Déja est ce que quand tu envoi la chaine de caractère Send me to the USART tu la reçoit correctement??? c'est à dire toute les lettres et une seule fois??

  19. #15
    Madje55

    Re : Communication RS232 avec Picdem 2+ et p18f4520

    Oui je la reçois correctement. Je vais tenter de mettre tout ça dans un while(1) demain, pour "bloquer" le tout à une seule réception.

  20. #16
    xamox

    Re : Communication RS232 avec Picdem 2+ et p18f4520

    Peut être que le programme se termine donc le processeur arrive sur une zone mémoire qui n'est pas programmer donc il se reset et recommence le programme du début ainsi de suite.....

  21. #17
    Madje55

    Re : Communication RS232 avec Picdem 2+ et p18f4520

    Possible. Je te tiens au courant demain. Merci bien .

Discussions similaires

  1. P18f4520, affichage d'une valeur sur écran LCD picdem 2+
    Par Madje55 dans le forum Électronique
    Réponses: 3
    Dernier message: 21/04/2010, 15h57
  2. Problème librairie LCD du Picdem 2 Plus Demo Board (P18F4520)
    Par Madje55 dans le forum Électronique
    Réponses: 2
    Dernier message: 20/04/2010, 11h28
  3. Communication asynchrone RS232
    Par Mattouf dans le forum Électronique
    Réponses: 2
    Dernier message: 15/02/2009, 17h12
  4. communication rs232 avec pic 16f877 pour la commande de relais
    Par amigost dans le forum Électronique
    Réponses: 0
    Dernier message: 19/07/2008, 08h54
  5. Communication via port com (RS232) avec netbeans
    Par Bretzel dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 15/05/2008, 15h00
Découvrez nos comparatifs produits sur l'informatique et les technologies.