Hola foreros.
Quiero realizar una comunicación con el MSP430G2553 a través del modo UART en su USCI. Solo necesito mandar datos ASCII al pc, verlos en el hyperterminal. Los comunico con un puerto USB.
Utilizo para debuguear el CCS 5.1.
He programado los registros de la UART con paridad par, un bit de stop y 9600 Baudios.
En el hyperterminal lo mismo 9600 Baudios, paridad par,... ect. También he puesto el número de COM al que se conecta el USB.
Para probar mando la letra A (43Hex en ASCII), pero aunque he comprobado que la carga en el registro UCA0TXBUF para transferir, no me muestra nada en la pantalla del hyperterminal y también según el manual el flag de interrupcion UCA0TXIFG se pondría a 0, cosa que no hace.
Por lo tanto no se si es culpa de la comunicación con el hyperterminal o problema de programación.
Espero vuestras sugerencias.
Esta es parte del programa:
Soy novato en estos temas, seguramente será un fallo tonto, pero no sé verlo...
Os agradezco de antemano vuestra ayuda. Gracias.
Quiero realizar una comunicación con el MSP430G2553 a través del modo UART en su USCI. Solo necesito mandar datos ASCII al pc, verlos en el hyperterminal. Los comunico con un puerto USB.
Utilizo para debuguear el CCS 5.1.
He programado los registros de la UART con paridad par, un bit de stop y 9600 Baudios.
En el hyperterminal lo mismo 9600 Baudios, paridad par,... ect. También he puesto el número de COM al que se conecta el USB.
Para probar mando la letra A (43Hex en ASCII), pero aunque he comprobado que la carga en el registro UCA0TXBUF para transferir, no me muestra nada en la pantalla del hyperterminal y también según el manual el flag de interrupcion UCA0TXIFG se pondría a 0, cosa que no hace.
Por lo tanto no se si es culpa de la comunicación con el hyperterminal o problema de programación.
Espero vuestras sugerencias.
Esta es parte del programa:
Código:
#include "msp430g2553.h"
#define __MSP430_HAS_USCI__
int contador = 0;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
BCSCTL1 = CALBC1_1MHZ; // Set DCO
DCOCTL = CALDCO_1MHZ;
P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
P1SEL2 = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
UCA0CTL0 |= UCPEN + UCPAR; // Selecciono paridad PAR
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 6; // 1MHz 9600
UCA0BR1 = 0; // 1MHz 9600
UCA0MCTL = 0x81;
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
IE2 |= UCA0TXIE; // Enable USCI_A0 TX interrupt
UCA0TXBUF = 'A';
__bis_SR_register(LPM0_bits + GIE); // Enter LPM0, interrupts enabled
}
#pragma vector=USCIAB0TX_VECTOR
__interrupt void USCI0TX_ISR(void)
{
contador = contador+1; //Cuento para saber cuando entra en la ISR
}
Os agradezco de antemano vuestra ayuda. Gracias.
Última edición: