Zur Zeit arbeite ich gerade an einer seriellen Datenkomunikation zwischen MC80C535 und dem PC. Dabei tritt folgendes Problem auf. Der MC kann Daten an den PC senden (HyperTerminal) aber nicht richtig empfangen. Was das seltsame ist, dass das hoechste Bit beim Wiederholen eines Zeichen jeweils invertiert wird, der Rest wird richtig an den MC uebertragen und verarbeitet. Das Problem muesste am MAX232 liegen, da ich mit einem Counter die Flankenanzahl am Ausgang R1OUT gemessen habe und diese immer um 1 Flanke unterschiedlich war. Mein bisheriges Vorgehen: - Austausch der Elko's; von 2,2µF auf 1µF, danach auf 10µF. Dabei trat immer das gleiche Problem auf. - Untersuchung auf kalte Loetstellen - Leiterbahnenueberpruefung - MAX232 ausgetauscht Koennte es daran liegen, dass ich anstatt den Elkos, Tantalkondens. benutzten sollte? Hat irgendjemand eine Erklaerung fuer dieses Phaenomaen. Fuer jegliche Hilfe waere ich dankbar:-) Chris
Falsches Forum? Tantal-Elkos kannst Du nur mit einer bestimmten Version des MAX232 nutzen (MAX233?). Teste mal, ob an V+ 10 Volt und an V- -10 Volt anliegen. Wenn nicht, dann ist die Ladungspumpe des MAX232 defekt. Dein Problem hört sich nach falscher Baudrate an. Versuche mal die Baudrate etwas höher oder niedriger zu stellen. ciao, Stefan.
dürfte eher ein Problem von Baudratentoleranzen sein. Passenden Quarz (11.0592 statt 12MHz) nehmen, Baudrate korrekt einstellen, fertig. Am MAX232 wird es eher nicht liegen, einfach mal mit einem Zweistrahl-Oszi Ein- und Ausgang darstellen (einen Kanal invertieren). 99:1, dass es daran nicht liegt. Wer setzt 1 Euro?
Danke fuer die schnellen Antworten:-) Die Ladungspumpen sind OK. Es liegen jeweils +10V und -10V an. Beide PC und MC arbeiten mit 9600 Baud. Bei einem Test ohne MC mit 2400 Baud und Endwiderstaenden, habe ich die gleiche fehlerhafte Flankenzahl gehabt. Leider habe ich den Vorschlag von Crazy horse nicht ganz verstanden. Der Quarz hat doch nichts mit dem MAX232 zu tun, der bereits schon am Ausgang (R1OUT) fehlerhafte Flankenzahlen angibt (gemessen mit Counter und Oszilloskop). Ich benuetze einen MAX232N von Reichelt.
Komisch ist allerdings auch, dass die Eingangssignale am R1IN deutlich mehr Flanken aufweisen als am R1OUT. Ich habe am Nullmodemkabel einmal ohne MAX gemessen. (TxD und RxD verbunden und Pin5 auf GND gelegt). Dabei kamen die richtige Anzahl von Flanken.
Also jetzt mal ganz von Grundauf. Zunächst solltest Du Deine Schaltung mal posten. Wo sind da Widerstände drin? Wozu? Sind doch gar nicht notwendig. Weiterhin: Der MAX232 ist ein Pegelwandler, der nix mit Baudrate und sowas zu tun hat. Das einzige was der macht ist TTL-Pegel in RS232-Pegel umzuwandeln und umgekehrt. Der Quarz, den Crazy Horse meint, ist der Quarz am 80C535. Den kannst Du mit einem 11,09irgendwas MHZ-Quarz ersetzen, dann bekommst Du die Baudrate mit 0% Fehler raus. Benutzt Du den 12 MHz Quarz, dann hast Du eine Fehlerhafte Baudrate. Mein Vorschlag zum testen war, die Baudrate ein wenig zu verstellen, indem das Register im 80C535 richtig gesetzt wird. Und wie mißt Du eigentlich Flanken? Mit dem Oszi?
das ist einfach zu verstehen: gewisse Abweichungen von der der Baudrate sind zulässig, aber die dürfen nicht zu gross werden. Synchronisiert wird das ganze mit dem Startbit, üblicherweise erkennt die UART den Beginn des Startbits, tastet nach der halben Bitzeit wieder ab und startet dann das Einlesen des Bytes mit der eigenen Zeitbasis. Sagen wir mal 9600Baud, das bedeutet ~104µs pro Bit, also alle 104µs nach Mitte Startbit wird ein Datenbit eingelesen. Das höchstwertige Bit wird als letztes gesendet, der evtl. vorhandene Zeitfehler hat sich bis dahin verachtfacht und kann je nach Abweichung ausserhalb des Abtastzeitpunktes liegen. Mit "geraden" Quarzfrequenzen kann man aber keine exakten Baudraten programmieren. Weitere mögliche Fehlerquellen: Einstellungen am Terminalprogramm, neben Baudrate sollte auch Anzahl der Datenbits und Stopbits gleich sein. Falls der MAX232 in Wirklichkeit ein HIN232 sein sollte - damit habe ich auch schon allerhand komische Sachen erlebt, die sind alle im Müll gelandet. Gute Erfahrungen hingegen habe ich mit Teilen von TI und ST gemacht. Der MAX202 von ST ist mein Standardbaustein für RS232.
Noch was: Testen kannst du den Treiber recht einfach: vom PC aus: TTL-Seite von Sender und Empfänger zusammenschliessen (ohne MC), vom Terminal gesendete Zeichen kommen auch wieder zurück. Von MC-Seite aus geht das auch, RS232 Rx und Tx brücken. Schleife programmieren, die verschiedene Zeichen ausgibt, gesendetes und empfangenes Zeichen vergleich. So kannst du Baudratenprobleme ausschliessen.
Ich habe jetzt den Treibertest so wie oben beschrieben, d.h. Pin11 und Pin12 des MAX verbunden. Dies hat zu folgendem Ergebnis gefuehrt: Das Zeichen wurde an den PC zurueckgesendet und korrekt ausgegeben. Ich messe nicht mit dem Oszi sondern mit einem extra Counter, der auf fallende Flanken reagiert. Allerdings als ich den Counter zum Messen genommen habe, habe ich folgendes festgestellt: Das es wieder zu diesen Flankenanzahlunregelmaessigkeiten kommt. Einmal eine Flanke mehr und beim naechsten mal wieder eine weniger. Als ich an der Verbindung zwischen Pin11 und Pin12 eine Leitung, die aus einem Widerstand und abschliessendem GND besteht, gehaengt habe, habe ich immer die "richtige" Flankenanzahl erhalten. Meine Fragen: Wieso erkennt der PC, trotz verfaelschter Flankenanzahl das richtige Zeichen? Wieso funktioniert es mit dem Widerstand? Der Sache mit der Oszillatorfrequenz gehe ich auch nochmal nach. Mir fehlt noch der passende Oszi;-(
Ein ausreichend schneller Störimpuls wird vom Zähler erfasst, stört aber die serielle Übertragung nicht, wenn er ausreichend viel kürzer als eine Bitzeit ist. Ein Zähler ist daher an dieser Stelle nicht das geeignete Messinstrument.
du sprichst mir aus dem Herzen :-) Mit dem loop-Test dürfte das Problem eines fehlerhaften Treibers ja eigentlich erledigt sein. Den Euro bitte überweisen:-)
Ok, ich hätte mal schreiben sollen worauf ich setze. Ich habe ja oben geschrieben, daß ich ein Baudratenproblem vermute. Also krieg ich jetzt auch einen Euro. Fragt sich nur von wem. ;-) ciao, Stefan.
Kontrolliere mal die Baudraten-Einstelungen auf beiden Seiten. Hat der PC ev. nur 7 Bit plus Parity eingestellt? Welchen Quarz verwendest Du? Wie crazy horse schon sagte: kleine Timing-Fehler addieren sich. Dafür spricht auch, dass die Übertragung nur in einer Richtung Fehler aufweist. Einen elektrischen Fehler alte ich bei dem Fehlerbld für sehr unwahrscheinlch. Stefan
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.