Hallo,
eine Frage zum Verständnis,
was genau macht oder passiert mit dem AVR, wenn ich statt 8MHz Quarz
einen 25MHz einbaue?
Arbeitet die Do Schleife dann schneller?
oder ist es nur für den Timer vorgesehen?
Wann sollte ich einen kleineren und wann einen größeren Quarz nehmen?
Was entscheidet die optimale Größe des Quarz?
Danke im Voraus
Frank
Frank Neumann schrieb:> was genau macht oder passiert mit dem AVR, wenn ich statt 8MHz Quarz> einen 25MHz einbaue?
Er arbeitet schneller, unzuverlässig oder gar nicht (Außerhalb der
Spezifikation, zulässige Quarze siehe Datenblatt). Und ich vermute mal
er wird wärmer/verbraucht mehr Strom. Nicht empfehlenswert außer zum
Spaß/Experimentieren.
Frank Neumann schrieb:> Arbeitet die Do Schleife dann schneller?> oder ist es nur für den Timer vorgesehen?
Beides, wobei manche Timer auch alleine extern getaktet werden können.
Frank Neumann schrieb:> Wann sollte ich einen kleineren und wann einen größeren Quarz nehmen?> Was entscheidet die optimale Größe des Quarz?
Je nachdem, wie viel Platz Du auf der Platine hast.
Frank Neumann schrieb:> Hallo,>> eine Frage zum Verständnis,> was genau macht oder passiert mit dem AVR, wenn ich statt 8MHz Quarz> einen 25MHz einbaue?
da 25Mhz außerhalb der Kennwerte gemäß Datenblatt liegen hängt es vom
Zufall ab ob der Quarzoszillator vom AVR dann überhaupt noch schwingt.
Je kühler CMOS betrieben wird, desto höher ist die maximale
Betriebsfrequenz. Über 25MHz sollte man auf keinen Fall hinausgehen weil
dies schon jenseits der vom Hersteller vorgegebenen Grenze liegt. Wer
die maximal zuläßigen Betriebswerte des Herstellers willentlich
übersteigt macht das auf eigene Verantwortung und Gefahr. Auch besteht
bei manchen ICs und Bedingungen die Gefahr einer möglichen Überhitzung.
>> Arbeitet die Do Schleife dann schneller?> oder ist es nur für den Timer vorgesehen?
Bis auf den RC Watchdog Timer sind alle vom Takt abhängigen
Schaltungsteile von der Frequenz der Taktquelle proportional abhängig.
Also alle internen Zähler und Vorteiler und Synchronisations Logik.
>> Wann sollte ich einen kleineren und wann einen größeren Quarz nehmen?
Wenn Du physische Größe meinst, dann sind kleinere Quarze generell
robuster aber möglicherweise ungenauer. Deine Frage ist irreführend weil
man nicht weiß ob physische Größe oder Frequenz gemeint ist.
Quarze werden heutzutage in extrem kompakten Baugrößen gefertigt und
werden in veschiedensten Genauigkeitsklassen und Temperaturstabilität
gefertigt.
Die Beantwortung hängt auch stark von der Anwendung ab und läßt sich
ohne Kontext und Randbedingungen nicht gut beantworten.
> Was entscheidet die optimale Größe des Quarz?
Wenn Du Frequenz meinst:
Stromverbrauch. Je niedriger die Quarzfrequenz ist, desto geringer ist
die Stromaufnahme. Sonst hängt das stark von den Anforderungen der
Anwendung ab.
Baudraten für asynchrone Verständigung. Da der Baudratengenerator nur
Integer Nummern verarbeiten kann, sind spezielle Frequenzen besonders
geeignet um genaue konforme Baudraten wie 115200 Baud exakt zu erzeugen.
Z.b. Findet man in solchen Fällen die (komische) Frequenz 11.0592MHZ
oder 18.432MHz da sie sich genau teilen lassen und Null %
Baudratenfehler aufweisen.
Timing. Wer z.B. Zeitintervalle genau in us messen will, findet
Frequenzen wie 8 oder 16 MHz günstig weil der Vorteiler des Timers genau
auf 1us Periode herunter geteilt werden kann und so Zeitintervalle ohne
Runden zu müssen, genau erfasst werden können. Dafür kann man nicht alle
Baudraten fehlerfrei erzeugen. Ist also ein Kompromiss.
Ich rate Dir die einschlägigen Einführungen im Forum und sonst wo zu
studieren. Auch das Datenblatt und die vielen Application Notes können
viele Deiner Fragen mehr oder weniger gut beantworten.
Wenn Du wirklich ein totaler uC Einsteiger bist, dann wirst Du einige
Zeit brauchen die vielen dazu existierenden Informationen richtig zu
verdauen weil Vieles eigentlich nicht ohne Hintergrundwissen wirklich
verständlich ist. Der Fachjargon ist auch so eine Sache. Sieh Dir die
vielen Artikel hier im Forum an. Sonst frage halt. Der Stephanus hat
auch eine gute einführende Seite. Da wir Dich nicht kennen, ist es halt
schwierig Fragen auf Deinem Niveau für Dich verständlich zu beantworten.
Das wird hier oft vergessen. Ich hoffe mein Kommentar klingt nicht
herablassend. Das ist nicht meine Absicht.
>> Danke im Voraus> Frank
Ok, danke erstmal an Euch für die ausführliche Erklärung.
Ich habe vor, mir eine I/O Karte zu basteln, ich weiß es gibt fertige
und günstige im Netz aber der Sinn ist ein selber basteln und dabei die
uC Welt kennen lernen. Da es über die USB laufen soll, dachte ich mir,
ich nehme mir den AT90USB162 zur Hand, weil ich eine fertige
Grundschaltung im Netz gefunden habe.
Lt. dem Datenblatt darf ich max. 16MHz nehmen.
Aber selbst hier stellt sich die Frage, wann ein 8MHz und wann einen
16MHz ist einzusetzen?
Hätte das z.B Einfluss auf die Kommunikation zwischen der HW und dem PC?
Je höher desto schneller die Übertragung?
Frank Neumann schrieb:> Aber selbst hier stellt sich die Frage, wann ein 8MHz und wann einen> 16MHz ist einzusetzen?
In erster Linie wäge ich bei so etwas immer ab, wie schnell und genau
der µC für die entsprechende Anwendung sein muss. Als zweite Frage kommt
dann immer auf, wieviel Strom der µC verbrauchen darf in der
entsprechenden Anwendung. Das legt dann bei mir immer die Taktquelle und
Geschwindigkeit fest.
Frank Neumann schrieb:> Ok, danke erstmal an Euch für die ausführliche Erklärung.>> Ich habe vor, mir eine I/O Karte zu basteln, ich weiß es gibt fertige> und günstige im Netz aber der Sinn ist ein selber basteln und dabei die> uC Welt kennen lernen. Da es über die USB laufen soll, dachte ich mir,> ich nehme mir den AT90USB162 zur Hand, weil ich eine fertige> Grundschaltung im Netz gefunden habe.
Das hat nur Sinn wenn Dir die volllständige und korrekt funktionierende
Projekt HW und SW Dokumentation mit allen SW Werkzeugen zur Verfügung
steht die erlauben den Original Quellcode lauffähig herzustellen sowie
die HW zu testen. Auch so bedarf es einiger Erfahrung um so etwas
erfolgreich zum Laufen zu bringen. Wenn Du auf dem Gebiet noch keine
Erfahrung hast lass es besser bleiben. Ein USB Projekt ist nichts für
Anfänger. Auch die Beherrschung der SW Werkzeuge bedarf vieler
Erfahrung. Der geringste Fehler führt hier oft zu 100% Versagen.
>> Lt. dem Datenblatt darf ich max. 16MHz nehmen.
Dann mußt Du Dich daran halten.
> Aber selbst hier stellt sich die Frage, wann ein 8MHz und wann einen> 16MHz ist einzusetzen?
Darüber dürfte Dein Quell Code bzw. Die Dokus Aufschluß geben. Wenn der
uC mit 8 Mhz schnell genug ist und der Quell Code paßt, dann wird es
auch mit 8 Mhz funktionieren. Der USB Teil(Controller) hat seinen
eigenen internen Takt und ist vom uC Teil diesbezüglich unabhängig.
>> Hätte das z.B Einfluss auf die Kommunikation zwischen der HW und dem PC?
Ganz bestimmt. Da mußt Du Dich an die Original Design Randbedingungen
halten. Wenn das ein Bauprojekt ist, dann halte Dich an diese Angaben.
Willkürliche Abweichungen führen ohne große Sachkenntnis garantiert zu
Mißerfolg.
>> Je höher desto schneller die Übertragung?
Nicht unbedingt. Das gewählte USB Übertragungs Protokoll und die USB HW
bestimmt wie schnell es geht. Zur Steuerung von Real World IO wie z.B.
Relais spielt das überhaupt keine Rolle. Für USB muß der USB Engine Takt
genau eingehalten werden. Intern arbeitet USB oft mit 48Mhz um alle
Signale konform aufzubereiten.
Mein Rat ist: Solltest Du mit uC bei Null Anfangen, dann würdest Du es
Dir und allen Forumsmitstreitern leichter machen erst einmal mit Einfach
anzufangen, oder vielleicht mit Arduino anzufangen und Dich durch die
zahlreichen Beispiele durcharbeiten um mitzukriegen ob Dir das zusagt
und ein Gefühl für diese Art Technik bekommst. Außerdem hat Arduino eine
große User Community und Bibliotheken die schnelles Probieren erlauben
um sich ein Bild darüber machen zu können. Laß im Augenblick die Finger
von USB. Das ist ein schlafender Vulkan an Problemen wenn man sich nicht
auskennt. Sonst würdest Du ja auch nicht hier fragen.
Frank Neumann schrieb:> Ich habe vor, mir eine I/O Karte zu basteln, ich weiß es gibt fertige> und günstige im Netz aber der Sinn ist ein selber basteln und dabei die> uC Welt kennen lernen.
Der erste Schritt dazu ist, das Datenblatt und die AppNotes zu den
beteiligten Bauteilen zu lesen und zu verstehen. Dort ist dann auch die
Taktverteilung und die Auswirkungen auf Komponenten und Stromverbrauch
beschrieben.
> die uC Welt kennen lernen.
Kauf dir ein fertiges EVAL Board und mache daran deine ersten
Erfahrungen. Wenigstens weißt du dann, dass die Hardware prinzipiell
funktioniert und der Fehler in deiner Beschaltung oder der Software
ist. Dann kannst du da auch mal unterschiedliche Quarze einbauen oder
einen externen Takt von einem Quarzoszillator mit 25MHz einspeisen.
Sonst geht es dir wie dem Kollegen aus dem
Beitrag "Eagle Schaltplan - Verbesserungsvorschläge": du stößt schon bei den
simpelsten Fragen an "Probleme".
Frank Neumann schrieb:> Aber selbst hier stellt sich die Frage, wann ein 8MHz und wann einen> 16MHz ist einzusetzen?
Soweit ich das Datenblatt überflogen habe, gehen für USB 8 oder 16MHz.
Eine PLL macht daraus die benötigten 48MHz (*6 bzw. /2*6).
Frank Neumann schrieb:> Je höher desto schneller die Übertragung?
Nö.
Geschwindigkeit und Pollingrate sind im USB-Standard festgelegt.
Eine Pollingrate von 1ms bedeutet, daß sich nicht schneller als alle 1ms
die IOs setzen oder lesen lassen. Die maximal mögliche Ausgabefrequenz
beträgt also 500Hz.
Hast Du denn schon irgendeine Vorstellung, wie PC-seitig die Ansteuerung
erfolgen soll?
Frank Neumann schrieb:> Was entscheidet die optimale Größe des Quarz?
Du meinst wohl die Taktfrequenz.
Ich halte es generell für eine gute Idee, die Leistungsgrenzen nur dann
auszureizen, wenn man dafür einen wichtigen Grund hat. Potentiell ist
mit weniger Fehlfunktionen zu rechnen, wenn man unter dem Maximum
bleibt. Ungenutzte Rechenleistung durch unnötig hohe Takfrequenz halte
ich für Energieverschwendung. Sie ist für nichts gut.
By the way: Vergleiche mal Business Laptops (Arbeitsgeräte) der
500-1000€ Klasse mit gleich teuren Consumer Laptops von Saturn oder
Aldi. Du wirst sehen, dass die Business Geräte überwiegend langsamer
getaktet sind. Unterm Strich kann man mit den Business Geräten aber mehr
Arbeitsleistung bringen, weil sie zuverlässiger laufen. Man verplempert
weniger Zeit mit Fehlfunktionen.
Die 16 MHz gelten nur für 5V Betrieb. Es gibt im Datenblatt eine Kurve,
die für 3,3V irgendwo bei max. 8 MHz liegt.
PS. es gab mal eine Werbung für aktive Computerkühler mit Kältemaschine:
"Wenn Pinguine Computer hätten, würden sie schneller laufen. Die
Computer, nicht die Pinguine".
Höhere Taktfrequenzen bedeuten auch höhere Verlustleistung.
Frank Neumann schrieb:> Ich habe vor, mir eine I/O Karte zu basteln...> Je höher desto schneller die Übertragung?
Mein USB I/O Interface (http://stefanfrings.de/net_io/index.html) läuft
mit 7 MHz effektiv nicht langsamer als mit 20 MHz. Weniger habe ich
nicht ausprobiert.
Mein Ethernet I/O Interface (http://stefanfrings.de/net_io/index.html)
läuft mit 20MHz effektiv genau so schnell, als wie mit 32MHz.
In beiden Fällen ist die Schnittstelle zum PC das Nadelöhr, dass die
Geschwindigkeit dominiert.
Ich würde Dir empfehlen, zuerst mit der höchsten empfohlenen Taktrate
des µC zu beginnen. Wenn das Programm fertig ist, probierst du aus, wie
weit du runter gehen kannst.
Bei Controllern mit integriertem USB hast da meist nicht allzu viele
Wahlmöglichkeiten. Die 1€ STM32 Bluepill Boards
(http://stefanfrings.de/stm32/stm32f1.html#bluepill) wollen zum Beispiel
mit 48 oder 72 Mhz getaktet werden.
Das stimmt, wer den MC außerhalb der Spezifikation betreibt hat die
Verantwortung. Im Garten habe ich mehrere Anwendungen, die mit >30MHz
Takt gut klarkommen. Es entsteht allerdings auch keine Katastrophe, wenn
die SOLAR-Lampe (im Kombi mit Funk-/IR-Empfänger) dann mal versagen
sollte oder der Kombi-Sensor Unfug anzeigt.
Und bevor Fragen kommen: Ich verwende fertige Quarz-Oszillatoren.
Ist halt wie immer im Leben, die Verantwortung hat der der es dann
macht...
Ich bevorzuge niedere Frequenzen. zB 7.3238 MHz, da passt das UART.
Niedrige Frequenzen erlauben die CPU mit kleinerer Spannung
laufenzulassen. Ich bevorzuge zur Zeit 3.3V, hatte aber auch schon 3.0V.
Dies ist meist durch externe Komponenten gegeben, und ich Pegelwandler
vermeide.
Bei Stromsparanwendungen wuerde man allenfalls mit 2.7V oder weniger
laufen lassen, und den Quarz auf 3.84Mhz, 1.9MHz oder tiefer.
Quarze habe ich mal je 100 Stueck mit verschiedenen Frequenzen fuer
jeweils 20 Euro gekauft und die reichen immer noch.
Ja, kommt darauf an was Du erreichen willst. Zum Stromsparen ist nicht
nur die hohe Frequenz ein Thema, auch der Oszillator verkonsumiert schon
viel.
Mir ging es mehr um die Möglichkeit, dass (richtig gut) Übertakten geht.