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.
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!
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.
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?
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.
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!
Nachtrag (aus'm Datenblatt): The internal DCO provides a fast turn-on clock source and stabilizes in less than 1μs.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.