Hola, estoy tratando de hablar para enviar un personaje a la PC usando el xmega128a1 y el US32 MAX3232 al chip convertidor de serie. Aquí está mi configuración y la función "enviar carácter" a continuación:
void USARTSetup(){
PORTC.DIRCLR = PIN2_bm; //Set RxD pin as input
PORTC.DIRSET = PIN3_bm; //Set TxD pin as output
PORTC.OUTSET = PIN3_bm; //Set TxD pin high
//The following setup is for a clock of 32MHz
//and a desired baud rate of 19200
USARTD0_BAUDCTRLB = 0xB0; //set B(scale) to -5
USARTD0_BAUDCTRLA = 0xE5; //set BSEL to 3301
USARTD0_BAUDCTRLB |= 0x0C; //set BSEL to 3301
USARTD0_CTRLA = 0x00; //disable USART interrupts
USARTD0_CTRLB = 0x18; //enable receive and transmit
USARTD0_CTRLC = 0x03; //8 data bits, no parity and 1 stop bit
}
void USARTSendByte(UINT8 data){
while(!(USARTD0_STATUS & USART_DREIF_bm)); //wait until DATA buffer is empty
USARTD0_DATA = data; //load data
while(!(USARTD0_STATUS & USART_TXCIF_bm)); //wait until transfer complete
USARTD0_STATUS |= USART_TXCIF_bm; //write 1 to clear bit
}
La depuración parece bloquearse tan pronto como llega a esta parte del código:
while(!(USARTD0_STATUS & USART_TXCIF_bm));
Y nada se envía al hiperterminal.
mi cableado es como se muestra a continuación:
Como se puede ver, he puesto en bucle los pines de intercambio de manos y los pines CTS / RTS.
¿Puede alguien ayudarme a orientarme en la dirección correcta? No tengo idea de por qué no puedo enviar un byte al hiperterminal.