www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage Quarz Takt


Autor: Simon (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: 11833 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Nachteil heisst dicker, brauner Rauch.

Autor: Eckhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: D. W. (dave) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Simon K. (simon) Benutzerseite
Datum:

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

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

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht 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....

Autor: Simon (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Daniel V. (volte)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht 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....

Autor: Daniel V. (volte)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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".

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: G.A.S.T. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Norbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

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

Bewertung
0 lesenswert
nicht 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.

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.