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
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.ä.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.