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 :)
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?
> 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!
> 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
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...
> ...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?