Bonjour,
J'ai un petit problème avec la liaison série de mon PIC32MX534F064H, impossible d'obtenir une réponse (echo) via l'hyper terminal.
J'ai mesuré (en pièce jointe), le signal transmis du pc vers le µc (TX liaison serie), nous avons bien un signal +-12V, cependant l'écho se situe sur la plage -5 +12v (RX liaison série).
Ainsi je n'obtient pas le code ASCII saisie au clavier dans mon hyper terminal...
J'utilise des max233 (max232 mais sans capa) dont l'alim est découplé (j'ai verifié l'alim), et la vitesse de transmission est de 9600bauds.
Je ne pense pas que sa vienne du programme, j'ai bien une réponse, le PIC rentre bien dans l'interruption et la valeur "data" est celle saisie au clavier.
Notez que si j'utilise un câble avec convertisseur usb/serie avec FTDI, le signal est encore plus dégradé et deviens quelque chose comme 0-10V.
Avez vous une idée du problème ?
Merci
#include "p32mx534f064h.h"
#include "plib.h"
//#include "uart.h"
//#include "interrupt.h"
unsigned char data='a';
//---------------------interrupt----------------------
void __ISR(_EXTERNAL_0_VECTOR,ipl1) Int0Handler(void)
{
//Doit lancer un timer de 500µs pour décaler l'impulsion
PORTE=~PORTE;//inverse la valeur de portE
//IFS0bits.INT0IF=0;//clear interrupt flag
INTClearFlag(INT_INT0);
}
void __ISR(_UART1_VECTOR, ipl2) IntUart1Handler(void)
{
data = ReadUART1();
WriteUART1(data);
while(BusyUART1()==1);
INTClearFlag(INT_U1RX);
//IFS1bits.U2RXIF=0;
}
void __ISR(_UART2_VECTOR, ipl2) IntUart2Handler(void)
{
IFS1bits.U2RXIF=0;
}
//------------------MAIN------------------
void main ()
{
//intterruption externe
ConfigINT0(EXT_INT_PRI_1 | FALLING_EDGE_INT | EXT_INT_ENABLE);
INTConfigureSystem(INT_SYSTEM_ CONFIG_MULT_VECTOR);
INTEnableInterrupts();
//config interruption UART
ConfigIntUART1(UART_ERR_INT_DI S | UART_RX_INT_EN | UART_INT_PR2 | UART_TX_INT_DIS | UART_TX_INT_PR2 );
ConfigIntUART2(UART_RX_INT_EN | UART_INT_PR2);
OpenUART1(UART_EN | UART_RX_TX | UART_NO_PAR_8BIT | UART_1STOPBIT | UART_NORMAL_RX, UART_TX_ENABLE | UART_RX_ENABLE | UART_INT_RX_CHAR ,520);
while(1);
}
-----