Forum: Mikrocontroller und Digitale Elektronik RS232-Schnittstellenproblem


von Manfred S. (teletubby)


Lesenswert?

Hallo!
Ich (nicht sonderlich PC-kundig) habe Probleme mit einem Gerät, das an 
die serielle 9-Pin-Schnittstelle eines PC angeschlossen wird, und hoffe, 
dass es jemanden gibt, der mir bei der Lösung helfen kann.
Bei genanntem Gerät handelt es sich um eine Emulatorplatine mit einem 
Motorola-Mikroprozessor vom Typ MC68HC11. Eine 9-Pol-Buchse gibt es 
dort. Nach erfolgreichem Anschluss an einen PC soll es möglich sein, mit 
einem kleinen PC-Programm, das ich habe, z.B. Speicherinhalte des 
MC68HC11 auszulesen.
Wenn ich diese Platine an einen sehr alten PC (MP 386 aus dem Jahr 1989) 
anschließe, funktioniert das auch. Genau so, wie es sein soll. Wenn ich 
dieselbe Platine aber mit demselben Kabel an meinen Haupt-PC (mit 
Pentium 3 Prozessor aus dem Jahr 2001) verbinde und dasselbe Programm 
aufrufe, funktioniert es nicht (Es kommt die Fehlermeldung "Verbindung 
unterbrochen").
Ich schließe daraus, dass sich irgendetwas Wesentliches an den seriellen 
Schnittstellen und/oder der sonstigen Technik, die damit zu tun hat, in 
der Zwischenzeit der Herstellung der beiden Computer geändert haben 
muss. Das möchte ich zu gerne lösen und hoffe sehr darauf, dass es 
jemanden gibt, der mir hier weiterhelfen kann. Das Ziel besteht darin, 
mit der Emulatorplatine über den neueren PC genauso zu kommunizieren zu 
können wie mit dem alten.

Freundliche Grüße
Manfred

von Werner A. (Gast)


Lesenswert?

Das Problem ist eher die PC Software. Früher wurden die Delays häufig 
mit schleifen programmiert. Die läuft heute viel zu schnell ab...

von Sebastian B. (mircobolle)


Lesenswert?

Manfred Schemann wrote:

> Ich schließe daraus, dass sich irgendetwas Wesentliches an den seriellen
> Schnittstellen und/oder der sonstigen Technik, die damit zu tun hat, in
> der Zwischenzeit der Herstellung der beiden Computer geändert haben
> muss. Das möchte ich zu gerne lösen und hoffe sehr darauf, dass es
> jemanden gibt, der mir hier weiterhelfen kann. Das Ziel besteht darin,
> mit der Emulatorplatine über den neueren PC genauso zu kommunizieren zu
> können wie mit dem alten.

Hast du alle Einstellungen der Schnittstelle bei beiden PCs exakt gleich 
konfiguriert?

Sprich:
- Data Bits
- Stop Bits
- Parity
- Baudrate
- Hardware-handshake

Ich vermute mal es ist irgendwas mit dem handshake verfahren. Da 
sonstiges normalerweise immer beachtet wird.

Gruss

von Mano W. (Firma: ---) (manow)


Lesenswert?

Kann es sein, dass Du da zwei verschiedene Windows-Versionen auf den 
PC's hast?

von Manfred S. (teletubby)


Lesenswert?

Hallo und Danke allen, die geantwortet haben.

Ich habe natürlich versucht, für beide PC´s ansonsten gleiche 
Bedingungen zu schaffen. Dazu habe ich mir eine bootfähige Diskette (mit 
DOS 5.0) gemacht und auf dieser weiterhin das Programm zur 
Kontaktaufnahme mit der Emulatorplatine untergebracht. Beide PC´s booten 
tadellos mit dieser Diskette, bei beiden PC´s lässt sich das 
Kontaktaufnahme-Programm (Name: HC11.exe) problemlos aufrufen.
Dennoch funktioniert mit dem älteren PC die Kontaktaufnahme (Meldung: 
Treiber installiert.), mit dem neueren aber leider nicht (Fehlermeldung: 
Verbindung unterbrochen)
Bei dem älteren PC, mit dem es funktioniert, habe ich zu Versuchszwecken 
mit dem "Mode"-Programm den Schnittstelle vielfach umkonfiguriert. Ich 
kann sie verhuddeln, wie ich will: Die Kontaktaufnahme funktioniert 
dennoch. Das hat mich zu der Vermutung gebracht, dass das 
Kontaktaufnahmeprogramm "HC11.exe" die Schnittstelle selbst passend 
konfiguriert. Ob das wirklich so ist, da habe ich keine blasse Ahnung.

Grüße
Manfred

von Sebastian B. (mircobolle)


Lesenswert?

Manfred Schemann wrote:

> Bei dem älteren PC, mit dem es funktioniert, habe ich zu Versuchszwecken
> mit dem "Mode"-Programm den Schnittstelle vielfach umkonfiguriert. Ich
> kann sie verhuddeln, wie ich will: Die Kontaktaufnahme funktioniert
> dennoch. Das hat mich zu der Vermutung gebracht, dass das
> Kontaktaufnahmeprogramm "HC11.exe" die Schnittstelle selbst passend
> konfiguriert. Ob das wirklich so ist, da habe ich keine blasse Ahnung.

Mhm. Ok, also kann man das Betriebssystem schon mal ausschließen.

Schau mal ins BIOS, wie da die verwendete Schnittstelle vom alten 
Rechner konfiguriert ist. Also welcher Hardware-Interrupt wird 
verwendet. Welcher SCI Modus. Das selbe überprüfst du dann beim "neuen" 
Rechner.

Außerdem solltest du auf jeden Fall verifizieren, ob die Schnittstelle 
am neuen Pc grundsätzlich überhaupt funktioniert. Unwahrscheinlich, aber 
ausschließen kann man es nie.

Wie gesagt, BIOS Check wäre jetzt meine Idee.
Ansonsten kann es vielleicht wirklich am unterschiedlichen Timing 
liegen, wobei ich bezweifle, dass jemand wirklich so fahrlässig einen 
Emulator programmiert, der so Plattform abhängig ist.

Gruss

von Manfred S. (teletubby)


Lesenswert?

Hallo Sebastian,
Danke für Deine Antwort.
Verwirrenderweise ist es nicht so, dass es mit dem neueren PC gar nicht 
funktioniert.
Ich habe nämlich bemerkt, dass in dem Moment, in dem die Kontaktaufnahme 
über den ältern PC erfolgreich zustande kommt, die Stromaufnahme der 
Emulatorplatine von 23 mA auf 27 mA steigt. Dieselbe 
Stromaufnahmeänderung gibt es auch über den neueren PC, aber, und jetzt 
wird es noch verwirrender, erst beim zweiten (!!!) Aufruf des 
Kommunikationsprogrammes.
Voraussetzung ist, dass ich zwischen dem ersten und zweiten Ansprechen 
des Emulators nicht (!) dessen Reset-Taste drücke. Dennoch kommt trotz 
des Stromanstieges die Fehlermeldung "Verbindung unterbrochen".
Die Stromaufnahmeänderung ist für mich ein sicheres Zeichen dafür, dass 
das zweifache Aufrufen des Kommunikationsprogrammes für die 
Emulatorplatine nicht völlig folgenlos ist. Eine grundsätzliche 
Kommunikation scheint zu bestehen, die aber durch irgendetwas 
empfindlich gestört ist.
Übrigens habe ich die serielle Schnittstelle des neueren `PC`s mit einer 
alten seriellen Maus getestet. Diese funktioniert tadellos.

Grüße
Manfred

von Sebastian B. (mircobolle)


Lesenswert?

Manfred Schemann wrote:

> Ich habe nämlich bemerkt, dass in dem Moment, in dem die Kontaktaufnahme
> über den ältern PC erfolgreich zustande kommt, die Stromaufnahme der
> Emulatorplatine von 23 mA auf 27 mA steigt. Dieselbe
> Stromaufnahmeänderung gibt es auch über den neueren PC, aber, und jetzt
> wird es noch verwirrender, erst beim zweiten (!!!) Aufruf des
> Kommunikationsprogrammes.
Ist der Anstieg des Stromanstiegs das einzige Indiz, dass für die 
richtige Funktion spricht? Kannst du wenigstens ein paar Steuerkommandos 
an die Platine schicken auf die diese dann reagiert?

> Voraussetzung ist, dass ich zwischen dem ersten und zweiten Ansprechen
> des Emulators nicht (!) dessen Reset-Taste drücke. Dennoch kommt trotz
> des Stromanstieges die Fehlermeldung "Verbindung unterbrochen".
Vielleicht erwartet die Platine (protokollmässig) irgendein Zeichen oder 
Signal auf einer bestimmten Leitung, welche der neue PC vielleicht nicht 
unterstützt? Ich kenne mich mit den älteren Protokoll Standards der 
seriellen Schnittstelle nicht so aus. Handelt es sich denn definitiv um 
RS232 oder um ein sonstiges serielles Protokoll?

Also einen BIOS Check hast du durchgeführt?
Ich verweise mal auf http://de.wikipedia.org/wiki/RS232
Hast du evtl. die Möglichkeit die Signale auf den Pins zu analysieren? 
Z.b. mit einem Oszi?

Dann könntest du so vorgehen, dass du jedes Signal überprüfst, sowohl 
auf dem alten wie dem neuen Rechner. Evtl. unterstützt der neue Rechner 
eine Signalleitung nicht, die der alte Rechner unterstützt.

Nochmal zur Klarstellung: Du baust die Kommunikation mit dem Emulator 
auf: nicht passiert. Du baust die Verbindung ein zweites mal auf: nicht 
passiert, aber der Stromanstieg steigt.

Es wäre interessant zu wissen, was bei diesem Kommunikationsaufbau 
passiert. Aber ohne LOG, Oszi oder Sniffer wird es schwierig.

Grüße
sebastian

von Manfred S. (teletubby)


Lesenswert?

Hallo Sebastian,
vielen Dank für Dein Interesse und Deinen Einsatz.

aus Deine Fragen entnehme ich, dass Du die Sache so verstanden hast, wie 
sie ist. Zu Deinen Fragen im Einzelnen:
1. Ja, die Stromaufnahme ist das einzige Indiz. Wenn dabei die 
Fehlermeldung "Verbindung unterbrochen" einmal da ist, kann man mit dem 
PC nicht mehr auf die Emulatorplatine einwirken.
2. Ob es sich absolut definitiv um eine RS232-Schnittstelle handelt, 
kann ich mangels sicherer Kenntnisse nicht entscheiden. Bei beiden PC`s 
sind die Anschlüsse mit "seriell in-out" gekennzeichnet, bei beiden sind 
es D-Sub-9-Pins Version Stecker, auf die also jeweils die Buchse eines 
Verbindungskabels passt. Bei beiden PC`s funktioniert an den genannten 
Anschlüssen eine unveränderte serielle Maus (diese natürlich mit 
D-Sub-9-Pin Buchse am Ende des Kabels.
3. Im verwendeten Verbindungskabel sind nur vier Leitungen verbunden: 
TXD, RXD (= Pins 2 und 3, diese überkreuzt), die Masse (Pin 5, soweit 
ich mich erinnere) und die Abschirmung. Damit funktioniert es auf dem 
alten PC problemlos.
4. Ein Oszilloskop und die Kenntnisse, es zu bedienen, habe ich.
5. Das, was Du unter "Nochmal zur Klarstellung" geschrieben hast,ist 
genau so: Beim ersten Aufrufen des Programms "HC11.exe" kommt nur die 
Meldung "Verbindung unterbrochen" (beim alten PC: "Treiber installiert." 
mit Änderung der Stromaufnahme). Sonst nichts. Keine Änderung der 
Stromaufnahme. Beim zweiten Aufruf des Programms HC11.exe kommt auch die 
Meldung "Verbindung unterbrochen", aber die Stromaufnahme steigt 
signifikant und jederzeit reproduzierbar an. Voraussetzung dafür ist, 
dass ich zwischen den beiden Programmaufrufen nicht (!!) die Reset-Taste 
des Emulators nicht betätige. Das dürfte daran liegen, dass der Emulator 
andernfalls nach dem Reset den ersten Aufruf wieder vergisst und den 
zweiten wieder als ersten wertet.
Betätige ich nach dem zweiten Programmaufruf (Stromaufnahme ist dabei 
angestiegen) die Reset-Taste des Emulators, fällt die Stromaufnahme 
wieder auf den ursprünglichen Wert ab.
Ich habe noch etwas Weiteres ausprobiert, was zur Analyse des Problems 
interessant sein könnte. Habe das bisher nicht geschrieben, weil das nur 
umständlich zu erklären ist und ich niemanden überfrachten möchte. Ich 
kann noch versuchen, das in Worte zu fassen, tue das aber nur auf 
ausdrücklichen Wunsch.

Herzlichen Gruß
Manfred

von Manfred S. (teletubby)


Lesenswert?

Hallo an alle, die sich mit meinem Problem beschäftigt haben!

Das Problem ist gelöst. Ganz herzlich möchte ich mich für die Hilfe 
bedanken.
Gruß
Manfred

von Sebastian B. (mircobolle)


Lesenswert?

Manfred Schemann wrote:
> Hallo an alle, die sich mit meinem Problem beschäftigt haben!
>
> Das Problem ist gelöst. Ganz herzlich möchte ich mich für die Hilfe
> bedanken.
> Gruß
> Manfred

Hallo Manfred,

jetzt musst du uns aber auch schreiben wieso es jetzt funktioniert. ;-)

Grüße
Sebastian

von Manfred S. (teletubby)


Lesenswert?

Hallo Sebastian,
die Auflösung will ich auf keinen Fall schuldig bleiben.
Ich hatte diese Frage in etwas anderer Formulierung noch ein zweites Mal 
im selben Forum eingestellt. Eigentlich war dieses zweite Mal das erte 
Mal, weil ich die Version mit dem Betreff, in der wir jetzt gerade sind, 
nur irrtümlich eingestellt habe. Sie sollte eigentlich in das Forum 
"PC-Hard- und Software". Aber leider habe ich mich verklickt.
In besagter zweiter Einstellung hat sich jemand gemeldet und mir einen 
Link geschickt. Er führt auf die Internet-Seite 
"www.tec-i.com/WP11.htm". WP11 ist der Name eines Programmes, das exakt 
zu dem Zweck dient, mit Hilfe eines PC`s mit einem Betriebssystem ab 
Windows 95 (ausdrücklich auch erwähnt: Windows 2000 und XP) eine Platine 
mit einer Minimalumgebung für den Prozessor MC68HC11 über die serielle 
Schnittstelle anzusprechen und dann genau das zu machen, was ich möchte: 
Das EEPROM zu löschen und neu zu programmieren.
Dieses Programm habe ich heruntergeladen, auf meinem neueren PC 
installiert und über mein vorhandenes Kabel mit meiner Prozessorplatine 
verbunden.
Es ist kaum zu glauben, aber damit hat es auf Anhieb funktioniert. Nicht 
mal mein Kabel musste ich ändern. Ich habe damit genau die Änderungen 
hinbekommen, um die es mir ging. Man kann das EEPROM zwar leider nur 
komplett löschen (und nicht einzelne Adressen), aber das ist nicht 
schlimm, weil es die Möglichkeit gibt, vorher den gesamten Inhalt in 
einen Buffer zu laden. Dann kann das EEPROM gelöscht werden. Die 
Speicherstellen im Buffer kan man nun nach Herzenslust ändern und dann 
das EEPROM wieder komplett neu programmieren. Führt so zum selben Ziel.
Das anfängliche Problem der Kommunikation mit meinem neueren PC mit der 
Platine über das Programm HC11.exe (das, was wir zuvor ausführlich 
kommuniziert haben), ist weiterhin nicht gelöst. Dessen Lösung ist aber 
nun nicht mehr erforderlich, weil ich dasselbe Ziel auf anderem Weg 
erreicht habe, der es mir zudem noch abnimmt, mich in die Programmierung 
und Assembler einarbeiten zu müssen.
Dir danke ich noch einmal herzlich für Deine Zeit, Dein Interesse und 
Deine Gedanken und wünsche noch einen schönen Sonntagabend.

Herzl. Gruß
Manfred

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.