Forum: Mikrocontroller und Digitale Elektronik MSP430 Launchpad (MSP-EXP430G2) TUSB als Uart?


von Holm T. (Gast)


Lesenswert?

Läßt sich der SBW Debugger Teil beim Launchpad als USB-Uart in Richtung 
PC verwenden? Ich habe beim Suchen nichts darüber gefunden, aber im 
Prinzip sollte das doch so funktionieren, oder? (Ich habe mit dem Ding 
noch gar Nichts gemacht, entschuldigt die platte Frage..)

Gruß,

Holm

von Max G. (l0wside) Benutzerseite


Lesenswert?

Habe ich noch nicht gesehen (obwohl ich es gut hätte gebrauchen können, 
habe schon diverse MSP430-Projekte gemacht). Frag mal bei e2e.ti.com 
nach, da sitzen die wahren Experten.

Max

von Hans (Gast)


Lesenswert?

Holm Tiffe schrieb:
> Läßt sich der SBW Debugger Teil beim Launchpad als USB-Uart in Richtung
> PC verwenden?

Muss wohl gehen. Die aufgeflashte App-Note kommuniziert per Softuart 
über diese Schnittstelle mit dem PC. Schau mal in die Sourcen...

von Bernd N (Gast)


Lesenswert?

Das geht, welchen MSP Typ hast du auf dem Board ?

von Bernd N (Gast)


Lesenswert?


von Holm T. (Gast)


Lesenswert?

Ich habe momentan hier nur einen G2231 oder einen G2211, müßte das also 
mit einem Softuart machen. Da ich nur wenige Daten mit 4800 Baud zu 
behandlen habe, sollte das trotzdem funktionieren.

Ich werde mal ausprobieren wie weit ich komme.

Dankeschön,

Holm

von Bernd N. (Gast)


Lesenswert?

Ja, Softuart ist korrekt.
1
/*
2
   Hello World example.
3
   ---- Code 248 Byte ----
4
5
                      MSP430g2231
6
                    --------------
7
          +3,5V  --|DVCC       GND|-- DVSS
8
       rote LED  --|P1.0      P2.6|--
9
            TXD  --|P1.1      P2.7|--
10
                 --|P1.2      TEST|-- TEST/SBWTCK
11
         Taster  --|P1.3     RESET|-- RST/NMI/SBWTDIO
12
                 --|P1.4      P1.7|--
13
                 --|P1.5      P1.6|-- grüne LED
14
                    --------------
15
*/
16
17
#include "msp430g2231.h"
18
#include "inttypes.h"
19
20
#define TXD BIT1                                                  // TXD an P1.1
21
#define BitTime   104                                             // 9600 Baud, SMCLK=1MHz (1MHz/9600)=104
22
23
// globale Variablen
24
uint16_t TXByte;                                                  // TXByte + Start/Stop BIT's
25
26
// Prototypes
27
void putChar (uint8_t c);
28
void printfEasy (const char *s);
29
30
void main (void)
31
{
32
    WDTCTL = WDTPW | WDTHOLD;                                     // Stop WDT
33
    BCSCTL1 = CALBC1_1MHZ;                                        // Set range
34
    DCOCTL = CALDCO_1MHZ;                                         // SMCLK = DCO = 1MHz
35
36
    P1SEL |= TXD;                                                 // TXD connected @ Timer
37
    P1DIR |= TXD;                                                 // als Ausgang
38
39
//  ---- Soft. UART Timer Setup ----
40
    CCTL0 = OUT;                                                  // TXD Idle as Mark = '1'
41
    TACTL = TASSEL_2 | MC_2;                                      // SMCLK, continuous mode
42
43
    __bis_SR_register (GIE);                                      // interrupts enabled
44
45
    printfEasy ("Hello World\n\r");
46
47
    while (1) {}
48
}
49
50
// ---- simple printf ----
51
52
void printfEasy (const char *s)
53
{
54
    while (*s) {
55
        putChar (*s++);
56
    }
57
}
58
59
// TXing a byte
60
void putChar (uint8_t c)
61
{
62
    while (CCTL0 & CCIE);                                         // Warten bis die ISR alle BITs ausgesendet hat
63
    TXByte = 0x200 | (c << 1);                                    // Char + Stop BIT in TXByte einfügen
64
    CCR0 = TAR + 16;
65
    CCTL0 = CCIS0 | OUTMOD0 | CCIE;                               // re-Enable Interrupts, trigger Transmit ISR
66
}
67
68
// Timer A0 interrupt service routine
69
#pragma vector=TIMERA0_VECTOR
70
__interrupt void Timer_A (void)
71
{
72
    if (TXByte) {                                                 // Wenn alle BITs ausgesendet sind...
73
        (TXByte & 1) ? (CCTL0 &= ~ OUTMOD2) : (CCTL0 |= OUTMOD2);
74
        TXByte >>= 1;
75
        CCR0 += BitTime;                                          // BIT Zeit aufaddieren
76
    } else {
77
        CCTL0 &= ~ CCIE;                                          // ...disable interrupt
78
    }
79
}

Anbei der Code.

von Holm T. (Gast)


Lesenswert?

Danke.
Ich werde mich aber wohl weiter kümmern müssen, ich brauche die 16Mhz 
CPU Clock und nicht zu letzt muß ich auch mit der RS232 empfangen 
können.
Außerdem noch SPI mit der USI ..

Mal gucken, habe noch nie einen MSP430 näher behandelt. Das mit den 
Typen scheint mir reichlich unübersichtlich zu sein.

Gruß,

Holm

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.