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!
-----