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


von PeterK (Gast)


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

von Philipp Sªsse (Gast)


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.ä.

von Gerd Laschinski (Gast)


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

von PeterK (Gast)


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

von Rahul (Gast)


Lesenswert?

Als Terminalprogramm bietet sich Comtest von B&B-Electronis an...

von Yopi (Gast)


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.

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.