Bonjours, j'ai un problème avec la liaison UART d'un PIC24F avec le PC
voici mon programme
#include <p24FJ32GA002.h>
#define XTFREQ 20000000//j'utilise un quartz externe de 20MHz
#define PLLMODE 2
#define FCY XTFREQ*PLLMODE
#define BAUDRATE 9600
#define BRGVAL ((FCY/BAUDRATE)/16)-1
#define null 0
int main (void)
{
//dévalidation watch dog
RCONbits.SWDTEN=0;
//cablage des pins pour l'uart
//unlock des registres
OSCCON = 0x46;
OSCCON = 0x57;
OSCCONbits.IOLOCK = 0;
//assigne U1RX > RP4
RPINR18bits.U1RXR = 4;
//U1CTSR > RP5
RPINR18bits.U1CTSR = 5;
//U1TX > RP2
RPOR1bits.RP2R = 3;
//U1RTS > RP3
RPOR1bits.RP3R = 4;
//lock des registres
OSCCON = 0x46;
OSCCON = 0x57;
OSCCONbits.IOLOCK = 1;
//config uart
U1STAbits.UTXEN = 0; //reset du buffer
U1BRG = BRGVAL;
U1MODE = 0x8000; //U1MODE affiche 0xC000 (pin15 à 1 mais elle sert à rien)
U1STA = 0x0400; //U1STA affiche 0x0510 (TRMT à 1 et RIDLE à 1(mode recevoir en idle))
IFS0bits.U1RXIF = 0; //effaçage du falg d'interruption RX de l'uart
//routine
while(1)
{
if(IFS0bits.U1RXIF==1) //si un caractère est en attente
{
while(!U1STAbits.TRMT); //attendre que la transmission soit complète
U1TXREG = U1RXREG;
IFS0bits.U1RXIF = 0;
}
}
return 0;
}
Voilà, mon U1MODE et mon U1STA me donne des valeurs bizarres à l'initialisation.
Je reçois mes données de Labview (où j'utilise VISA WRITE pour écrire) sur le COM1 avec un câble RS232
Voilà aussi la datasheet du PIC, la fonction UART est à la page 153
http://ww1.microchip.com/downloads/e...Doc/39881b.pdf
merci de votre aide si vous pouviez m'éclaicir un peu
-----