www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RS232 Problem-Bitte um Hilfe


Autor: PeterK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich weiß keinen Rat mehr und bitte um Hilfe:
Habe einen ATMega 16 und will nun zum ersten Mal über RS232 Daten mit
dem PC austauschen.
Die PC-Schnittstelle und das Nullmodemkabel ist i.O. - habe 2 PCs damit
verbunden und es ausprobiert.
Am ATMega16 mit ext. 16 Mhz Quarz habe ich den MAx232 wie üblich
beschaltet und in Bascom folgendes Programm geschrieben:

---------------------------------------------------------------
$regfile = "m16def.dat"
$crystal = 16000000
$baud = 19200


Config Lcd = 20 * 4
Config Lcdmode = Port
Config Lcdbus = 4
Dim Name As String * 10
Enable Interrupts
Cls

'Goto Empfangen
Goto Senden

Empfangen:
Config Serialin = Buffered , Size = 20
Lcd "Empfangen"
Do
   Name = Inkey()
   If Err = 0 Then
      Lcd Name
   End If
Loop


Senden:
Config Serialout = Buffered , Size = 20
Lcd "Senden"
Print "Sendetest"
Do
   Print "test"
   waitms 100
Loop

End

---------------------------------------------------------------

Habe es auch mal mit 4800 oder 19200 Baud probiert: nix. Beim PC kommt
nichts an, noch nicht mal Müll. Umgekehrt ebenfalls: Will ich
empfangen, kommt beim ATMega nichts an. Bei "Goto Empfangen" bzw.
"Goto "senden wird natürlich je nach Bedarf der Kommentar
gesetzt/entfernt.

Die Fuse steht auf 1111:1111 also externer Quarz
Hat jemand eine Idee? Im Terminalprogramm habe ich 8 bit, 1 Stoppbit,
keine Parity eingestellt.

Habe mal mein Oszilloskop angeschlossen: Bei 19200 Baud erkenne ich auf
der RS232 Leitung die pro Sekunde gesendeten 4 Zeichen als ein ca. 3ms
langes Signal wieder. 4 Zeichen müssten doch bei 19200 baud und 8 bit/1
Stoppbit 4x9=36 bit bedeuten oder? Bei 19200 bit/sek macht das 1/533 sek
oder ca. 2ms.

Hat jemand eine Idee, wo ich noch nachsehen müsste? Ich habe keine Idee
mehr.
Danke
PeterK

Autor: Philipp Sªsse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei der Berechnung der Übertragungszeit nicht das Startbit und etwas
Abstand zwischen den Zeichen vergessen, kommt also schon hin.

Das Programm lese ich also gar nicht erst, der Fehler muß anderswo
liegen: wenn da etwas mit RS232-Pegeln auf der Leitung liegt, ist ganz
egal, wie das aussehen mag: irgendetwas passiert im Terminalprogramm.

Wo hast Du mit dem Oszi gemessen? Am besten direkt zwischen Pin 2 und
Pin 5 des Kabelendes, das in den PC kommt. Wenn da etwas zwischen x
Volt und - x Volt passiert, muß der PC mindestens Unsinn empfangen.
Ansonsten den Signalweg zwischen dort und oben erwähnter Meßstelle
nachvollziehen.

Oft ist es wirklich nur ein ganz dämlicher Fehler, daß man -- trotz
doppelter Kontrolle -- eben doch TX auf TX angeschlossen hat o.ä.

Autor: Gerd Laschinski (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

habe auch keinen Fehler gefunden. Probier doch mal die Zeile "Config
Serialout = buffered ..." herauszunehmen.

Halt, da ist noch was:

Du verwendest ein Nullmodemkabel, d.h. du verwendest kein STK.
Wie hast Du denn TX und RX auf dem SUB-D Stecker/Buchse belegt?
Du könntest Pin2 und Pin3 vertauscht haben.

Gruß
Gerd

Autor: PeterK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
yo, Problem beseitigt. Es gab zwei Probleme:

1) die Buchse am Max232 war bereits gekreuzt beschaltet, so dass ein
Nullmodem-Kabel nicht funktionieren konnte - ich brauchte also ein 1:1
Kabel. Toll, extra Nullmodem-Kabel gekauft. Grrr.

Nun konnte ich zwar Daten vom ATmega senden, aber der ATMega weigerte
sich standhaft welche zu empfangen. Wenn ich aber den RX-Eingang des
Max232 mal mit einem Kabel (5 Volt) "gekitzelt" hatte, zeigte der
ATMega plötzlich empfangene Daten an.

Das führte mich dann schnell zu Problem 2:
Das Terminalprogramm am PC schickte gar keine Daten. Es gab dort keine
Einstellung den Handshake abzuschalten und somit schickte das Programm
auch erst gar keine Daten (ohne mich darüber zu informieren).
Also dann doch mal das verhasste Hyperterminal gestartet und siehe da:
alles klappt einwandfrei.

Nochmals Danke an Gerd und Phillip für den Tipp mit dem Nullmodemkabel
/ bzw. Tx-Tx.

PeterK

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als Terminalprogramm bietet sich Comtest von B&B-Electronis an...

Autor: Yopi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Am besten ist es, ihr fasst das mal ordentlich Schritt für Schritt
zusammen und schreibt mal ein kleines Tutorial, indem die ganzen
Fallstricke ausdrücklich erwähnt werden.

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.