HTerm empfängt nur Quark von Soft-UART MSP430

Gast #2694787
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
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 #2694973
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?!
Angehängte Dateien:
Gast #2695045
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
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
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
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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.