Forum: Mikrocontroller und Digitale Elektronik Wordsalat bei beim auslesen von U0RXBUF


von Neki (Gast)


Lesenswert?

Hallo Leute,

ich benutze den MSP430f149, der chip hängt hinter einem Empfängerchip
(IA4320) die Datenübertragung funktioniert soweit.
Es kommen auch die Daten an die gesendet werden. Das Problem liegt
darin das die Wortreihenfolge nicht stimmt. Ich sende AAAA8E2A.
Ankommen tut allerdings AAAA2AE8 und diverse andere Wort kombinationen,
das AAAA ist immer an der richtigen stelle nur die zweiten 16 Bit werden
wild Durchgetauscht.
Es scheint so, dass der MSP430 einen 16 Bit grossen Empfangspuffer hat,
der als Ring angeordnet ist und beim auslesen des 8 Bit grossen Rx -
Puffers wird, der Freigewordene Teil wieder voll geschrieben ....
zumindest bilde ich mir das ein ..... bin für jeden Tipp dankbar ...

Gruß Neki

von Neki (Gast)


Lesenswert?

Ach ja vielleicht wär'a auch ganz Sinvoll über meine nähere
Vorgehensweise zu Berichten :-).

Also ich benutze die IAR - IDE und Programmiere in C.

Ich lese den Puffer über die 8 Bit Variable U0RXBUF (Adresse 0x0076)
aus.

von Sebastian (Gast)


Lesenswert?

Guck dir doch mal meine USART-Tutorials auf www.mathar.com an, die
helfen dir vielleicht. Was soll U0RXBUF sein? Bei mir heisst der Buffer
RXBUF0 bzw. RXBUF1 (für USART0 bzw. USART1). Der Buffer packt jeweils
genau ein Zeichen (also ein Byte), und zwar bei Benutzung der
Interrupts so lange, bis du es ausliest. Machst du dein Empfangen
Interrupt-basiert?

von Neki (Gast)


Lesenswert?

Im IAR heißt der Buffer U0RXBUF, ja ich polle auf den Interrupt,
jedesmal wenn der Interrupt auslöst lese ich das Zeichen in einen
Ringpuffer von wo aus ich die Daten weiterverarbeite. Zumindest ist das
der Plan. Danke für den Link werde mir die Seite gleich mal ansehen.

von Benedikt (Gast)


Lesenswert?

Ob AA oder AA rauskommt, ist ja wohl egal.
Vermutlich liegt der Fehler irgendwo im Ringpuffer wo dann High und Low
Byte verwechselt werden.

von Neki (Gast)


Lesenswert?

Die Preamble ist nicht das problem es ist aber schon nen problem wenn
statt 8E2A 2A8E rauskommt. Den Ringpuffer hab ich zurzeit
auskommentiert ich schreibe die Ergebnisse direkt in ain Array, mache
danach nen Memory dump um zu sehen was empfangen wurde.

von Neki (Gast)


Lesenswert?

Ich hab das Problem gefunden, hin und wieder ist es einfacher als man
denkt.
Es war ein reines Anzeigeproblem des Memorydumps, ich hab mir den
Memorydump im 16-Bit Format angesehen. Im 8 - Format stimmt wieder
alles :-).

Das zeigt mal wieder alles reine Ansichtssache :-).

Danke für eure Unterstützung ..... und Entschuldigt meine Dusseligkeit
...

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.