Tengo una placa con 3 interfaces IrDA y un controlador ATXMega128A1U. Dos IrDA funcionan a la perfección, pero el tercero confunde los bytes recibidos después de la transmisión correcta de 2 o 3 bytes. Los módulos IrDA son TFDU4301 y MCP2120. La comunicación se establece en 115200bps. (Déjame mostrar un simple volcado:
00C▒v[Y▒▒veH▒▒00ac▒
Esto debería contener solo caracteres visualizables.
Cuando desconecto el MCP2120 de la MCU, el MCP2120 transmite correctamente. Cuando envío algo a la MCU (desconectado de MCP2120 pero con el mismo pin), también recibe todo. Pero si los conecto juntos, el 3º y 4º bytes de una serie se convierten en incorrectos.
¿Alguien tiene una idea? ¿Qué debo verificar? ¡Muchas gracias!
Mi código de inicio:
#define USART_BAY2 &USARTD1
void uart_init_d1(long baudrate){
usart_rs232_options_t options = {
.baudrate = baudrate,
.charlength = USART_CHSIZE_8BIT_gc,
.paritytype = USART_PMODE_DISABLED_gc,
.stopbits = 0 // 0=>1 stop bit
};
PORTD.DIRCLR = PIN6_bm; // (RXD1) input
PORTD.DIRSET = PIN7_bm; // (TXD1) output
sysclk_enable_module(SYSCLK_PORT_D, PR_USART1_bm);
usart_init_rs232(USART_BAY2, &options);
delay_ms(10);
}