com-port ansteuern
Peter
- programmiertechnik
0 Reiner0 Der Martin
0 Reiner
Hallo,
Ich möchte einen seriellen Port abfragen, bzw. sobald auf einen der pins strom gelegt wird soll eine routine starten. Nun will ich aber keine endlosschleife die solange durchläuft bis da was kommt sondern das ganze vielleicht irgendwie eleganter über interrupts lösen, , geht das ? kann mir da jemand helfen wie ich sowas angehe ?
Danke
Peter
Hallo,
Ich möchte einen seriellen Port abfragen, bzw. sobald auf einen der pins strom gelegt wird soll eine routine starten. Nun will ich aber keine endlosschleife die solange durchläuft bis da was kommt sondern das ganze vielleicht irgendwie eleganter über interrupts lösen, , geht das ? kann mir da jemand helfen wie ich sowas angehe ?
zunächst mal bitte Vorsicht. Vielleicht meinst Du es nicht so, aber Strom würde ich an die Pins nicht anlegen! Spannung schon eher und das nur hochohmig, wenn Du Dir nicht sicher bist, was Du machst.
Eine direkte Interruptleitung gibt es am RS232 nicht, aber ich habe keine Ahnung, ob man das dennoch irgendwie maskieren könnte.
Ich habe hier irgendwo noch ein Buch über Hardwarebasteleien (AD/DA-Wandler, Schrittmotorsteuerungen, Transientenrekorder) rumfliegen. Wenn es Dich interessiert, suche ich Dir den Titel mal raus bzw. ISBN. Ist rel. alt (Beispiele in Turbopascal) aber vielleicht interessant?
Viele Grüße,
Reiner
Hallo ihr zwei,
zunächst mal bitte Vorsicht. Vielleicht meinst Du es nicht so, aber Strom würde ich an die Pins nicht anlegen! Spannung schon eher und das nur hochohmig, wenn Du Dir nicht sicher bist, was Du machst.
Guter Einwand, grundsätzlich. Aber eine Spannung von bis zu 15V kannst du gefahrlos direkt an die Pins einer RS232 anlegen. Die Signalpegel sind nämlich mit ±3..15V festgelegt, und da die Eingänge hochohmig sind, begrenzt sich der Eingangsstrom dadurch von selbst. Du solltest nur keine Fremdspannung an die Ausgangspins anlegen - die sind nicht immer kurzschlussfest. :(
Eine direkte Interruptleitung gibt es am RS232 nicht, ...
Das stimmt nicht so ganz. In der klassischen "alten" PC-Architektur hatten die beiden COM-Schnittstellen üblicherweise die Interrupts IRQ4 (COM1) und IRQ3 (COM2) fest zugeordnet. Die heutigen BIOSe und Betriebssysteme sind zwar nicht mehr an diese feste Zuordnung gebunden und könnten sogar mehrere COMs mit einem gemeinsamen Interrupt bedienen. Aber trotzdem bietet die Hardware nach wie vor die Möglichkeit, bei einem "Ereignis" an der COM-Schnittstelle den zugeordneten IRQ auszulösen.
Das "Ereignis" kann -je nach Programmierung des Controllers- beispielsweise der korrekte Empfang eines Zeichens sein, oder auch ein Pegelwechsel an einer Handshakeleitung.
Ich habe hier irgendwo noch ein Buch über Hardwarebasteleien (AD/DA-Wandler, Schrittmotorsteuerungen, Transientenrekorder) rumfliegen. Wenn es Dich interessiert, suche ich Dir den Titel mal raus bzw. ISBN. Ist rel. alt (Beispiele in Turbopascal) aber vielleicht interessant?
Vermutlich ist es das.
Aber um die Beispiele umzusetzen, sollte man möglichst einen älteren Rechner benutzen, die sind meistens etwas robuster, und das macht sich bei solchen Experimenten an der Hardware immer gut.
Außerdem empfiehlt sich für solche Versuche mit hardwarenaher Programmierung ein Uralt-Betriebssystem. Das gute alte DOS hat sich für solche Dinge immer wieder bestens bewährt. Unter modernen Systemen ist es fast unmöglich, direkt auf die Hardware zuzugriefen, wenn man nicht einen eigenen Treiber programmieren will.
Viel Spaß trotz allem,
Martin
Hi,
zunächst mal bitte Vorsicht. Vielleicht meinst Du es nicht so, aber Strom würde ich an die Pins nicht anlegen! Spannung schon eher und das nur hochohmig, wenn Du Dir nicht sicher bist, was Du machst.
Guter Einwand, grundsätzlich. Aber eine Spannung von bis zu 15V kannst du gefahrlos direkt an die Pins einer RS232 anlegen. Die Signalpegel sind nämlich mit ±3..15V festgelegt, und da die Eingänge hochohmig sind, begrenzt sich der Eingangsstrom dadurch von selbst. Du solltest nur keine Fremdspannung an die Ausgangspins anlegen - die sind nicht immer kurzschlussfest. :(
so meinte ich das auch.
Man kann da gerne CMos-Pegel anlegen. Aber wenn jemand davon spricht, Strom reinzuschicken, bekomme ich ein ungutes Gefühl. ;-)
Eine direkte Interruptleitung gibt es am RS232 nicht, ...
Das stimmt nicht so ganz. In der klassischen "alten" PC-Architektur hatten die beiden COM-Schnittstellen üblicherweise die Interrupts IRQ4 (COM1) und IRQ3 (COM2) fest zugeordnet. Die heutigen BIOSe und Betriebssysteme sind zwar nicht mehr an diese feste Zuordnung gebunden und könnten sogar mehrere COMs mit einem gemeinsamen Interrupt bedienen. Aber trotzdem bietet die Hardware nach wie vor die Möglichkeit, bei einem "Ereignis" an der COM-Schnittstelle den zugeordneten IRQ auszulösen.
Das "Ereignis" kann -je nach Programmierung des Controllers- beispielsweise der korrekte Empfang eines Zeichens sein, oder auch ein Pegelwechsel an einer Handshakeleitung.
Ok, aber es gibt keine direkte IRQ-Leitung. Das meinte ich.
Ich habe hier irgendwo noch ein Buch über Hardwarebasteleien (AD/DA-Wandler, Schrittmotorsteuerungen, Transientenrekorder) rumfliegen. Wenn es Dich interessiert, suche ich Dir den Titel mal raus bzw. ISBN. Ist rel. alt (Beispiele in Turbopascal) aber vielleicht interessant?
Vermutlich ist es das.
Aber um die Beispiele umzusetzen, sollte man möglichst einen älteren Rechner benutzen, die sind meistens etwas robuster, und das macht sich bei solchen Experimenten an der Hardware immer gut.
Außerdem empfiehlt sich für solche Versuche mit hardwarenaher Programmierung ein Uralt-Betriebssystem. Das gute alte DOS hat sich für solche Dinge immer wieder bestens bewährt. Unter modernen Systemen ist es fast unmöglich, direkt auf die Hardware zuzugriefen, wenn man nicht einen eigenen Treiber programmieren will.
Ach, ich glaube nicht, daß man da soviel falsch machen kann.
Wenn man sich unsicher ist, nutzt man Optokoppler.
Gruß
Reiner