mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP und 2x UART IE


Autor: Ahnungsloser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich wollte mal eine Grundsätzliche Frage zum MSP430 stellen, ich bin mir 
nämlich nicht sicher wie in diesem Beispiel ein MSP reagieren wird:

Der MSP hat ja zwei voneinander unabhängige UARTs, wenn nun zeitgleich 
mit beiden UARTs Daten empfangen werden, welcher wird dann priorisiert? 
bzw. was passiert wenn ich gerade in der Interruptroutine des einen Uart 
bin, und es kommt der Interrupt des anderen UARTs - normaler Weise 
müsste der MSP doch zuerst die Interruptroutine des einen UART fertig 
abarbeiten und dann in den zweiten springen, richtig?
Kann da "etwas" verloren gehen?
Wie sieht es aus wenn in den Interrupt sperre und währenddessen wird im 
UART etwas empfangen - springt das Programm dann sofort nach wieder 
erfolgent Freigabe in den Interrupt oder habe ich dieses empfangene Byte 
dann verloren weil der IE ja gesperrt war?

anke für Eure Hilfe

Autor: Jörg S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> wenn nun zeitgleich mit beiden UARTs Daten empfangen werden, welcher
> wird dann priorisiert?
UART0 hat wesentlich höhere Priorität gegenüber UART1 (siehe Datenblatt 
S.13)

> normaler Weise müsste der MSP doch zuerst die Interruptroutine des
> einen UART fertig abarbeiten und dann in den zweiten springen, richtig?
Normalerweise müsste der Interrupt mit der höheren Priorität den 
Interrupt unterbrechen.

> Wie sieht es aus wenn in den Interrupt sperre und währenddessen wird im
> UART etwas empfangen - springt das Programm dann sofort nach wieder
> erfolgent Freigabe in den Interrupt oder habe ich dieses empfangene Byte
> dann verloren weil der IE ja gesperrt war?
Er wird hinspringen, aber ob was verlohren gegangen ist, ist eine ganz 
andere Frage.

Autor: Ahnungsloser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Er wird hinspringen, aber ob was verlohren gegangen ist, ist eine ganz
> andere Frage.

Es ist also durchaus möglich, dass etwas verloren geht, wenn ich während 
eines gesperrten IE etwas im UART empfange?

Ich muss dazu sagen dass ich den IE vielleicht für 300µs sperre - bei 
190kb können das im worst case auch mehrere Bytes sein die in dieser 
Zeit rein kommen - nach Freigabe des IE ist ja logischer Weise nur das 
letze Byte noch vorhanden - kann vlt. hier etwas schief gehen wenn schon 
Daten im Empfangsregister sind und dieses noch nicht ausgelesen wurde, 
bevor neue Daten empfangen werden?

Autor: Jörg S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Daten reinkommen und das Empfangsregister noch nicht ausgelesen 
wurde, wird das natürlich gnadenlos überschrieben.

Autor: Ahnungsloser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja ist klar, aber kann es sein dass was verloren geht?

Autor: Ahnungsloser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
achso, bevor mißverständnisse aufkommen - mit verloren gehen meine ich, 
dass das zuletzt empfangene Byt doch immer korrekt im register stehen 
muss.
Klar, wenn das vorhergehende Byt mit dem aktuellen überschrieben wird, 
ist es weg, aber das aktuelle Byte MUSS dann doch richtig im buffer 
stehen, oder?

Autor: Jörg S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Davon würde ich ausgehen. Am besten noch mal im User Guide nachlesen. Da 
sollte sowas eigentlich auch drin stehen.

Autor: Jan Förster (eisbaer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hast Du noch I/O Pins zur freien Verfügung über? Dann könntest Du ja 
eine Hardware-Flow-Control realisieren sofern die Gegenstelle über 
soetwas verfügt. Während die eine Interrupt-Routine läuft wird die 
andere serielle Schnittstelle per RTS auf "Senden nicht erlaubt" gesetzt 
und erst am Ende der Interroupt-Routine wird das Senden wieder frei 
gegeben.

Jan!

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.