RS232 Problem mit PIC

Gast #362849
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.
Gast #362853
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
Gast #362855
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.
#362860
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.
Gast #362861
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.
Gast #362862
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.

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