Forum: Mikrocontroller und Digitale Elektronik RS232 Problem mit PIC


von Tom Müller (Gast)


Lesenswert?

Hallo User;
Ich habe ein Programm für den PIC 16F690 geschrieben, mit dem eine
RS232 Kommunikation durch das Setzen des Pegels eines Ausgangsports
hergestellt wird.
Ich übergebe einer Funktion eine Variable mit einem Zahlenwert zwische
0 und 15. Dieser Zahlenwert soll dann mit RS232 an den PC gesendet
werden. Es kommt aber beim PC nicht der Zahlenwert an, sondern immer
ein falsches Zeichen.

Der Programmcode ist im Anhang.
Der Wert der Variable count wird Bitweise durch die Funktion send_byte
verschickt. Kann hier der Fehler liegen? Habe schon verchiedene andere
Varianten durchprobiert, aber nichts hilft.

Gesendet wird von 1 bis 15, und Hyperterminal empfängt folgendes:
?~}>|{=zy<x Irgendwie klappt die Bitzuordnung nicht.
Ich hoffe einer von Euch hat einen Tipp parat.
Gruss an alle User.

von Tom Müller (Gast)


Angehängte Dateien:

Lesenswert?

Sorry, Dateianhang hatte ich irgendwie vergessen. Naja, hier ist er!

von Chief Brady (Gast)


Lesenswert?

Sende mal eine 31... was empfängst du dann?

von Henrik (Gast)


Lesenswert?

Sind denn die Transferraten auf beiden Seiten gleich? Also z.B 19200,
8N1.

von Chief Brady (Gast)


Lesenswert?

... ich meine natürlich 31(hex) = 49(dez). Wenn du in HyperTemninal die
Zeichen "1", "2", "3", .. sehen willst, must du die entprechenden
ASCII-Werte senden. Siehe www.wikipedia.de/wiki/ASCII-Tabelle

von Chief Brady (Gast)


Lesenswert?


von Tom Müller (Gast)


Lesenswert?

Hi Chief Brady,
Wenn ich eine 31hex an die Variable count übergebe, dann empfängt er
ein kleines g. Sollte ja eigentlich eine 1 sein. Genau das ist das
Problem. Die empfangenen Werte entsprechen nicht dem gesendeten Wert.

An Henrik
Die Transferaten sind gleich. Das Zeitregime für RS232 ist auch in
Ordnung, habe das mit Oszi geprüft.

von Chief Brady (Gast)


Lesenswert?

Parity OFF bei HyperTerminal?
Was für ein Datum siehst du denn am Oszi, wenn du periodich immer den
selben wert sendest?

von Tom Müller (Gast)


Lesenswert?

Parität steht bei KEINE.
Meinst Du mit Datum die Sendezeit für ein Bit? Wenn ja, die beträgt
106µs. Das liegt bei 9600 Baud inerhalb der zulässigen Toleranz.

von ab cd (Gast)


Lesenswert?

Free ''Bray-terminal'' runterladen ..ist dem Hyperterminal
vorzuziehen.Dank Mehrfachanzeige der Daten kommst Du schneller ans
Ziel.Bist Du sicher,dass die Baudrate stimmt? sicher?

von Chief Brady (Gast)


Lesenswert?

Datum ist das Singular (=Einzahl) von Daten.

Ich meinte, was siehst du auf dem Oszi für ein Signal (Bitfolge)?
Hierzu am besten immer denselben Wert "unendlich" oft senden.

von Karl heinz B. (kbucheg)


Lesenswert?

> Das Zeitregime für RS232 ist auch in
> Ordnung, habe das mit Oszi geprüft.

Das ist mit Sicherhiet nicht in Ordnung, sonst würde
es ja funktionieren. qed

Hmm
'1'   0x31     binär   0011 0001
'g'   0x67     binär   0110 0111

Das sieht so aus als ob dein Timing ein kleines bischen
zu kurz wäre, mit etwas gutem Willen könnte man im High-Byte
den dadurch 'verschobenen' 3-er als 6-er wiedererkennen. Aus den 3
folgenden 0-en werden durch zu kurzes Timing nur noch 2.
Die restlichen 2 1-er könnten vom Stoppbit kommen.

Probier doch mal andere Bitmuster aus und vergleiche
auf Bitebene was du schickst und was der Empfänger
empfängt.
Oder spring ins kalte Wassser und mach das Timing etwas länger.

von Tom Müller (Gast)


Lesenswert?

Dank erstmal für die reichliche Hinweise.
Werde mal etwas probieren,melde mich dann wieder.

Datum ist die Einzahl von Daten, man lernt immer was Neues. Muss ich
mal meinem Info- Prof. erzählen.

Der Bray Terminal ist wirklich um Welten besser als Hyperterminal.

von Tom Müller (Gast)


Lesenswert?

Ich hab mal etwas rumprobiert, aber noch keine weiteren Fortschritte
erzielt. Ich habe mal die Empfangenen Daten in Binär in das WORD
Dokument geschrieben.
Wenns so nebeneinander steht siehts wirklich wie verschoben aus. Ich
probier als nächstes das Ändern des Zeitregimes.

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.