Forum: Mikrocontroller und Digitale Elektronik HTerm empfängt nur Quark von Soft-UART MSP430


von Speckbauch (Gast)


Lesenswert?

Hallo,

ich verzweifle hier langsam beim Versuch eine UART-Verbindung vom MSP zu 
Windows aufzubauen.
Nehme ich das Programm aus diesem Thread:

Beitrag "MSP430 launchpad TimerA_UART"
Empfängt HTerm angeblich nur Nullen.

Mit dem Code Example
msp430g2xx1_ta_uart9600
Empfängt er beim Starten zwei Sinnlose Werte, aber jedes Mal andere 
(z.B. E9 und F4, D9 und FA. Die Echo-Funktion geht überhaupt nicht.
Bevor ihr fragt: natürlich habe ich an den Quartz gedacht.

Mit der Demo die bei Auslieferung des Launchpad dabei war, schickt er in 
Rascher Abfolge immer wieder FF. Manchmal aber auch gemischt Null und 
Eins.

Ich habe hier auch ein Stellaris LM3S2965-Board. Da geht empfangen und 
Echoen ohne Probleme. Sind für den MSP vielleicht andere Einstellungen 
in HTerm notwendig (Baud niedriger-is klar, habe auch schon alle 
möglichen Bauds ausprobiert)? Realterm bringt die gleichen Ergebnisse.

...Ich glaube das irgendwas treibermäßig nicht stimmt, was meint ihr?

von Hinz (Gast)


Lesenswert?

Nimm ein Oszi und guck dir den Zeichensalat, den dein µC sendet, an. 
Damit kannst du schon mal Bitdauer und Polarität überprüfen.
An HTerm wird es wohl kaum liegen, es sei denn, deine Baudrate stimmt 
nicht.

von Speckbauch (Gast)


Angehängte Dateien:

Lesenswert?

Gute Idee! Hier sind Oszillogramme. Ich habe sie mit dem Code Example 
von TI gemacht und die entsprechenden Werte dort eingesetzt. Die 
übertragenen Werte scheinen zu stimmen, aber die Frequenz... sieht 
irgendwie schneller aus als es sein sollte?!

von Speckbauch (Gast)


Lesenswert?

Also wenn ich mir das genau betrachte überträgt er 8 Bits in ca. 40µs. 
Das entspricht einer Baud von 200.000! Wie kommt der auf so einen hohen 
Wert? Mit dem Code-Example kann was nicht stimmen oder?!

von Stefan (Gast)


Lesenswert?

Speckbauch schrieb:
> Bevor ihr fragt: natürlich habe ich an den Quartz gedacht.

Soweit ich das erkennen kann wir der Quarz nicht benötigt weil ACLK 
nirgends genutzt wird.

Aktivier mal die SMCLK Ausgabe an einem Pin und kontrollier die 
Freuquenz. Oder schau mal nach was im Info Flash an den Stellen 
CALBC1_1MHZ und CALDCO_1MHZ steht.

von Speckbauch (Gast)


Lesenswert?

Ich habs probiert. Mit dem Code aus diesem Thread:
Beitrag "MSP430: SMCLK, MCLK, ACLK messen"

Erhalte an P1.0 (ACLK) und P1.5 (MCLK) gar kein Signal, an P1.4 ein 
Dreieck mit 22 MHz?! Wie ist das nun wieder zu erklären? Ich dachte die 
CPU packt maximal 16 Mhz.

Hier also mein Code:
1
void main(void)
2
{
3
    WDTCTL = WDTPW + WDTHOLD;               // Stop watchdog timer
4
5
    DCOCTL = 0x00;                          // Set DCOCLK to 1MHz
6
    BCSCTL1 = CALBC1_1MHZ;
7
    DCOCTL = CALDCO_1MHZ;
8
    
9
P1SEL = BIT4;       //  xx11 xx1x = Pins werden nicht als I/O
10
                    //              verwendet, sondern als
11
                    //              Peripheral Funktion (ACLK...)
12
13
P1DIR = BIT4;      //  xx11 xx1x
14
                    //         1  = P1.1 = MCLK
15
                    //     1      = P1.4 = SMCLK
16
                    //    1       = P1.5 = ACLK
17
for(;;);
18
19
}

von Speckbauch (Gast)


Lesenswert?

meinte natürlich P1.1 MCLK und P1.5 ACLK...

von ./. (Gast)


Lesenswert?

Sieht nach einem geleerten Info-Flash aus.
Mit 0xFF in den Konstanten kann man die CPU schon auf 22 MHz bringen :-)

Such mal nach DCO-Kalibrator...
Damit kannst Du die Konstanten des Controllers neu kalibrieren.

von Speckbauch (Gast)


Lesenswert?

Ich hab also quasi übertaktet?! Das erklärt einiges. Auch, warum die 
Datenrate so hoch ist. 200000 ist ca. das 22-fache von 9600, weil der 
mit 22 Mhz läuft statt 1 Mhz.

Aber wie ist das geschehen, dass der Flash verändert wurde?

von Jörg S. (joerg-s)


Lesenswert?

Meist ist der Programmierer schuld ;)

von tnzs (Gast)


Lesenswert?

Hmm verwendest Du die IAR Kickstart Version? Falls ja: Da gibt es ein 
Menü: option => FET Debugger => Download. Dort kannst Du einstellen ob 
Flash oder Flash&Info beim Download gelöscht werden...vielleicht trifft 
letzeres bei Dir zu ...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

tnzs schrieb:
> Dort kannst Du einstellen ob
> Flash oder Flash&Info beim Download gelöscht werden

Das aber darf die Kalibrierdaten im Infomemory nicht löschen; die Page 
im Infomemory, wo die untergebracht sind, ist auch gegen einfaches 
Überschreiben geschützt.

von Stefan (Gast)


Lesenswert?

Wenn bei den Optionen den Haken bei "Allow erase/write access to locked 
flash memory" gesetzt ist kann auch das normaleweise schreibgeschützte 
Segment mit den Kaslibrierdaten ohne weitere Sicherheitsabfragen 
gelöscht werden.


Speckbauch schrieb:
> Erhalte an P1.0 (ACLK) und P1.5 (MCLK) gar kein Signal, an P1.4 ein
> Dreieck mit 22 MHz?! Wie ist das nun wieder zu erklären? Ich dachte die
> CPU packt maximal 16 Mhz.

Speckbauch schrieb:
> meinte natürlich P1.1 MCLK und P1.5 ACLK...

Bei den auf das Launchpad passenden Mikrocontrollern wie z.B. 
MSP430G2231 oder G2553 kann MCLK nicht an einem Portpin ausgegeben 
werden. ACLK kann an P1.0 ausgegeben werden, P1SEl und P1DIR müssen 
natürlich passend gesetzt werden.

von tnzr (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> tnzs schrieb:
>> Dort kannst Du einstellen ob
>> Flash oder Flash&Info beim Download gelöscht werden
>
> Das aber darf die Kalibrierdaten im Infomemory nicht löschen; die Page
> im Infomemory, wo die untergebracht sind, ist auch gegen einfaches
> Überschreiben geschützt.

Nö, der löscht hemmungslos das gesamte Infoflash..wenn du das 
auswählst...schon mehrfach passiert. Aber mit dem passenden Ti bzw. 
ElpotronicTool kannst du den MSP neu kalibriern und die Werte im Info 
ablegen...

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.