www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP 430 Launchpad TX, printfEasy


Autor: Bernd N (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

im Anhang findet sich ein kleines C Programm welches "Hello World" mit 
einer Baudrate von 9600 an den Launchpad USB/COM Port sendet. Ein 
ähnliches Beispiel findet sich im Netz und ich habe es lediglich ein 
wenig umgeschrieben.

Wird der Taster auf dem Board gedrückt so toggeln die LED's und hello 
world wird ausgegeben, soweit so gut.

Setze ich die Ausgabe von Hello World in die while Schleife dann sind 
die ersten 30 Zeichen nicht in Ordnung, nach Neustart des 
Terminalprogramms ist es ok. Setze ich die Ausgabe in "main" (vor dem 
endless loop) dann kommt nur Schrott heraus.

Kann es sein das der Oscillator im Startmoment nicht auf der richtigen 
Frequenz ist ? aber selbst wenn ich 1 Sekunde warte passiert es genauso. 
Verwendet man die Ausgabe innerhalb des Tasteninterrupts dann gehts.

Wäre schön wenn jemand eine Idee dazu hat.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab mir jetzt deine Timer-UART nicht genauer angeschaut, aber 
anscheinend funktioniert sie ja zumindest teilweise...

>Setze ich die Ausgabe in "main" (vor dem
>endless loop) dann kommt nur Schrott heraus.
Kann ja auch nur ein einziges Mal ausgeführt werden, danach ist der µC 
ja in der Endlosschleife!

>Setze ich die Ausgabe von Hello World in die while Schleife dann sind
>die ersten 30 Zeichen nicht in Ordnung...
Ich habe "Bauchschmerzen, weil:
1.) Du den Taster per IRQ abfrägst, ohne zu Entprellen.
2.) Du in der ISR das GIE-Bit erneut setzt und damit verschachtelte IRQs
    zulässt, was mit hoher Wahrscheinlichkeit zu unvorhergesehenen
    Effekten führen wird!

Autor: Bernd N (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stefan,

Bauchschmerzen brauchst du keine haben :-) ich bin mir deiner 
Anmerkungen voll bewußt :-)

Der Code, insbersondere die Timerklamotte ist ein Beispiel von TI, 
logisch das vor "while" das Ganze nur einmal ausgeführt wird aber 
dennoch sollte es an der Stelle funktionieren.

>> Hab mir jetzt deine Timer-UART nicht genauer angeschaut, aber
>> anscheinend funktioniert sie ja zumindest teilweise...

Hatte gehofft das sich jemand genau diesen Teil anschaut :-) ja, im 
Prinzip funktioniert es.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd N schrieb:
> Bauchschmerzen brauchst du keine haben :-) ich bin mir deiner
> Anmerkungen voll bewußt :-)

Dann korrigiere halt erstmal den Teil des Codes, der offensichtlich 
Probleme macht / machen kann!
Oder verwendest Du einen Taster, der per Hardware bereits entprellt ist?
Und warum muss GIE innerhalb der ISR wieder gesetzt werden, was willst 
Du damit erreichen?

Autor: Bernd N (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaub du verstehst mich falsch, ich will gar keinen Taster. Ich 
möchte lediglich Daten am TX Pin so ausgeben das es funktioniert.

Vielleicht ein bischen mehr zu mir, die TI MC's sind neu für mich aber 
Programme schreiben kann ich schon ne ganze Weile :-) der Code ist ein 
Beispiel von TI und ich frage mich warum dieser nicht richtig 
funktioniert. Besser gesagt, die Tasterklamotte ist ebenso von TI und da 
ich jetzt ein wenig mit dem Code gespielt habe ist mir oben genanntes 
Verhalten aufgefallen.

Wenns ne vernünftige UART wäre dann wärs ja einfach, das ist ein Timer 
gefummel um 9600 Baud hinzubekommen.

Interessant ist, es funktioniert bedingt aber eben nicht korrekt und 
daher die Frage, kann es sein das der Osci ne Einschwingzeit braucht und 
ja, wie prüfe ich ob die CLK auch genau tickt.

Versteh mich nicht falsch, ich hatte die Erwartungshaltung das Beispiele 
vom Hersteller funktionieren und da die MSP's für mich neu sind frag ich 
halt.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd N schrieb:
> Ich glaub du verstehst mich falsch, ich will gar keinen Taster. Ich
> möchte lediglich Daten am TX Pin so ausgeben das es funktioniert.
Nun gut. Ich hatte verstanden, du willst TX'en, wenn der Taster gedrückt 
wird. Dann solltest Du den aber auch entprellen!

> Vielleicht ein bischen mehr zu mir, die TI MC's sind neu für mich aber
> Programme schreiben kann ich schon ne ganze Weile :-) der Code ist ein
> Beispiel von TI und ich frage mich warum dieser nicht richtig
> funktioniert. Besser gesagt, die Tasterklamotte ist ebenso von TI und da
> ich jetzt ein wenig mit dem Code gespielt habe ist mir oben genanntes
> Verhalten aufgefallen.
Auch OK :-)
Aber ich kann mir ehrlich gesagt nicht vorstellen, dass TI in einem 
Bsp-Code z.B. GIE innerhalb einer ISR setzt...

> Interessant ist, es funktioniert bedingt aber eben nicht korrekt und
> daher die Frage, kann es sein das der Osci ne Einschwingzeit braucht und
> ja, wie prüfe ich ob die CLK auch genau tickt.
Du hast ja selbst gesagt, dass auch ein Delay von 1s nicht geholfen hat.
Normalerweise ist der DCO recht fix eingeschwungen.
Testen kannst Du das, indem Du Dir SMCLK an P1.4 ausgeben lässt (P1SEL 
u. P1DIR entsprechend setzen). GGf. Divider für SMCLK beachten!

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag (aus'm Datenblatt):
The internal DCO provides a fast turn-on clock source and stabilizes in 
less than 1μs.

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.