www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Allgemeine Frage zu µCs: wie funktionieren die eigentlich?


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Seit kurzem beschäftige ich mich mit µControllern. Dieses Forum is da 
echt ne Hilfe.
Jetzt hab ich abedr mal ein paar Fragen:

1. Haben µC's auch ein BIOS oder so etwas?
2. Wie geht das eigentlich, dass der µC weiss, bei welchen Befehl er 
etwas tun muss? Denn ein Stückchen Silizium is ja alleinen noch nicht 
schlau?! Irgendwie muss da ja noch die "Seele" rein? Wie geht das genau? 
Denn nur durch die .hex Datei weiss er ja noch nicht, was er wann genau 
machen muss?
3. Wie weiss zb. die CPU im Computer welche Daten sie wie verarbeiten 
muss und auf welchen pin's sie was ausgeben muss? Genau das selbe bei 
sämtlichen Signalprozessoren.

Vllt. könntet ihr mir diese Fragen beantworten, denn ich hab da schon 
lange drüber nachgedacht, aber keine befriedigende Antwort gefunden.
Wenn die Antworten allzu blöd sind, einfach ignorieren oder trotzdem 
beantworten ;-)

Grüße!

Autor: Doc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. Nein.
2. Doch, die "Hex" Datei ist das Programm, das er abarbeitet.
3. Dafür ist das Programm da.

Autor: Gastantworter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. Nein.
2. Doch.
3. CPUs sind schlau.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Prozessor hat eine ALU, dort werden Berechnungen und logische 
Verknüpfungen ausgeführt. Und ein Prozessor hat einen "Speichermanager", 
der immer den nächsten (passenden) Befehl aus dem Programmspeicher holt. 
Und diese Befehle werden schrittweise von der ALU abgearbeitet.

> Denn nur durch die .hex Datei weiss er ja noch nicht, was er wann genau
> machen muss?
Doch, denn dort drin stehen die Maschinencodes, die der uC schrittweise 
abarbeitet.


Sieh dir mal sowas an:
http://www.realschule.bayern.de/lehrer/dokumente/u...
Als Tipp: Mach das Schritt für Schritt durch. Mach mit dem nächsten 
Schritt erst weiter, wenn du den vorigen kapiert hast. Mit "überfliegen" 
wirst du das nie kapieren.

Autor: Stephan M. (stephanm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast schrieb:
> 1. Haben µC's auch ein BIOS oder so etwas?

Es gibt Microcontroller mit eingebautem Bootloader, das entspricht wohl 
am ehesten Deiner Vorstellung. Der Begriff BIOS stammt aus dem 
PC-Bereich, war auch eher zu DOS-Zeiten sehr aktuell und dient heute 
mehr oder weniger nur noch dazu, die PC-Hardware so weit zu bringen, 
dass das Betriebssystem starten kann.

Früher (DOS-Ära) waren im BIOS z.T. reichhaltige Funktionen 
implementiert, heute hat sich das ziemlich in Richtung anderer Techniken 
verschoben (z.B. ACPI), auch wenn z.B. manche Grafikkarten noch immer 
ein eigenes BIOS mitbringen und die dort sitzenden Funktionen 
tatsächlich noch nützlich sind.

> 2. Wie geht das eigentlich, dass der µC weiss, bei welchen Befehl er
> etwas tun muss?

Abstrakt: Der µC ist ein endlicher Automat.

> Denn ein Stückchen Silizium is ja alleinen noch nicht
> schlau?!

Vgl. Halbleiterfertigung. Die Evolutionsschritte kurz und knapp sind in 
Etwa folgende: Bringe  einem Stück Silizium bei, sich wie ein Transistor 
zu verhalten -> Baue einfache Grundelemente digitaler Logik (Gatter) aus 
integrierten Transistoren -> Verschalte die Gatter zu einem digitalen 
Schaltwerk (da sind wir wieder beim endlichen Automaten) -> fertig.

> Denn nur durch die .hex Datei weiss er ja noch nicht, was er wann genau
> machen muss?

Eigentlich schon. Versuch mal die Turing-Maschine zu verstehen. Das Ding 
kann alles, was heutige Computer auch können, sie ist aber im Gegensatz 
zum Standard-Desktop-PC einfach und leicht verständlich aufgebaut :-)

> 3. Wie weiss zb. die CPU im Computer welche Daten sie wie verarbeiten
> muss und auf welchen pin's sie was ausgeben muss? Genau das selbe bei
> sämtlichen Signalprozessoren.

Das gibt "das Programm" vor, was auch immer "das Programm" ist.

> Vllt. könntet ihr mir diese Fragen beantworten, denn ich hab da schon
> lange drüber nachgedacht, aber keine befriedigende Antwort gefunden.
> Wenn die Antworten allzu blöd sind, einfach ignorieren oder trotzdem
> beantworten ;-)

Je nachdem wie tief Du da einsteigen möchtest gibt es mehr oder weniger 
oberflächliche bzw. tiefschürfende Literatur. Mit einem Buch über 
digitale Logik anzufangen ist sicherlich nicht ganz verkehrt, manche 
ältere Bücher enthalten in den letzten Kapiteln sogar einige Ausblicke, 
die zeigen, wie einfache Prozessoren realisiert werden können. Wenn man 
die Kapitel davor verstanden und verinnerlicht hat, sind diese Inhalte 
dann meist völlig problemlos verständlich.

Viel Erfolg,

Stephan

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Danke schonmal für die ganzen tollen Antworten!

EIn bisschen mehr blicke ich da schon durch;-).

EIn Transistor ist ja ein vergleichsweise einfaches Bauteil. Ein µC sind 
ja eigentlich auch nur recht viele Transistorn und ein paar Wiederstände 
und so.
Aber ein Transistor kann doch auch keine Programme verarbeiten?

EIn .hex sind ja nur Nummern, oder? Und woher weiss der µC dann, was er 
damit machen muss?

grüße!

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast schrieb:

> Aber ein Transistor kann doch auch keine Programme verarbeiten?

Den 1-Transistor-Computer hat auch noch keiner erfunden. Unterhalb von 
einigen Tausend wird das nix.

Autor: Doc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>EIn .hex sind ja nur Nummern, oder? Und woher weiss der µC dann, was er
damit machen muss?

Vereinfacht kanst Du dir das so vorstellen, daß jede Nummer ein Befehl 
ist.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke am einfachsten kann man das verstehen, wenn man bedenkt wie 
sich das alles entwickelt hat.
Ausgangspunkt ist der mechanische Webstuhl.

Solche Webstühle hatten eine Besonderheit:
An einer Stelle ist etwas durchgelaufen, was man heute als Lochstreifen 
bezeichnen würde. Das Band ist in Zeilen unterteilt und in jeder Zeile 
können mehrere Löcher angebracht sein.

Läuft das Band durch, dann tastet eine Einheit die jeweilige Zeile ab. 
Je nachdem, ob dort ein Loch vorhanden ist oder nicht, werden im 
Webstuhl bestimmte Schaltvorgänge ausgelöst oder auch nicht. Die Löcher 
sorgen also einfach nur dafür, dass zb bestimmte Fäden angehoben werden, 
andere wieder nicht, dass die Feder ausgelöst wird die das Schiffchen 
von einer Seite zur anderen schiesst etc. Du hast die Idee dahinter 
hoffentlich verstanden :-)


In einem µC passiert im Grunde auch nichts anders.
Die Zahl, die aus dem Programmspeicher gelesen wird, sorgt einfach nur 
dafür, dass im µC bestimmte Verbindungen geschaltet werden.
ZB. gibt es dort einen Addierer mit jeweils 2 8 Bit Eingängen (Aufgebaut 
aus ganz normalen Gatterschaltungen). Weiters gibt es Speicherzellen 
(wir nennen sie Register) und ein Bussystem auf das alle diese 
Komponenten aufgeschaltet werden können.
Eine ganz bestimmte Zahl ist zb so geformt, dass ihre 1 Bits das 
Register A auf den Bus schaltet, der beim Addierer an dem einen Eingang 
ankommt. Ein anderes 1 Bit in dieser Zahl sorgt dafür dass das Register 
H auf einen anderen Verbindungsbus geschaltet wird, der am anderen 
Eingang des Addierers mündet. Und dann gibt es noch einen drittes 1 Bit 
in der Steuerzahl sorgt dafür, dass ein drittes Register C mit dem 
Ausgang des Addierers verbunden wird.

Alles in allem hat daher diese Steuerzahl die Eigenschaft, dass der Wert 
aus dem Register A mit dem Wert aus dem Register H addiert wird und das 
Ergebnis in Register C abgelegt wird.

Eine andere Steuerzahl stellt wieder andere Verbindungen her, aber das 
Prinzip ist das gleiche. Die Steuerzahl (wir nennen sie OpCode) sorgt 
dafür, dass in der CPU bestimmte Verbindungen hergestellt werden und 
bestimmte Abläufe vor sich gehen.

Nun, so war das einmal. Heutzutage ist das alles in klein wenig 
komplizierter aber wenn man nicht ganz genau hinschaut, stimmt das 
Modell immer noch :-)

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Buchtipp:

Rainer Klar, Digitale Rechenautomaten. Eine Einführung in die Struktur 
von Computerhardware.

Autor: Doc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Vereinfacht kanst Du dir das so vorstellen, daß jede Nummer ein Befehl
>ist.

Aber woher weiss der µC, welche Nummer welcher Befehl ist?


Grüße!

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wiederstände ...
... sind da garantiert keine verbaut. Wenn, dann wären das Widerstände 
;-)

> Aber woher weiss der µC, welche Nummer welcher Befehl ist?
Das ist in ihm fest verschaltet.
Hast du die Papier-CPU schon durchgespielt?   :-/

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hat der Entwickler vorher eben so in den µC eingepflanzt.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Gast (Gast)

>Aber woher weiss der µC, welche Nummer welcher Befehl ist?

Das ist fest ins Silizium in Form von Logikschaltungen und "Tabellen" 
(ROM) einprogrammiert.

MfG
Falk

Autor: Stefan K. (stefan1971)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich stell's mir so vor:
Es ist eine Art Schlüssel-Schloss-Prinzip. Ein Schloss "weiss" auch 
nicht, welcher Schlüssel zu ihm passt. Wenn es sich mechanisch fügt, 
passt der Schlüssel eben und eine Tür öffnet sich aufgrund wohlfeil 
konstruierter Mechanik. Evtl. läuft das beim Decodieren eines OpCodes in 
der CPU -mit elektronischen Mitteln umgesetzt- vergleichbar ab?!

Autor: Gott (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Mikrokontoller drinnen sitzen viele kleine Männchen die die Hex Datei 
abackern...

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Das Papiercomputer Prinzip, hab ich verstanden. Aber woher zur Hölle, 
weiss der µC, was die Daten im Programmspeicher bedeuten? Und wie kann 
der das Lesen?
Ich nehme an, bei der Programmierung wandelt der µC die .Hex schon in 
passende ein und aus zustände der Sepicherzellen? Aber wie wurde das bei 
der Herstellung in den Speicher programmiert, dass der µC weiss, was die 
einzelnen Zustände bedeuten? Um das zu verstehen braucht der µC doch 
auch sowas wie einen basis Bootloader, der die Porgramme lädt und einen 
Interpreter für die .hex hat? Hat eine CPU im Computer eine 
Firmware/Bios?

>> Wiederstände ...
>... sind da garantiert keine verbaut. Wenn, dann wären das Widerstände
>;-)

Verflixt... immer der selbe Fehler :-( Naja, kann sich ja noch ändern, 
das mit den Widerständen ;-)

Grüße!

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Stephan M.
Verschone bitte die Welt mit Deinem gefährlichen Halbwissen! Was hat ein 
BIOS mit einem Bootloader zu tun? usw. usw.

@ Gast
Google 'mal nach "von Neumann Architektur".

Autor: Bernd Wiebus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Gast.

> 2. Wie geht das eigentlich, dass der µC weiss, bei welchen Befehl er
> etwas tun muss? Denn ein Stückchen Silizium is ja alleinen noch nicht
> schlau?!

Der Computer hat einige "fest" verdrahtete Transistor Verschaltungen, 
die schon bei der Herstellung entstehen, und die er nach dem Programm 
eben halt abarbeitet.

Das sind in erster Linie arithmetische Operationen, z.B. addieren, 
subtrahieren, Logisch UND, logisch-ODER und Schiebeoperationen, und 
Speicheroperationen. Du könntest das als "Seele" bezeichen. Die 
allerallereinfachsten Controller kennen noch nicht einmals eine 
Multiplikation und Division, so wie Du sie kennst. Sie können aber ein 
Byte jeweils ein Bit nach links oder rechts verschieben, was einer 
Multiplikation oder Division mit 2 entspricht. Damit kann man, 
vorausgesetzt man hat genug Speicher, alle Rechenarten aus dem Gymnasium 
nachbilden. :-)



> Irgendwie muss da ja noch die "Seele" rein? Wie geht das genau?

Du meinst jetzt das Programm, nicht?
Das ist von Ausführung zu Ausführung verschieben. Grob gesagt, man 
schaltet den Controller ein, legt an eine bestimmte Stelle eine 
Spannung, dann weiss er, das er jetzt programmiert wird, und benutzt 
diese Spannung auch als Energiequelle beim Programmieren, Eventuell 
braucht er noch ein Taktsignal. Dann kommen auf einer Leitung die 
Signale des Programmes zum Schreiben bittweise an. Manche Controller 
können sogar Handshakebetrieb und Rückmeldungen machen anbieten. Aber es 
geht eben auch ganz einfach. PIC12 Serie z.B. oder 8051er


> Denn nur durch die .hex Datei weiss er ja noch nicht, was er wann genau
> machen muss?

Wie gesagt, er hat schon eine gewisse "Grundintelligenz" oder 
"Instinkt". Das langt, um das Programm hineinzubekommen und 
abzuarbeiten.


Andere, etwas esoterische Erklärung, die Leuten mit hoher 
Glaubensfähigkeit deutlich entgegenkommt:
Das ganze geht mit Magie und Hexerei. Darum heissen die Programme ja 
auch "Hex"-files. Im Controller verwandeln sie sich in kleine Dämonen, 
die in den Controllern sitzen, mit Spannung gefüttert werden und durch 
Stromstösse gezwungen werden, ihre Aufgaben zu erfüllen. Es ist wichtig, 
das die Controller ganz dicht sind. Der Dämon kann durch feine Risse als 
Rauchwolke entweichen. Ist der Rauch erstmal aus dem Controller 
herausgekommen, geht nichts mehr, wir bezeichnen den Controller dann als 
kaputt. :-)

Mit freundlichem Gruß: Bernd Wiebus alias dl1eic

http://www.dl0dg.de

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Bernd Wiebus

Instinkt?

Autor: Noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kann das wahrscheinlich nicht gut erklären, aber ich glaube der 
erste nach dem Moderator zu sein, der deine Frage so richtig 
durchschaut, weil ich mir das schon oft selbst überlegt habe. Ich würde 
mich daher freuen, wenn jemand meine Ausführungen berichtigt.

Wissen tut da gar nichts. Das sind alles Transistorschaltungen, die 
gerade einen bestimmten Pegel (1 oder 0) haben. Das Programm wird auch 
in Transistoren gespeichert. Wie eine Liste.

1001
1010
1110
0100
0110

Das heißt, für jedes Programm-Bit (Und ein Befehl besteht ja aus 
mehreren) gibt es eine Transistorstufe. Wieder eine andere 
Transistorschaltung XY tastet die erste, dann die zweite, dann die 
dritte, ... Zeile ab. Logikschaltungen greifen wiederum den Zustand 
dieser ab und sorgen dann dafür, dass immer etwas anderes passiert (r16 
und r17 auf den Addierer schalten, Addierer wieder auf r18 umlenken, 
also auch wieder Transistoren), je nachdem was die Transistorschaltung 
XY ausgelesen hat.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man müsste das mal mit einer GAAAANZ einfachen 4 Bit CPU demonstrieren. 
Wäre mal wieder eine sehr schöne Idee für einen Artikel.

MFG
Falk

Autor: ozo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Oliver Simmank (ollibass)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
cooles Applet.

Ich muss sagen früher hab ich die Zusammenhänge auch nicht verstanden. 
Es gab aber eine gute Vorlesung in meinem Studium - Rechnerarchitektur. 
Da hat der Prof angefangen beim Transistor, dann gezeigt wie man daraus 
ein Flip-Flops und Logikschaltungen baut (und, oder xor etc.). Der 
nächste Schritt war dann aus Logik-Grundelementen eine ALU und Speicher 
zu bauen. Und von da aus gings dann immer weiter, von der MIMA 
(Minimal-Maschine) bis zur DLX-Architektur. Da sind dann Sachen wie 
Pipeline und so interessant.
Ich denke das sind ein paar Stichworte zum zusammengoogeln.

Autor: Stephan M. (stephanm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frank schrieb:
> @ Stephan M.
> Verschone bitte die Welt mit Deinem gefährlichen Halbwissen! Was hat ein
> BIOS mit einem Bootloader zu tun? usw. usw.

Ein bisschen mehr Information oder ggf. eine Richtigstellung hätte der 
Sache sicherlich auch nicht geschadet.

Stephan

Autor: Sebastian Hepp (sebihepp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaub auch zu wissen, auf was er hinaus will. Das selbe Problem
hatte ich anfangs auch. Richtig gelernt habe ich das erst in der
Vorlesung Technische Informatik. Ich versuch mal kurz ein Beispiel
zu geben:

Ein Prozessor mit 4-Bit Datenbreite, welcher nur die Verknüpfung
AND, OR, NOT kann und 4 Register A, B, C und D besitzt.

Der Prozessor hat einen Programmspeicher, typischerweise einen Flash-
speicher. Das sind ganz viele FlipFlops, welche beim programmieren
entsprechend geschalten werden. Jetzt legen wir fest, dass immer
8 FlipFlops ein Befehl ergeben. 2 Bit für AND/OR/NOT, 2 Bit für das
Zielregister, 2 Bit für Quellregister 1 und 2 Bit für Quellregister 2.
Natürlich kann man damit nichts anfangen, da wir keine Daten laden
können. Aber es reicht um zu verdeutlichen, wie ein Prozessor schaltet.

Wir nehmen ganz viele 8er-Packungen-FlipFlops und schließen danach
einen Multiplexer an. Dann nehmen wir einen Zähler und schließen den
Takt an dessen Zähleingang. Der Ausgang des Zählers geht auf den
Multiplexer und bestimmt, welcher 8er-Packen-FlipFlops gewählt wird.
Damit haben wir schonmal ein Teil, welcher mit jedem Takt eine
Instruktion auswählt und diese weiter gibt.

Jetzt brauchen wir die Register. Ebenfalls 4 FlipFlops bilden diese.
Eines nennen wir A, eines B, ... Jedes Register hat 4 Ausgänge und
4 Eingänger für Daten, einen WriteEnable und einen Clock.
Geschrieben wird nur bei Clock und WriteEnable.

Die ALU besteht aus einem 4-Bit AND, 4-Bit OR und 4-Bit NOT. Die ALU
hat also 2 mal 4 Eingänge für die beiden Daten, 2 Eingänge für die
Auswahl der Operation und 4 Ausgänge. Die ersten 4 Dateneingänge werden
auf das AND, OR und NOT gelegt. Die zweiten ebenfalls. Der Ausgang jeder
Logik (AND/OR/NOT) wird an einen Multiplexer angeschlossen. Dieser
wählt durch die 2 Operationeingänge den entsprechenden Datensatz aus
und führt ihn auf den Ausgang.

Der Ausgang der ALU wird auf jeden Registereingang gelegt. Aber Write-
enable wird nicht direkt angeschlossen, sondern über ein Decoder, 
welcher
anhand 2 Zielregister-Bits des Programmspeichers den entsprechenden
einschaltet. Clock wird auf die Taktleitung gegelegt. Dann haben wir
noch 2 Multiplexer. Einen für jedes Quellregister. Jedes Register legt
seinen Ausgang einmal auf jeden dieser Multiplexer. Der eine Multiplexer
legt seinen Ausgang auf Eingang 1 der ALU, der Andere auf Eingang 2.
Multiplexer 1 nimmt zur Auswahl die 2 Bit für das Quellregister 1 aus
dem Programmspeicher, der zweite nimmt eben die für Quellregister 2.

Du musst nur noch nachlesen, was FlipFlops, Flashspeicher, Register,
Multiplexer, Decoder, AND-Gatter, OR-Gatter, NOT-Gatter sind.

Ich hoffe, dir wird dadurch klarer, wie ein Rechner aufgebaut ist.

Viele Grüße
Sebihepp

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Sebastian Hepp (sebihepp)

>Ich hoffe, dir wird dadurch klarer, wie ein Rechner aufgebaut ist.

Das bezweifle ich. Einfach mal wild was hinschreiben bringt hier GAR 
NICHTS. Didaktisch wertlos. Von inhaltlichen Fehlern mal abgesehen.

Nochmal, das ist ein sehr gutes Thema für einen Artikel. Den zu 
schreiben, so dass ihn auch die Zielgruppe gut verdauen kann, ist aber 
recht anspruchsvoll.

MFG
Falk

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das komische Java-Applet ist nicht sonderlich anschaulich.

In dem Artikel müsste man erstmal das Konzept eines Zustandsautomaten 
klären.
Voraussetzung dafür sind die Grundlagen der Digitaltechnik. Das ist dann 
aber fast schon Abiturniveau und drüber. Hmmmm.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ihr sollt doch nicht immer die Trolle überfüttern. Die leidenn hier 
schon genug an Übergewicht!!!

Autor: oldmax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
Falk hat recht, wenn er darauf hinweist, das die Funktion eines µC nicht 
mit wenigen Worten einigermaßen erklärbar ist. Schon gar nicht von der 
Seite der Elektronik. Sehr schnell fallen Begriffe wie Flipflop’s, RAM, 
PROM, Hex, Binär, jeder fast eine Wissenschaft für sich. Bestenfalls 
kann man sich einen einfachen Stapel mit Anweisungen vorstellen, den ein 
Mitarbeiter abarbeiten soll. Er kann lesen und einfachste Arbeiten 
ausführen.
Dieser Mitarbeiter  hat in seinem Zimmer einen Stapel Zettel:
1.Anweisung Gehe in die Scheune
2. Anweisung Nehme einen Spaten
3. Anweisung Gehe in den Garten
4. Anweisung Gehe zum 3. Beet
5. Anweisung merk dir die 9
6. Anweisung Stich den Spaten in den Boden
7. Anweisung Dreh den Spaten um
8. Anweisung Geh einen Schritt zurück
9. Anweisung Zieh eins von der gemerkten Zahl ab
10. Anweisung ist das Ergebnis 0
11. Anweisung Wenn nicht,wiederhole Schritt ab Schritt6
12. Anweisung Nimm den Spaten
13. Anweisung Gehe zur Scheune
14. Anweisung Stelle den Spaten ab
15. Anweisung Geh nach hause
16. Anweisung Warte auf den Morgen
17. Anweisung nimm den ersten Zettel ( Schritt 1)
Ziemlich langweilig und nicht hundertprozentig vergleichbar, aber um es 
deutlich zumachen, sollte es reichen. Wenn du diesen Text liest, siehst 
du auch nicht nur die Buchstaben, sondern reihst das dir beigebrachte 
Muster zu den Worten, die letztlich einen Sinn ergeben ( oder auch 
nicht). Ein Programm ist nichts anderes wie eine Arbeit bis ins letzte 
Detail zerlegt und zu einer Anweisungsliste abgelegt. Das ist der 
Programmspeicher (Stapel). Je nach Speicherausrüstung (Merkfähigkeit des 
MA) kann mehr oder weniger „gemerkt“ und „berechnet“ werden. So finden 
sich immer wieder die Anweisungen
LD Reg, 0xff        ; LDI ist der Befehlscode, der auf der Liste steht, 
FF der Wert im folgenden Byte
Andi Reg,0x55      ; ANDI ist eine Und-Verknüpfung mit Inhalt vom 
Register und dem Wert im folgenden Byte
STS Variable, Reg ; STS ist der Befehl, der das Erebnis aus Reg in eine 
Speicherzelle schreibt
Das ist Assembler, noch kein Format, was ein µC versteht. Es muß durch 
ein Programm erst zu einem binären Muster geformt werden, damit der 
Controller damit  umgehen kann. Nur ein binäres Muster läßt sich mit 
Spannungspegeln eindeutig beschreiben und entsprechend bearbeiten. Und 
jetzt kommen wir zu den Begriffen FlipFlop usw.
Gruß oldmax

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oldmax schrieb:

> Ziemlich langweilig und nicht hundertprozentig vergleichbar, aber
> um es deutlich zumachen, sollte es reichen.

Wobei mir persönlich es wichtig ist, ausdrücklich festzuhalten, dass 
sich die Befehle an einen µC auf einem Niveau befinden, das einige 
Zehnerpotenzen unter dem von dir genannten Beispiel liegt.

Der Befehl
> 2. Anweisung Nehme einen Spaten
zb ist bereits auf einem Schwierigkeitsniveau, dass eine komplette 
Programmierermanschaft auf Jahre hinaus beschäftigt, sie in einfachere 
µC-verständliche Einzelbefehle herunterzubrechen.

Die tatsächlichen µC Befehle spielen sich auf der Ebene ab: Zähle zu 
einer Zahl 1 dazu, vergleiche Zahl A mit Zahl B.


Ich erwähne das nur, weil bei Nichtprogrammierern oftmals die 
Vorstellung vorherrscht, dass zb ein Schachprogramm so aussieht:
int main()
{
  play( "chess" );
}

soweit sind wir noch lange nicht.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich empfehle hier dringend ein Buch zu rate zu ziehen. Dieses Thema 
beschäftigt ganze Vorlesungen und mit nur einem oder zwei Posts ist 
dieses Thema mit Sicherheit nicht erledigt. Man könnte genausogut 
fragen, woher unser Gehirn weiß, was es wann zu tun hat...ist ebenso 
leicht wie schwer wie diese Frage.

Autor: Thomas Burkhart (escamoteur)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das wohl beste Buch zu dem Thema:

http://www.amazon.de/Computer-Organization-Design-...

Gibts auch ne ältere deutsche Ausgabe. Da wird sehr schön erklärt wie 
ein prozessor funktioniert.

Vielleich noch ein Bild zu Deiner Frage woher der µC weiß was er machen 
soll.

Stell Dir mal folgende Befehle vor

1001
1101
1100

Nun stell Dir Siebe for, die genau entsprechende Öffnungen haben. Nun 
wird jeder Befel auf die Siebe geworfen. Nur bei einem davon fällt er 
durch und dort wird ein Befehl ausgelöst. Danach kommt der nächste 
Befehl dran.

Gruß
Tom

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die von Tom erwähnte Siebanordnung heißt übrigens "Befehlsdecoder" und 
ist im Prozessor "hartverdrahtet", d.h. Bestandteil der auf dem Silizium 
verewigten Struktur. Wenn der Mikrocontroller aus dem Resetzustand 
erwacht (z.B. nach dem Einschalten) holt er den Inhalt einer ganz 
bestimmten Speicherstelle des Programmspeichers; bei einem 
8-Bit-Prozessor wäre das ein Byte, und zwar ein sogenanntes Befehlsbyte. 
Dieses Byte wandert in den Befehlsdecoder und wird "gesiebt".

Je nachdem, in welchem Sieb der Befehl hängen bleibt, weiß der 
Controller dann, was er zu tun hat, und er weiß, wo im Programmspeicher 
der nächste Befehl abzuholen ist. Außerdem weiß er, wieviele Parameter 
er für den gerade dekodierten Befehl noch aus dem Programmspeicher holen 
muß (z.B. die Summanden bei einem Additionsbefehl).

Der Zugriff auf den Programmspeicher wird über einen Programmzähler 
(Program Counter) gesteuert, der vom Befehlsdecoder jeweils auf die 
Adresse des nächsten Befehlsbytes gesetzt wird. Dieser Zähler kann aber 
auch durch das ablaufende Programm verändert werden, z.B. für 
Entscheidungen oder Sprungbefehle.

Der Inhalt des Programmspeichers ist übrigens das, was Du über das 
.hex-File "eingefüllt" hast.

So, wer macht an diesem Punkt weiter?

Autor: oldmax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
Ich schrieb
>Der Befehl
> 2. Anweisung Nehme einen Spaten
und erhielt die Antwort

>zb ist bereits auf einem Schwierigkeitsniveau, dass eine komplette
>Programmierermanschaft auf Jahre hinaus beschäftigt, sie in einfachere
>µC-verständliche Einzelbefehle herunterzubrechen.
 Also, meine Frau sieht's so, wie du mit dem Beispiel Play("Chess")
" Der Garten müßte umgegraben werden" ....
Nach der Werbung von Mario Barth extrem kurz... allerdings bkomme ich 
den Rest des Gespräches auch schon nicht mehr mit, weil a: die Bürotür 
lautstark ins Schloß fiel (selten, man will ja mal wieder...) oder b: 
weil ich schon eifrig dabei bin.... bevor es dunkel wird.
Gruß oldmax

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.