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.
Sind denn die Transferraten auf beiden Seiten gleich? Also z.B 19200, 8N1.
... 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
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.
Parity OFF bei HyperTerminal? Was für ein Datum siehst du denn am Oszi, wenn du periodich immer den selben wert sendest?
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.
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?
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.
> 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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.