Parityfehler-Erkennung MSP430

Gast #868515
Lesenswert?

hi!

momentan bastle ich an einem rs485-koppler. über schalter kann man u.a. 
parity anpassen (ja/nein ; even/odd).

jetzt zur frage: ist der msp430f1611 in der lage parityfehler in 
irgendeiner weise zu detektieren, oder muss das von hand zu fuß gemacht 
werden?
wenn vom bus daten mit parity kommen und der schalter am koppler auf 
"parity aus" steht, soll das mit einer led als fehler angezeigt werden.
Gast #868520
Lesenswert?

Hallo,

habe ich zwar noch nicht gemacht, allerdings hat er MSP430F1611 eine 
automatische Paritygeneration (PEV Bit - UxCTL).

Die Fehlererkennung wird im Kapitel: Automatic Error Detection Seite 
13-8 User Guide. Das PE Bit zeigt demnach einen Parity Error an.

mfg Alex
Gast #868576
Lesenswert?

So ich hab das mal getestet (mit RS232 Treiber, UART-Mode) und alles 
läuft wie es soll...aber irgendwie wird das PE bit nicht gesetzt.

Also am MSP ist PENA auf 0 gesetzt , über HTerm schicke ich Daten mit 
"Parity even". Am Empfänger steht Parity auf none. Natürlich kommt beim 
Empfänger nur Müll an, aber das PE bit in UxRCTL wird nicht gesetzt.
Hier mal die entsprechende Codezeile:

if ((U0RCTL & PE) || (U1RCTL & PE))
    {
     P5OUT |= 0x01;                    //Parityfehler-LED
    }

Im Users Guide findet man bei PE : "When PENA = 0, PE is read as 0."
Was will mir das sagen? Arbeite zum ersten Mal mit einem Mikrocontroller 
und bin deshalb noch sehr unerfahren solche Informationen zu deuten.;-)
Gast #868590
Lesenswert?

Hab gerade noch etwas merkwürdiges festgestellt:

Gleiche Einstellungen wie oben beschrieben.
Wenn ich "hallo" mit parity even sende kommt "ha" an, wenn ich mit 
parity odd sende kommt "llo" an.
Für die Buchstaben die nicht ankommen wird kein RX-Interrupt ausgelöst. 
Kann mir das jemand erklären? Es wird doch trotzdem in RXBUF 
geschrieben, auch wenn die Parity nicht stimmt. Es müsste doch zumindest 
ein Interrupt ausgelöst werden und irgendwas beim Empfänger ankommen.
Gast #868595
Lesenswert?

> Also am MSP ist PENA auf 0 gesetzt , über HTerm schicke ich Daten mit
> "Parity even". Am Empfänger steht Parity auf none. Natürlich kommt beim
> Empfänger nur Müll an, aber das PE bit in UxRCTL wird nicht gesetzt.
Wenn am MSP die Parity ausgeschaltet ist, kann es auch kein Parity Error 
geben. Eigentlich logisch, oder?
Gast #868602
Lesenswert?

> wenn vom bus daten mit parity kommen und der schalter am koppler auf
> "parity aus" steht, soll das mit einer led als fehler angezeigt werden.
Man kann nicht 100%ig erkennen ob die Daten die gesendet wurden stimmen 
oder nicht. UART ist halt asynchron, d.h. man ist darauf angewiesen das 
Sender und Empfänger identisch eingestellt sind. Sind sie es nicht, kann 
man evt. Fehler erkennen (Parity Error, Framing Error) das ist aber 
Zufall und hängt von den Daten ab die reinkommen.
Gast #868609
Lesenswert?

Das Problem mit den ausbleibenden Interrupts lag einfach nur daran, dass 
URXEIE nicht initialisiert war. Noch ein dummer Anfängerfehler. Sorry!

@Jörg:
Hmm ok. Also wenn der MSP auf even steht und odd reinbekommt wird PE 
jetzt auch gesetzt. Umgekehrt geht auch. Danke für die Hilfe!
#2776306
Lesenswert?

Der Thread ist zwar uralt beschreibt aber genau mein Problem, daher 
möchte ich ihn nochmal aufgreifen.
Das Nachrichtenprotokoll was ich verwende benutzt "Parity Odd". Eines 
der Bytes innerhalb dieser Nachricht hat eine manipulierte Parity. Diese 
muss erkannt werden.
Leider erhalte ich kein Interrupt wenn ich Bytes mit fehlerhafter parity 
bekomme. Also genauso wie der Kollege vor mir.
Interrupts sind aber eingeschaltet. Die ganze Kommunikation funktioniert 
soweit.
Nur erhalte ich kein Parity Error wenn ich ein byte mit even parity 
sende und kann somit auch keinen Fehler zurückliefern.

  U1CTL = CHAR | PENA; /*!<  8bits, odd parity, one stop bit */

geprüft wird auf

  if (URCTL1 & PE)

Bin auch nur für interesannte Gedankenansätze dankbar.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren