HTerm empfängt nur Quark von Soft-UART MSP430

Gast #2694787
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?
Gast #2694819
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.
Gast #2695045
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?!
Gast #2695170
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.
Gast #2695324
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
}
Gast #2695329
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.
Gast #2695561
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?
Gast #2695646
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 ...
Gast #2696042
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.
Gast #2696113
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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren