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ß
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
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.
D. W. wrote:
> Aber AVRs kann man schon auf 20MHz laufen lassen.
Ja, die neueren (Mega48 oder 168 zB) bei 5V.
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....
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
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.
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
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
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?
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
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".
> 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
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.
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.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.