Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage Quarz Takt


von Simon (Gast)


Lesenswert?

Hallo

Ich bin ein Anfänger in Sachen Mikrocontroller, und habe eine 
Verständnisfrage!
Es geht um Zeit und Takt des Mikrocontroller. Wäre nett wenn mir einer 
es verdeutlichen könnte!

Wenn ich einen Mikrocontroller nehme kann ich ein Quarz dran Schließen, 
der gibt ja den Takt, und mit jedem Takt wird doch ein Befehl 
abgearbeitet.  Es würden dann bei 4MHz, 4Mio. Takte abgearbeitet oder?

Dann wäre doch die Aussage je Höher der Quarz desto besser, gibt es auch 
Nachteile für einen höheren Quarz?
Wenn ich bei einer Übertragung 100us Bitzeiten habe und die flanken 
Auswerte, kann ich doch mit einem Größeren Quarz mehr Daten zwischen den 
Interrupts bearbeiten?

Lieben Gruß

von 11833 (Gast)


Lesenswert?

Der Nachteil heisst dicker, brauner Rauch.

von Eckhard (Gast)


Lesenswert?

Hallo,

mit einem schnelleren Takt kannst Du natürlich in der gleichen Zeit mehr 
erledigen. Die Nachteile sind höherere Stromaufnahme und eine gegen 
störungen empfindlichere Schaltung. Bei 4 MHz ist da aber noch Luft nach 
ober ohne das Du Dir graue Haare wachsen lassen mußt.

Eckhard

von D. W. (dave) Benutzerseite


Lesenswert?

Naja, kommt ganz auf den Mikrocontroller an.

Das mit 1Takt/1Befehl trifft z.B. auf viele Befehle der 
AVR-Mikrocontroller zu. Bei anderen ist dann schon mal nen Teiler drin, 
d.h. 4Takte/1Befehl.

Aber AVRs kann man schon auf 20MHz laufen lassen.

von Simon K. (simon) Benutzerseite


Lesenswert?

D. W. wrote:
> Aber AVRs kann man schon auf 20MHz laufen lassen.

Ja, die neueren (Mega48 oder 168 zB) bei 5V.

von Niels H. (monarch35)


Lesenswert?

Simon wrote:
> Wenn ich einen Mikrocontroller nehme kann ich ein Quarz dran Schließen,
> der gibt ja den Takt, und mit jedem Takt wird doch ein Befehl
> abgearbeitet.  Es würden dann bei 4MHz, 4Mio. Takte abgearbeitet oder?

Nicht ganz, denn die Anzahl der Befehle, die tatsächlich nur einen 
Systemtakt benötigen, ist nichtmal die hälfte aller Befehle des ATmega. 
Aber im Prinzip hast du recht.

> Dann wäre doch die Aussage je Höher der Quarz desto besser, gibt es auch
> Nachteile für einen höheren Quarz?

Ja, je Hochfrequenter man arbeitet, desto mehr Strom braucht das System 
(zumeist durch das häufigere be- und entladen der Feldeffekttransistoren 
mit Ladungsträger). Mit der Stromaufnahme steigt dann meistens die 
Wärmeentwicklung, die man u.U. dann ableiten muss.

Ein weiterer Nachteil sind die in der HF-Technik bekannten Effekte, die 
mit steigender Frequenz an Ausprägung gewinnen und häufig nicht 
gewünscht sind. (Übersprecher" von Signalleitungen, Flankensteilheit 
usw....)

> Wenn ich bei einer Übertragung 100us Bitzeiten habe und die flanken
> Auswerte, kann ich doch mit einem Größeren Quarz mehr Daten zwischen den
> Interrupts bearbeiten?

Prinzipiell ja. Praktisch ist das System aber nicht nach oben offen....

von Simon (Gast)


Lesenswert?

HI

Danke allen für ihre Antworten,

Habe aber noch 2 Fragen, zu

 Niels Hüsken wrote:
>..... zumeist durch das häufigere be- und entladen der Feldeffekttransistoren
>mit Ladungsträger). ....

Ab wann sollte man den Mikrocontroller kühlen, gibt es da ne grenze MHz 
oder erst wenn er richtig Warm wird?

und kann mir einer sagen was die 2 Kondensatoren, die zu dem Quarz 
geschaltet werden, bewirken? Oder was für ein zweck haben!

LG

von Niels H. (monarch35)


Lesenswert?

Simon wrote:
> HI
>
> Danke allen für ihre Antworten,
>
> Habe aber noch 2 Fragen, zu
>
>  Niels Hüsken wrote:
>>..... zumeist durch das häufigere be- und entladen der Feldeffekttransistoren
>>mit Ladungsträger). ....
>
> Ab wann sollte man den Mikrocontroller kühlen, gibt es da ne grenze MHz
> oder erst wenn er richtig Warm wird?

Grundsätzlich gibt der Hersteller vor, ab wann ein Controller wie 
gekühlt werden muss. Bei den Avr Megas ist keine Kühlung vorgesehen. Bei 
maximaler Taktung braucht der Kontroller noch keine Kühlung.

Nicht, das wir uns falsch verstehen: die maximale Taktung eines 
Controllers oder generell einer CPU ist nicht von der maximalen 
Temperaturbelastbarkeit bzw Kühlung des Systems abhängig. Die Kühlung 
spielt da eigentlich eher eine untergeordnete Rolle.


> und kann mir einer sagen was die 2 Kondensatoren, die zu dem Quarz
> geschaltet werden, bewirken? Oder was für ein zweck haben!

Das sind Ausgleichskondensatoren, die die kapazitive Wirkweise der Chip 
internen Beschaltung ausgleichen soll.

von Daniel V. (volte)


Lesenswert?

Niels Hüsken wrote:
> Das sind Ausgleichskondensatoren, die die kapazitive Wirkweise der Chip
> internen Beschaltung ausgleichen soll.

Aber warum wird eine kapazitive Wirkungsweise mit Kapazität 
ausgeglichen? Ich denke jetzt nur an Kompensation.... Oder ist hier 
wahrscheinlich etwas anderes gemeint?
MFG

von Niels H. (monarch35)


Lesenswert?

Sorry, bin kein Lehrer und eigne mich dafür auch viel zu wenig. Hier 
steht es besser beschrieben, als ich es je beschreiben könnte:

http://www.s-t-e.de/index.html?http%3A//www.s-t-e.de/content/Tables/Tables_06.html

von Daniel V. (volte)


Lesenswert?

Aha, danke. Denke mal da ist nun die gesamte Platine gemeint, und die 
Last Cs werden nun genommen, damit der Quarz nicht induktiv oder 
kapazitiv wirken beginnt.... Hatte mich nur wegen

"die kapazitive Wirkweise der Chip internen Beschaltung"

etwas gewundert, da die ja meines Erachtens nicht so relevant sein 
kann...

Oder etwa doch?

von Axel (Gast)


Lesenswert?

Zum thema Takt hätt ich aber auch mal eine Frage:
Wie arbeitet eigentlich ein Mikrocontroller...
es heißt 1Takt=1Befehl.
Was macht er nun wenn eine If-Schleife kommt aber die Bedingung nicht 
erfüllt ist. Er springt weiter, brauch er für die erkennung ebenfalls 
ein Takt, oder könnt ich ruhig 10 If-Schleifen hintereinander 
hängen(letzte soll nur true geben) und er ließt mit einem Takt nur die 
die erfüllt ist aus?

MfG Axel

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Und Du musstest für Deine Frage tatsächlich einen seit über einem Jahr 
toten Thread reaktivieren? Und das, wo Deine Frage mit dem Thema des 
Threads so rein gar nichts zu tun hat?


Eine "if-schleife" ist ein falsch benanntes Konstrukt einer Hochsprache, 
das in Maschinenanweisungen übersetzt wird.
Und die Überprüfung einer Bedingung benötigt immer Zeit, egal, ob die 
Bedingung nun zutrifft oder nicht.

Sieh Dir den Assemblercode an, den Dein Compiler aus einem if-Statement 
erzeugt, je nach Komplexität der ausgewerteten Bedingung kann das ganz 
schön viel Code werden.

Das hängt z.B. vom Datentyp von Variablen ab, die in der Bedingung 
ausgewertet werden.

  uint8_t b;
  int i;
  float f;

  if (b == 1)
  ...

  if (1 == 1)
  ...

  if (f == 1.0)
  ...

Bereits die ersten beiden Varianten können unterschiedliche aufwendig 
werden, wenn z.B. auf einem AVR ein 16-Bit-Wert nicht mit einem 
Maschinenbefehl verarbeitet werden kann (da das eine 8-Bit-Architektur 
ist).
Das dritte Beispiel ist dagegen richtig aufwendig, da hier 
floating-Point-Arithmetik verwendet wird.

Die Anzahl der Taktzyklen, die die Ausführung von Maschinenanweisungen 
benötigt, ist im Datenblatt/Programmierhandbuch des jeweiligen 
Controllers beschrieben, die Verallgemeinerung "1Takt=1Befehl" ist im 
allgemeinen falsch.

Übrigens gibt es keine "if-schleifen".

von Olaf (Gast)


Lesenswert?

> es heißt 1Takt=1Befehl.

Noe, das heisst es nicht. Es gibt Befehle die sind so schnell,
andere wiederum sind langsamer. Im Datenblatt eines Controllers
steht genau drin welcher Befehl wieviele Takte braucht.

> ein Takt, oder könnt ich ruhig 10 If-Schleifen hintereinander

Wir wissen nicht von welchem Prozessor du sprichst. Ich kenne
keinen Prozessor der einen IF Befehl kennt. Ich kenne nur Hochsprachen
mit solchen Befehlen. Dort wird dieser Befehl wohlmoeglich in mehre
Maschienenbefehle umgesetzt.
Und gerade ein Sprungbefehl bei einem Prozessor gehoert normalerweise zu 
den Befehlen die gerne mehr Takte brauchen, unter Umstaenden sogar 
unterschiedlich viele, wenn der Sprung an Bedingungen geknuepft ist. 
Oder auch abhaengig von der Sprungweite. (relativ, absolut, 16, 24 oder 
32bit Adressierung)

Olaf

von Klaus W. (mfgkw)


Lesenswert?

Erstens wird ein if in aller Regel zu mehreren Maschinenbefehlen
kompiliert, die jeweils mindestens einen Takt brauchen, und
zweitens werden bei langen if-else if...-Ketten alle nacheinander
abgeklappert, bis eine erfüllt ist.
Das ist eben der Vorteil eines switch, bei dem der Compiler
besseren Code ausspucken kann, dessen Laufzeit unabhängig
von der Position des Sprungziels ist.

> es heißt 1Takt=1Befehl.
Das ist so nicht richtig, siehe oben.

von G.A.S.T. (Gast)


Lesenswert?

in Kürze:
1Takt=1Befehl: Das hängt allgemein vom µC ab, aber mit "Befehl" ist hier 
ohnehin nich ein Befehl in C o.ä. gemeint, sondern 1 Befehl im Binären, 
also sprich: Addiere a zu b, zum Beispiel. Hat man sowas in C wie 
strval, also einen Befehl, so ist das eine Abarbeitung vieler einzelner 
Schritte auf Prozessor/Hardwareebene. Das braucht dann mehrere Takte.

________________________________________________________________
Rechtschreibfehler wurden mit Liebe eingebaut.

von Norbert (Gast)


Lesenswert?

Schön das du ihm die im Jahre 2008 gestellte Frage beantwortest!

Der rote Text bezüglich alter Threads ist nicht in deiner Muttersprache 
geschrieben?

von Karl H. (kbuchegg)


Lesenswert?

Ich finde es lieb von dir, dass du dich des Themas annimmst.
Aber bitte nimm auch zur Kentniss, dass die Urfrage 2008 gestellt wurde, 
die Ergänzung 2010.
Das alles ist lange her.
Und ehrlich gesagt, frage ich mich, auf welch krausem Weg du den Thread 
wieder ausgegraben hast. So alte Threads machen im Regelfall nur eines: 
sie verbrauchen Platz in der Datenbank auf dem Server.

Bitte lass so alte Kamellen einfach ruhen. Sie haben es sich verdient.

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.