problème lecture UART (PIC18, C18)
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

problème lecture UART (PIC18, C18)



  1. #1
    gogott

    problème lecture UART (PIC18, C18)


    ------

    Bonjour à toutes et à tous,

    je suis débutant en programmation sur PIC et ceci est mon premier message sur ce forum.

    J'essaye actuellement d'initialiser une liaison série en utilisant l'UART de mon PIC18F25K22, je travaille avec le compilateur C18 sous MPlab (avec un PicKit 3).

    J'utilise un quartz externe de 8 Mhz, le pic est bien alimenté et fonctionne car j'arrive à modifier mes registres, jouer avec les leds etc.

    Pour tester ma liaison série, j'ai tout simplement brancher un fil entre les bornes RC6 (TX1) et RC7 (RX1) de mon PIC, pour effectuer une boucle. J'émets un caractère via TX1 que j'aimerais récupérer sur RX1!

    Le problème c'est que la lecture ne veut pas se faire...

    Voici mon code:
    ****************************** *********************

    #include <p18f25k22.h>
    #include <usart.h>

    #pragma config FOSC = HSMP
    #pragma config PWRTEN = OFF
    #pragma config LVP = OFF
    #pragma config CPD = OFF
    #pragma config WDTEN = OFF
    #pragma config BOREN = OFF
    #pragma config MCLRE = INTMCLR
    #pragma config DEBUG = ON

    void main (void){

    char c;
    char c2;

    ANSELC = 0;
    PIE1 = 0b01111100;

    TRISCbits.RC6 = 1; // TX1
    TRISCbits.RC7 = 1; // RX1

    Open1USART(USART_TX_INT_ON &
    USART_RX_INT_ON &
    USART_ASYNCH_MODE &
    USART_EIGHT_BIT &
    USART_CONT_RX &
    USART_BRGH_HIGH, 51);

    c = 'z';

    Write1USART(c);

    while(!DataRdy1USART());
    c2 = getc1USART();


    Close1USART();

    //while(1);

    }

    ****************************** *********************

    Voilà ce qu'il se passe: la boucle while(!DataRdy1USART()); ne s'arrête jamais car le bit RCIF1 n'est jamais à 1...

    Dans le registre TXREG1 je peux voir que j'ai bien mon caractère 'z' qui arrive, mais il ne se passe évidemment rien pour RCREG1, même si je supprimer la ligne avec DataRdy.

    Quelqu'un aurait-il une idée? J'avoue que je sèche sur un problème aussi simple!

    Je vous remercie d'avance pour votre aide!

    -----

  2. #2
    gogott

    Re : problème lecture UART (PIC18, C18)

    personne n'aurait une idée? là je bloque vraiment!

  3. #3
    amoniaque

    Re : problème lecture UART (PIC18, C18)

    Hello,

    Ma réponse va peut être te paraître idiote mais : as tu vérifié à l'oscillo' si ton caractère sortait bien ?
    Si tu n'as pas d'oscilloscope tu peux toujours relier ta sortie USART vers ton PC, voir si tu reçois bien le bon caractère.
    Et si tu n'as pas de quoi communiquer en port COM sur ton PC, as tu essayé de simuler le tout ?

    A+

  4. #4
    gogott

    Re : problème lecture UART (PIC18, C18)

    Merci mais oui j'avais bien fait vérifié à l'oscillo!

    Ça marche désormais, voilà ce que j'ai changé:
    ANSELC = 0x00; // au lieu de ANSELC = 0;

    Et à la place de
    while(!DataRdy1USART());

    j'ai mis une petite tempo
    for(i=0; <time; i++); avec time = 100;

    Si je laisse la boucle while le programme tourne en boucle et je ne reçois rien, et si je baisse la valeur de time je ne reçois pas les caractères correctement

  5. A voir en vidéo sur Futura

Discussions similaires

  1. PIC problème lecture uart
    Par mmarc2007 dans le forum Électronique
    Réponses: 10
    Dernier message: 02/11/2010, 21h18
  2. [PIC18 / Copilateur C18] - Configuration des bits
    Par jorg1n dans le forum Électronique
    Réponses: 3
    Dernier message: 30/08/2010, 11h34
  3. [PIC C18] problème avec la lecture d'une entrée numérique
    Par invitec89d22d7 dans le forum Électronique
    Réponses: 10
    Dernier message: 06/03/2010, 07h50
  4. [Programmation]Différence Compilateur C C18/IAR PIC18
    Par jorg1n dans le forum Électronique
    Réponses: 3
    Dernier message: 01/04/2008, 09h38
  5. Réponses: 2
    Dernier message: 27/07/2005, 10h44
Découvrez nos comparatifs produits sur l'informatique et les technologies.