mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik USCI beim MSP430, was mach ich falsch?


Autor: Ampfing (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

mein Programm soll auf einem MSP430-Evalboard laufen und eigentlich nur 
folgendes tun:
Wenn Taster 1 gedrückt wird schreibe '1' auf die serielle Schnittstelle, 
wenn Taster 2 gedrückt wird schreibe '2' auf die serielle Schnittstelle.

Leider verzweifle ich schon an diesem Problem...
Im Anhang findet Ihr meinen Code.
Die beiden Taster hängen am Port 1 (P1.0 und P1.1) und lösen einen 
Interrupt aus. In der ISR frage ich dann, welcher IR ausgelöst wurde und 
schreibe das entsprechende Zeichen in den Transmit-Buffer. Wenn ich 
einen Breakpoint in die Zeile, in der ich in den Buffer schreibe setze 
und im Einzelschritt über diese Zeile drüber gehe zeigt mir 
Hyperterminal das richtige Zeichen an. Wenn ich das Programm normal 
ablaufen lasse werden die Zeichen nicht angezeigt. Auch wenn ich den 
Breakpoint in der ISR habe und nach Erreichen wieder auf 'Go' klicke 
wird das Zeichen nicht vom PC empfangen.
Das Senden in main ist nur zum Testen, diese Zeichen werden aber immer 
richtig  vom PC empfangen!
Ich habe auch schon versucht mit der Baudrate runter zu gehen, hat auch 
nix gebracht.

Ich weiß echt nicht mehr, wo ich noch ansetzen könnte, bitte helft mir.

Danke schonmal vorab und viele Grüße

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kein Wunder, du wartetst ja auch nicht, bis der Sendepuffer wieder frei 
ist. Die CPU ist doch viel schneller als die serielle, da musst du 
zumindest das Flag für den Sendepuffer abfragen.
Lies mal die TI-Beispielcodes.

Autor: Ampfing (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vielen Dank für die schnelle Antwort, aber das ist es leider nicht.
Hatte auch das Warten schon in der ISR (ich weiß, eigentlich keine gute 
Idee, war nur zum Testen)...
Außerdem werden die Zeichen nur gesendet, wenn ich auf einen Taster 
drücke und da bin ich langsamer als die Schnittstelle.

Hast Du vielleicht sonst noch eine Idee?

Viele Grüße

Autor: Ampfing (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

nur wens interessiert, war kein Fehler der USCI, sondern prellende 
Tasten...

Viele Grüße

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...sag ich doch, dass es zu schnell sendet. Würdest du vor jedem Senden 
das Flag pfüfen, könnten auch prellende Tasten nix machen....weil der 
Buffer ja noch nicht leer, wird also gewartet bis leer ist, dann ist ja 
der Int zwischendrin gesperrt.

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.