mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 Bluetooth Probleme mit Datenübertragung


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo liebes Forum,

ich mächte gerne meinen MSP430 mit einem HC-06 Bluetooth-Modul benutzen. 
Der Code ist unten angehängt.
Wenn ich mit meinem Smartphone über die App Bluetooth Terminal ein "A" 
sende, geht die LED an, aber es wird nicht zurück gesendet.
Reicht es nicht UCA0TXBUF = 0x41; zu schreiben? Muss man aktiv die 
Übertragung starten? Im Datenblatt finde ich noch, dass man ein Transmit 
Enable setzen soll (UTXEx) aber weder UTXE0 noch UCA0TXE kennt mein 
compiler.

Beste Grüße,
Martin
#include <msp430g2553.h>
#define TXD BIT2
#define RXD BIT1
unsigned char Rx_Data = 0;          // Byte received via UART

int main(void)
{
  /*** Set-up system clocks ***/
  WDTCTL = WDTPW + WDTHOLD;        // Stop WDT
  if (CALBC1_1MHZ == 0xFF)        // If calibration constant erased
  {
    while (1);                // do not load, trap CPU!
  }
  DCOCTL  = 0;              // Select lowest DCOx and MODx settings
  BCSCTL1 = CALBC1_1MHZ;          // Set DCO
  DCOCTL  = CALDCO_1MHZ;
  /*** Set-up GPIO ***/
  P2DIR = 0xFF;                           // All P2.x outputs
    P2OUT &= 0x00;                          // All P2.x reset
  P1SEL   = RXD + TXD;          // P1.1 = RXD, P1.2=TXD
  P1SEL2  = RXD + TXD;          // P1.1 = RXD, P1.2=TXD
  P1DIR  |= BIT0;              // P1.6 set as output
  P1OUT  &= ~BIT0;            // P1.0 set low
  
  /*** Set-up USCI A ***/
  UCA0CTL1 |= UCSSEL_2;          // SMCLK
  UCA0BR0   = 104;            // 1MHz 9600
  UCA0BR1   = 0;              // 1MHz 9600
  UCA0MCTL  = UCBRS0;            // Modulation UCBRSx = 1
  UCA0CTL1 &= ~UCSWRST;          // Initialize USCI state machine
  IE2      |= UCA0RXIE;          // Enable USCI_A0 RX interrupt
  __bis_SR_register(LPM0_bits + GIE);    // Enter LPM0, interrupts enabled

    while(1)
    {
        switch (Rx_Data)
        {
          case 0x41:              // ON Command
          while (!(IFG2&UCA0TXIFG));      // USCI_A0 TX buffer ready?
        UCA0TXBUF = 0x41;        // Send 8-bit character
        TA0CCTL0 &= ~CCIE;        // Disable Timer0_A interrupts
        P1SEL &= ~BIT6;          // P1.6 selected as GPIO
        P1OUT |= BIT6 + BIT0;      // P1.0 and P1.6 set high
      break;

        default: 
        break;
      }
    __bis_SR_register(LPM0_bits);  // Enter LPM0, interrupts enabled
    }
}

//  USCI A interrupt handler
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
    #pragma vector=USCIAB0RX_VECTOR
    __interrupt void USCI0RX_ISR(void)
#elif defined(__GNUC__)
    void __attribute__ ((interrupt(USCIAB0RX_VECTOR))) USCI0RX_ISR (void)
#else
    #error Compiler not supported!
#endif

{
  Rx_Data = UCA0RXBUF;          // Assign received byte to Rx_Data
  __bic_SR_register_on_exit(LPM0_bits);  // Wake-up CPU
}

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin schrieb:
> Im Datenblatt finde ich noch, dass man ein Transmit Enable setzen soll
> (UTXEx) aber weder UTXE0 noch UCA0TXE kennt mein compiler.

Du solltest Dir den passenden "Family User's Guide" und die passenden 
Sourcecodebeispiele ansehen, das Datenblatt selbst ist sehr knapp 
gehalten.


"MSP430x2xx Family User's Guide"
http://www.ti.com/lit/pdf/slau144

"MSP430G2x53, MSP430G2x33, MSP430G2x13, MSP430G2x03 Code Examples"
http://www.ti.com/lit/zip/slac485


In den Codebeispielen findest Du die Ansteuerung und Initialisierung der 
seriellen Schnittstelle (USCI_A) des 'G2553.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Cool danke! Jetzt bekomme ich es zumindest hin, dass irgendwas gesendet 
wird :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.