www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RS232 Problem mit PIC


Autor: Tom Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tom Müller (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, Dateianhang hatte ich irgendwie vergessen. Naja, hier ist er!

Autor: Chief Brady (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sende mal eine 31... was empfängst du dann?

Autor: Henrik (Gast)
Datum:

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

Autor: Chief Brady (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Chief Brady (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Tom Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Chief Brady (Gast)
Datum:

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

Autor: Tom Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ab cd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Chief Brady (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tom Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tom Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.