Hallo! Letzte Woche habe ich darüber nachgedacht und mir ist keine zufriedenstellende Erklärung eingefallen. Ich weiß wie ein Relais oder ein Transistor funktioniert, doch folgendes kann ich mir nicht erklären: Bei beiden muss, damit sie durchschalten ein "Aktivierungsstrom" angelegt werden. Wo wird dieser jedoch zugeschaltet? Von einem anderen Schalter? Wenn ja, lässt sich diese Problematik beliebig weiterführen. Es wäre schön, wenn ihr mir das Anhand des folgenden Beispiels erklären könntet: Ich klicke am PC auf einen Knopf, der mir an einer angeschlossenen Schaltmatrix ein Relais schließt. Wie geschieht der Übergang von der Software des PC´s zur Hardware? Das dann gesendete Siganal läuft über einen Bus und schaltet dann (ggf. mit Signalverstärkung das Relais der Matrix, das verstehe ich. Vielen Dank!
Du nimmst beispielsweise einen USB-Chip, der dir erlaubt seine Pins als Ein-/Ausgänge zu verwenden und der z.B.über eine DLL angesprochen werden kann. Den Chip verbaust du auf eine Platine zusammen mit dem Relais, und am Rechner programmierst du eine Software, die per DLL dem USB-Chip mitteilt, ob er das Relais an- oder abschalten soll. Fertig. Ralf
Jonas schrieb: > das Relais der Matrix die Matrix muhaha!! Der PC besitzt meines Wissens keine GPIO-Pins. Nimm doch so einen Mikrocontroller, wie der hier überall angepriesen wird. Den sprichst du dann über eine serielle Schnittstelle an, und dann : µControllerpin schaltet Transistor schaltet Relais schaltet Schütz schaltet Motor
Hallo Ralf, danke erstmal! Die Vorgehensweise ist mir klar, es geht mir nur um das Verständnis. Die gesamte Kette lautet ja: Ich drücke den Ein-Schalter des PCs. Er fährt hoch (tausende Transistoren in der CPU erledigen das). Wie genau funktioniert jetzt die Kommunikation der Software mit der Hardware? Ich drücke mit der Maus auf den Knopf (z. B. Relais ein), dahinter ist der Code versteckt, der das Relais setzt. Von mir aus über Befehle, die von der Programmiersprache/dem OS abhängen. Aber selbst wenn dann z. B. der Befehl von der Software kommt: Bestrome Ausgang 1 kann ich mir nicht vorstellen, wie dies tatsächlich von statten geht. Um es auf den punkt zu bringen: Wie schafft es die Software einen Schalter zu setzen? Ich hoffe, du entdeckst die Lücke in meiner Denkweise :)
Noch mal :) Der Aufbau steht, mir geht es nur um das Verständnis :)
Ich denke Du solltest Dir ein Buch über Rechnerarchitektur besorgen. Deine Frage bezeichnet Deine völlige Ahnungslosigkeit und die kann hier keiner mit Hilfe von ein paar Sätzen beseitigen.
Aktiviere ich (ganz vereinfacht ausgedrückt) mit der Maus den ersten Transistor, über den Zeiger werden die "Koordinaten" der Maus ausgelesen und das OS weiß somit wo und welche Aktion ausgeführt werden soll?
> Der PC besitzt meines Wissens keine GPIO-Pins.
Früher™ hat man dafür die parallele Schnittstelle verwendet ;)
Gruß
Roland
Dazu musst Du lernen, was in einer CPU genau von Statten geht. Alles andere ist verschwendete Zeit
> Aber selbst wenn dann z. B. der Befehl von der Software kommt: Bestrome > Ausgang 1 kann ich mir nicht vorstellen, wie dies tatsächlich von > statten geht. > > Um es auf den punkt zu bringen: > > Wie schafft es die Software einen Schalter zu setzen? Antwort: Gar nicht. Die Software macht das nicht. Genauso wie das oben aufgeführte "bestrome Ausgang 1". Was die Software macht ist, nach dem Mausklick per DLL dem USB-Hub zu signalisieren, dass der an ihn angeschlossene USB-Chip einen bestimmten (von der DLL vordefinierten) Datensatz erhalten soll. Dieser Datensatz setzt im USB-Chip ein Bit -> aus Sicht der SW wird also nur ein Bit gesetzt. Dieses Bit ist im Chip mit einem Transistor verbunden, dieser mit einem Pin, dieser wieder mit einem (stärkeren) Transistor und der mit dem Relais, wobei dieses auch noch mit der Versorgung verbunden sein muss. Richtig "bestromen" ist also nur durch den USB-Chip möglich, der PC selbst schickt nur Daten über eine Schnittstelle. Hmmmm.... Besser? Ralf
Ich glaube ihr habt recht. Ich habe mir vorher über genau diesen Schritt noch keine Gedanken gemacht. Wie das dann mit der Messkette etc. funktioniert verstehe ich schon, doch wie ihr schon gesagt habt, dazu muss ich die Funktionsweise und Vorgänge eines Rechners genauer verstehen. Danke jedenfalls!
der TO hat anscheind noch nicht verstanden wie ein PC funktioniert.
> Wie schafft es die Software einen Schalter zu setzen?
Ganz einfach: Sie tute es nicht.
Dein Denkfehler ist, anzunehmen, die Software würde initial was tun. Dem
ist nicht so, denn das kann sie nicht. Der Prozess beginnt mit dem
einschalten der Hardware.
Der Prozessor spult sein fest verdrahtetes Programm ab und holt sich im
BIOS seine Grunddaten (aka die Grundschaltung). Damit hat er die
Grundlage geschaffen, sein Betriebsprogramm zu starten (aka zu booten).
Nun läuft das normale Programm: Der Prozessor wartet auf Eingaben und
schaltet Transistoren wenn Du auf den Knopf drückst. Diese werden
verstärkt und schalten das Relais.
Das ist alles sehr vereinfacht, aber der Grundtenor sollte klar sein:
Die Software selbst tut nix, sie ist nur der "Verdrahtungsplan" für die
Hardware
Jonas schrieb: > Wie schafft es die Software einen Schalter zu setzen? Das schafft sie nicht. Dafür ist sie viel zu "weich". :-) Gruss Harald
Hi, Es gibt keine Software. Die Software ist nur eine Art "Blickwinkel" (Abstraktionsweise) mit der man die Hardware betrachtet. In "Wirklichkeit" existiert nur Hardware.
Philosoph schrieb: > Es gibt keine Software. Die Software ist nur eine Art "Blickwinkel" > (Abstraktionsweise) mit der man die Hardware betrachtet. > In "Wirklichkeit" existiert nur Hardware. So kurz und doch so falsch;-) Möglicherweise ist es ja auch so, das die Software bestimmt wie die Hardware sich verhalten soll...
Philosoph schrieb: > Es gibt keine Software. ...und was ist das? :-) http://upload.wikimedia.org/wikipedia/commons/a/a6/Flyvende_puter.jpg Gruss Harald
> ...und was ist das? :-) > http://upload.wikimedia.org/wikipedia/commons/a/a6... Das ist ebenfalls Hardware. Nur die Tatsache, dass wir uns selber so hart vorkommen, lässt die Kissen weich erscheinen. ^^ > So kurz und doch so falsch;-) Ja und Nein. Der Blickwinkel bestimmt richtig und falsch. Wenn man eine Festplatte anguckt, dann findet man zunächst mal nur Hardware (Atome). Lediglich unser Gehirn kommt durch eine Analyse der Strukturierung dieser Hardware auf die Idee zwischen Hardware und Software zu trennen und somit eine weitere Abstraktionsebene einzuführen, welche sich "Software" nennt.
Hallo! Letzte Woche habe ich darüber nachgedacht und mir ist keine zufriedenstellende Erklärung eingefallen. Ich weiß wie ein Auto oder ein Fahrrad funktioniert, doch folgendes kann ich mir nicht erklären: Bei beiden muss, damit sie fahren eine Kraft aufgewendet werden. Wo kommt diese her? Von einem anderen Planeten? Wenn ja, lässt sich diese Problematik beliebig weiterführen. Es wäre schön, wenn ihr mir das Anhand des folgenden Beispiels erklären könntet: Ich sitze auf einem Fahrrad. Es fängt von alleine an zu rollen. Wie geschieht der Übergang von der Strasse zu den Rädern? Wenn sich das Rad dreht, dann rollt das Fahrrad, das verstehe ich. Vielen Dank!
Jonas schrieb: [...] > Aber selbst wenn dann z. B. der Befehl von der Software kommt: Bestrome > Ausgang 1 kann ich mir nicht vorstellen, wie dies tatsächlich von > statten geht. > > Um es auf den punkt zu bringen: > > Wie schafft es die Software einen Schalter zu setzen? [...] Hardware wird in den Speicher "eingeblendet". Was der Hauptspeicher, also RAM ist wirst du wissen. Das dieser aus Transistoren aufgebaut ist die sich einen Wert merken können wirst du ebenfalls wissen. Das man in diesem RAM gezielt bestimmte Segmente beschreiben bzw. lesen kann (Adresse) weisst du wahrscheinlich auch. Der Adressbereich eines Computers oder µC umfasst aber nicht nur das RAM sondern auch Hardware. Auf einem Atmel ATMega48 zum Beispiel liegt der Port D an der Speicheradresse 0x0B. Schreibe ich dort mit Software einen Wert hin, z.B. binär 00000010 so schaltet der Ausgang PD1 auf "high". (OK, im Detail müssen dazu noch ein paar weitere Bedingungen erfüllt sein, das muß dich im Moment aber nicht stören). Technisch erreicht wird das indem an dieser Speicheradresse keine Transistoren sitzen die sich etwas merken, sondern solche die etwas schalten. Ich hoffe ich habe dein Problem erfasst und mich halbwegs verständlich ausgedrückt. Gruß f
Johannes schrieb: > Der PC besitzt meines Wissens keine GPIO-Pins. Sehr weise Erkenntnis. Deshalb spricht man von dem Ding im PC auch von einem Mikroprozessor. Hätte er GPIOs, wäere es ein Microcontroller.
J.T.K. schrieb: > Sehr weise Erkenntnis. Deshalb spricht man von dem Ding im PC auch von > einem Mikroprozessor. Hätte er GPIOs, wäere es ein Microcontroller. Humbug. Im PC steckt ein Prozessor. Prozessoren dürfen auch GPIOs haben, schau dich ruhig mal in der Embedded/Linux-Welt um.
Jonas schrieb: > Wie geschieht der Übergang von der Software des PC´s zur Hardware? ISBN 155860491X Computer Organization & Design - The Hardware/Software Interface. Absolut empfehlenswert! Und falls dir das nicht tief genug geht: ISBN 0130907723 Digital Design
Beispiel für einen alten PC mit 8086 Prozessor und parallelem Durckeranschluss: In Pascal: Port[$378]:= 1; Port[$378]:= 0; In C: outb(1,0x378); outb(0,0x378); In Assembler: MOV DX,0378H MOV AL,1 OUT DX,AL MOV AL,0 OUT DX,AL In Basic: OUT &H378, 1 OUT &H378, 0 Der (Intel 8086) Prozessor gibt zunächst die Adresse 0x378 auf seinen Adress/Daten-Bus aus und sendet einen Adress-Latch Impuls. Dann gibt er den Daten-Wert auf seinem Adress/Daten-Bus aus (also 0 oder 1) und setzt den Memory/IO Ausgang auf Low, um zu signalisieren, daß er auf I/O Module zugreifen will. Dann sendet er einen Write-Impuls. Der Prozessor hat also für Zugriff auf I/O Ports und Arbeitsspeicher separate Befehle. Am Adress/Daten-Bus befindet sich ein D-Latch für die Adresse, ein Adress-Decoder, und ein zweites D-Latch für die Daten. Der Adress-Latch Impuls des Prozessors lädt die Adresse in das Adress-Latch. An dessen Ausgang befindet sich eine Logikschaltung, die erkennt, ob die Adresse 0x378 geladen wurde. Wenn ja, dann erlaubt der Adress-Decoder die Weiterleitung des folgenden Write-Impulses an das Daten-Latch. Dieses lädt dann die Daten. Die Augänge des Daten-Latch stehen am Parallel-Port Pin 2-9 zur Verfügung. Beim Wert 1 geht der Pin2 des Steckers auf High, bei einer 0 geht er aus Low. Aktuelle PC's haben natürlich hoch integrierte Chipsätze, das Funktionsprinzip bleibt jedoch gleich. Der Prozessor hat spezielle Befehle, um auf I/O Baugruppen zuzugreifen. Es gibt daher zwei Adressräume: einen für den Arbeitsspeicher und einen für I/O Baugruppen. Beispiel Schaltplan: http://www.elektronik-kompendium.de/public/arnerossius/schaltungen/fuerpc/postcard.png Dieser Schaltplan zeigt eine I/O Schnittstellen-Karte für IBM PC. Sie besteht nur aus primitiven Logik-IC's. Links unten ist der ISA-Bus. Das Adress-Latch Register befindet sich auf dem Mainboard (zwischen CPU und ISA-Bus) und ist daher in diesem Schaltplan nicht zu finden. Unten in der Mitte siehst Du den Adress-Decoder. Bei einer ganz bestimmten Adresse leitet er den Write (IOW) Impuls an das Daten-Latch weiter (IC3 CLK Pin). Der Ausgang dieses Daten-Latches ist mit einem 7-Segment Anzeige verbunden, die den Wert des Daten-Bytes hexadezimal anzeigt. Anstelle dieser Anzeige könntest Du an die Ausgänge von IC3 auch Transistoren und Relaises anschließen. Es gibt auch Mikroprozessoren mit nur einem Adressraum. Zum Beispiel könnten die ersten 1GB für I/O Baugruppen reserviert sein, und danach folgen Adressen für RAM. Diese Prozessoren haben für I/O keine besonderen Befehle und sie haben auch keinen Memory/IO Ausgang. Bei diesen Prozessoren würdest du auf den I/O Port zugrifen, indem Du einfach etwas an seine Adresse sendest: byte* zeiger=0x378; *zeiger=1; *zeiger=1; Beantwortet das Deine Frage?
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.