ATXmega128A1 USARTD0 RX no funciona, pero F0 funciona con el mismo código

0

Tengo un problema con mi atxmega128a1. Escribí un código usando 3 interfaces usart. El código de inicio es el mismo, pero solo dos de los puertos funcionan bien. El problema es con USARTD0 (y probé con USARTD1, pero también falla) El síntoma es el siguiente: el primer USARTD0 ingresó a 9600bps, y después de algunas transmisiones, debe iniciarse nuevamente a 115200bps. Después de configurar nuevamente el nuevo baud, deja de recibir. Puedo enviar por TX, pero USART_RXCIF_bm nunca se configuró. Es tan extraño, porque el mismo código funciona bien con otros puertos. He revisado mi código y cableado muchas veces. ¿Alguien tiene alguna idea? Cavo en erratas, funciones alternativas, etc. pero no he encontrado ninguna útil todavía. Gracias de antemano, y perdón por mi áspero inglés.

void uart_init_d0(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   = PIN2_bm;   // (RXD1) input
    PORTD.DIRSET   = PIN3_bm;   // (TXD1) output

    sysclk_enable_module(SYSCLK_PORT_D, PR_USART0_bm);
    usart_init_rs232(USART_BAY2, &options);

}
    
pregunta Drotos

1 respuesta

0

El código y los módulos de usart son correctos. (Desafortunadamente, mi problema proviene de un IC externo en la pizarra, pero esa es otra pregunta).

    
respondido por el Drotos

Lea otras preguntas en las etiquetas