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


von Ampfing (Gast)


Angehängte Dateien:

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

von Christian R. (supachris)


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.

von Ampfing (Gast)


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

von Ampfing (Gast)


Lesenswert?

Hallo,

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

Viele Grüße

von Christian R. (supachris)


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.

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
Noch kein Account? Hier anmelden.